【轉】解決smtplib發送多人郵件沒有展示收件人的問題


 

#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.utils import parseaddr
from email.utils import formataddr
from email.header import Header
 
 
def __format_addr__(addr):
    # 解析郵件地址,以保證郵有別名可以顯示
    alias_name, addr = parseaddr(addr)
    # 防止中文問題,進行轉碼處理,並格式化為str返回
    return formataddr((Header(alias_name,charset="utf-8").encode(),
                       addr.encode("uft-8") if isinstance(addr, unicode) else addr))
 
 
def send_email_to(fromAdd, toAdd, subject, html_text, filename=None):
 
    SERVER = 'smtp.***.com'
    USER = '******'
    PASSWD = '***'
 
    strFrom = __format_addr(fromAdd)
 
    strTo = list()
    # 原來是一個純郵箱的list,現在如果是一個["jayzhen<jayzhen@jz.com>"]的list給他格式化
    try:
        for a in toAdd:
            strTo.append(__format_addr(a))
    except Exception as e:
        # 沒有對a和toadd進行type判斷,出錯就直接還原
        strTo = toAdd
 
    msgRoot = MIMEMultipart('related')
    msgRoot.preamble = 'This is a multi-part message in MIME format.'
 
    msgAlternative = MIMEMultipart('alternative')
    msgRoot.attach(msgAlternative)
 
    # 郵件對象
    msgText = MIMEText(html_text, 'html', 'utf-8')
    msgRoot['Subject'] = Header(subject)   # 這是郵件的主題,通過Header來標准化
    msgRoot['From'] = strFrom       # 發件人也是被格式化過的
    msgRoot['to'] = ','.join(strTo)   # 這個一定要是一個str,不然會報錯“AttributeError: 'list' object has no attribute 'lstrip'”
    msgAlternative.attach(msgText)
 
    smtp = smtplib.SMTP(SERVER, 25)
    smtp.set_debuglevel(0)
    # smtp.connect(SERVER)
    smtp.login(USER, PASSWD)
    # 這里要注意了,這里的fromadd和toAdd和msgRoot['From'] msgRoot['to']的區別
    smtp.sendmail(fromAdd, toAdd, msgRoot.as_string())
    smtp.quit()

 if __name__ == "__main__":
    fromAdd = 'yann126@126.com'
    toAdd = ['yann126@126.com', 'yann_1@aliyun.com']
    subject = "hi"
    html_text = "<h1>hi</h1>"
    send_mail_to(fromAdd, toAdd, subject, html_text)

原文:https://blog.csdn.net/u013948858/article/details/82903977


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM