Python實現郵件的批量發送


Python實現郵件的批量發送

1 發送文本信息

'''加密發送文本郵件'''
def sendEmail(from_addr,password,to_addr,smtp_server):
    try:
        msg = MIMEText('你好,來自信息化工程所的問候...', 'plain', 'utf-8') # 文本郵件
        # msg = MIMEText('<html><body><h1>你好</h1>' + '<p>send by <a href="http://www.python.org">信息化工程所
</a>...</p>
' +'</body></html>', 'html', 'utf-8') # 網頁文件 msg['From'] = _format_addr('信息化工程所 <%s>' % from_addr) msg['To'] = _format_addr('收件人 <%s>' % to_addr) msg['Subject'] = Header('郵件的主題:問候', 'utf-8').encode() server = smtplib.SMTP(smtp_server, 25) server.starttls() # 調用starttls()方法,就創建了安全連接 # server.set_debuglevel(1) # 記錄詳細信息 server.login(from_addr, password) # 登錄郵箱服務器 server.sendmail(from_addr, [to_addr], msg.as_string()) # 發送信息 server.quit() print("加密后郵件發送成功!") except Exception as e: print("發送失敗:" + e)

2 發送帶圖片附件的郵件

'''發送帶圖片附件的郵件'''
def sendFileEmail(from_addr,password,to_addr,smtp_server):
    try:
        msg =  MIMEMultipart()
        msg['From'] = _format_addr('信息化工程所 <%s>' % from_addr)
        msg['To'] = _format_addr('收件人 <%s>' % to_addr)
        msg['Subject'] = Header('郵件的主題:問候', 'utf-8').encode()
        # 郵件正文是MIMEText:
        msg.attach(MIMEText('send with file...', 'plain', 'utf-8'))
        # msg.attach(MIMEText('<html><body><h1>你好</h1>' + '<p>send by <img src=cid:0"></p>' +'</body></html>', 'html', 'utf-8')) # 網頁文件


        # 添加附件就是加上一個MIMEBase,從本地讀取一個圖片:
        with open(r'./file/圖片.png', 'rb') as f:
            mime = MIMEBase('image', 'png', filename='圖片.png') # 設置附件的MIME和文件名,這里是png類型:
            mime.add_header('Content-Disposition', 'attachment',filename=('gbk', '', '圖片.png')) # 加上必要的頭信息,解決中文附件名亂碼
            mime.add_header('Content-ID', '<0>')
            mime.add_header('X-Attachment-Id', '0')
            mime.set_payload(f.read())  # 把附件的內容讀進來:
            encoders.encode_base64(mime) # 用Base64編碼:
            msg.attach(mime) # 添加到MIMEMultipart:

        server = smtplib.SMTP(smtp_server, 25)
        # server.set_debuglevel(1) # 記錄詳細信息
        server.login(from_addr, password) # 登錄郵箱服務器
        server.sendmail(from_addr, to_addr, msg.as_string()) # 發送信息
        server.quit()
        print("帶圖片郵件發送成功!")
    except Exception as e:
        print("發送失敗:" + e)

3 發送帶圖片附件的郵件

'''發送帶圖片附件的郵件'''
def sendFilesEmail(from_addr,password,to_addr,smtp_server):
    try:
        msg =  MIMEMultipart()
        msg['From'] = _format_addr('信息化工程所 <%s>' % from_addr)
        msg['To'] = _format_addr('收件人 <%s>' % to_addr)
        msg['Subject'] = Header('郵件的主題:問候', 'utf-8').encode()
        # 郵件正文是MIMEText:
        msg.attach(MIMEText('發送多附件郵件...', 'plain', 'utf-8'))

        #---這是附件部分---
        #xlsx類型附件
        part = MIMEApplication(open(r'./file/foo.xlsx','rb').read())
        part.add_header('Content-Disposition', 'attachment', filename="foo.xlsx")
        msg.attach(part)

        #jpg類型附件
        part = MIMEApplication(open(r'./file/圖片.png','rb').read())
        part.add_header('Content-Disposition', 'attachment', filename=('gbk', '', '圖片.png'))
        msg.attach(part)

        #pdf類型附件
        part = MIMEApplication(open(r'./file/foo.pdf','rb').read())
        part.add_header('Content-Disposition', 'attachment', filename="foo.pdf")
        msg.attach(part)

        # #mp3類型附件
        # part = MIMEApplication(open('foo.mp3','rb').read())
        # part.add_header('Content-Disposition', 'attachment', filename="foo.mp3")
        # msg.attach(part)

        server = smtplib.SMTP(smtp_server, 25,timeout=30)
        # server.set_debuglevel(1) # 記錄詳細信息
        server.login(from_addr, password) # 登錄郵箱服務器
        server.sendmail(from_addr, to_addr, msg.as_string()) # 發送信息
        server.quit()
        print("帶圖片郵件發送成功!")
    except Exception as e:
        print("發送失敗:" + e)

4 完整代碼

from email import encoders
from email.header import Header
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email.mime.application import MIMEApplication
from email.utils import parseaddr, formataddr

import smtplib

def _format_addr(s):
    name, addr = parseaddr(s)
    return formataddr((Header(name, 'utf-8').encode(), addr))

'''加密發送文本郵件'''
def sendEmail(from_addr,password,to_addr,smtp_server):
    try:
        msg = MIMEText('你好,來自信息化工程所的問候...', 'plain', 'utf-8') # 文本郵件
        # msg = MIMEText('<html><body><h1>你好</h1>' + '<p>send by <a href="http://www.python.org">
信息化工程所</a>...</p>
' +'</body></html>', 'html', 'utf-8') # 網頁文件 msg['From'] = _format_addr('信息化工程所 <%s>' % from_addr) msg['To'] = _format_addr('收件人 <%s>' % to_addr) msg['Subject'] = Header('郵件的主題:問候', 'utf-8').encode() server = smtplib.SMTP(smtp_server, 25) server.starttls() # 調用starttls()方法,就創建了安全連接 # server.set_debuglevel(1) # 記錄詳細信息 server.login(from_addr, password) # 登錄郵箱服務器 server.sendmail(from_addr, [to_addr], msg.as_string()) # 發送信息 server.quit() print("加密后郵件發送成功!") except Exception as e: print("發送失敗:" + e) '''發送帶圖片附件的郵件''' def sendFileEmail(from_addr,password,to_addr,smtp_server): try: msg = MIMEMultipart() msg['From'] = _format_addr('信息化工程所 <%s>' % from_addr) msg['To'] = _format_addr('收件人 <%s>' % to_addr) msg['Subject'] = Header('郵件的主題:問候', 'utf-8').encode() # 郵件正文是MIMEText: msg.attach(MIMEText('send with file...', 'plain', 'utf-8')) # msg.attach(MIMEText('<html><body><h1>你好</h1>' + '<p>send by <img src=cid:0"></p>' +'</body></html>', 'html', 'utf-8')) # 網頁文件 # 添加附件就是加上一個MIMEBase,從本地讀取一個圖片: with open(r'./file/圖片.png', 'rb') as f: mime = MIMEBase('image', 'png', filename='圖片.png') # 設置附件的MIME和文件名,這里是png類型: mime.add_header('Content-Disposition', 'attachment',filename=('gbk', '', '圖片.png')) # 加上必要的頭信息,解決中文附件名亂碼 mime.add_header('Content-ID', '<0>') mime.add_header('X-Attachment-Id', '0') mime.set_payload(f.read()) # 把附件的內容讀進來: encoders.encode_base64(mime) # 用Base64編碼: msg.attach(mime) # 添加到MIMEMultipart: server = smtplib.SMTP(smtp_server, 25) # server.set_debuglevel(1) # 記錄詳細信息 server.login(from_addr, password) # 登錄郵箱服務器 server.sendmail(from_addr, to_addr, msg.as_string()) # 發送信息 server.quit() print("帶圖片郵件發送成功!") except Exception as e: print("發送失敗:" + e) '''發送帶圖片附件的郵件''' def sendFilesEmail(from_addr,password,to_addr,smtp_server): try: msg = MIMEMultipart() msg['From'] = _format_addr('信息化工程所 <%s>' % from_addr) msg['To'] = _format_addr('收件人 <%s>' % to_addr) msg['Subject'] = Header('郵件的主題:問候', 'utf-8').encode() # 郵件正文是MIMEText: msg.attach(MIMEText('發送多附件郵件...', 'plain', 'utf-8')) #---這是附件部分--- #xlsx類型附件 part = MIMEApplication(open(r'./file/foo.xlsx','rb').read()) part.add_header('Content-Disposition', 'attachment', filename="foo.xlsx") msg.attach(part) #jpg類型附件 part = MIMEApplication(open(r'./file/圖片.png','rb').read()) part.add_header('Content-Disposition', 'attachment', filename=('gbk', '', '圖片.png')) msg.attach(part) #pdf類型附件 part = MIMEApplication(open(r'./file/foo.pdf','rb').read()) part.add_header('Content-Disposition', 'attachment', filename="foo.pdf") msg.attach(part) # #mp3類型附件 # part = MIMEApplication(open('foo.mp3','rb').read()) # part.add_header('Content-Disposition', 'attachment', filename="foo.mp3") # msg.attach(part) server = smtplib.SMTP(smtp_server, 25,timeout=30) # server.set_debuglevel(1) # 記錄詳細信息 server.login(from_addr, password) # 登錄郵箱服務器 server.sendmail(from_addr, to_addr, msg.as_string()) # 發送信息 server.quit() print("帶圖片郵件發送成功!") except Exception as e: print("發送失敗:" + e) if __name__ == '__main__': from_addr = 'webter@tccxfw.com' # 郵箱登錄用戶名 password = 'TCC123' # 登錄密碼 to_addr = ['1943840362463@qq.com','jason1423@vip.qq.com','jason14449905@126.com' ] # 發送對象地址,可以多個郵箱 smtp_server='172.16.254.46' # 服務器地址,默認端口號25 sendEmail(from_addr,password,to_addr,smtp_server)

 


免責聲明!

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



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