python基于SMTP協(xié)議發(fā)送郵件
更新時間:2019年05月31日 08:33:28 作者:CarolLXW
這篇文章主要為大家詳細介紹了python基于SMTP協(xié)議發(fā)送郵件,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了python基于SMTP協(xié)議發(fā)送郵件的具體代碼,供大家參考,具體內(nèi)容如下
#!/usr/bin/env python # -*- coding: utf-8 -*- """ @Time : 2018/5/31 @Author : LiuXueWen @Site : @File : sendEmail.py @Software: PyCharm @Description: 使用SMTP協(xié)議發(fā)送郵件,支持同時發(fā)送給多個地址,支持同時發(fā)送文本信息、超文本信息和多附件 """ import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.header import Header import os class properties(): # 設置服務器, "smtp.xx.com" mail_host = "smtp.qq.com" # 用戶名 mail_user = "@qq.com" # 口令 mail_pass = "" # smtp服務器端口,每個服務商提供的郵件服務端口可能不一致,465是騰訊的端口 mail_port = 465 # 發(fā)送郵件的地址 sender = "@vip.qq.com" # 接收郵件,可設置為你的QQ郵箱或者其他郵箱,list類型,可同時填寫多個地址并以,分割 receivers = "@qq.com","@qq.com" # 郵件發(fā)送的內(nèi)容 messageText = "測試使用\n" # 郵件發(fā)送的超文本內(nèi)容 messageHTML = """ <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>test</title> </head> <body> <img src="http://a.hiphotos.baidu.com/image/pic/item/730e0cf3d7ca7bcb6a172486b2096b63f624a82f.jpg" alt="test" width="200px" height="200px"> </body> </html> """ # 發(fā)送郵件方的別名展示(類似昵稱),為空則顯示發(fā)件方地址 messageFromHeader = "" # 接收郵件方的展示信息 messageToHeader = "test python" # 郵件主題 messageSubject = "ceshiceshi123" # 需要發(fā)送的附件的詳細地址,支持多附件發(fā)送,附件之間以,分割 filePaths = '1.txt','2.txt','3.txt' def sendMail(): # 下面所有參數(shù)均可通過配置文件配置獲取 """ :param mail_host: 設置服務器,"smtp.xx.com" :param mail_user: 用戶名 :param mail_pass: 口令 :param sender: 發(fā)送郵件的地址 :param receivers: 接收郵件,可設置為你的QQ郵箱或者其他郵箱 :param messageText: 郵件發(fā)送的文本內(nèi)容 :param messageHTML: 郵件發(fā)送的超文本內(nèi)容 :param messageFromHeader: 發(fā)送郵件方的別名展示(類似昵稱) :param messageToHeader: 接收郵件方的展示信息 :param messageSubject: 郵件主題 :param filePath: 附件詳細地址 :return: """ # 需要獲取的參數(shù)列 mail_host = properties.mail_host mail_user = properties.mail_user mail_pass = properties.mail_pass mail_port = properties.mail_port sender = properties.sender receivers = properties.receivers messageText = properties.messageText messageHTML = properties.messageHTML messageFromHeader = properties.messageFromHeader # 如果發(fā)件人昵稱未填寫則直接使用發(fā)件人地址作為名稱 if messageFromHeader == "": messageFromHeader = sender messageToHeader = properties.messageToHeader messageSubject = properties.messageSubject filePaths = properties.filePaths # 郵件類型為"multipart/alternative"的郵件包括純文本正文(text / plain)和超文本正文(text / html)。 # 郵件類型為"multipart/related"的郵件正文中包括圖片,聲音等內(nèi)嵌資源。 # 郵件類型為"multipart/mixed"的郵件包含附件。向上兼容,如果一個郵件有純文本正文,超文本正文,內(nèi)嵌資源,附件,則選擇mixed類型。 message = MIMEMultipart('mixed') # 郵件顯示信息內(nèi)容 # 發(fā)送郵件方的頭部展示信息 message['From'] = Header(messageFromHeader, 'utf-8') # 接收郵件方的展示信息 message['To'] = Header(messageToHeader, 'utf-8') # 郵件主題 message['Subject'] = Header(messageSubject, 'utf-8') try: # 發(fā)送郵件附件,支持多附件發(fā)送 for filePath in filePaths: messageFile = open(filePath, 'rb').read() message_file = MIMEText(messageFile, 'base64', 'utf-8') message["Content-Type"] = 'application/octet-stream' # 目前發(fā)送附件不能使用message_file["Content-Disposition"] = 'attachment; filename="aaa.txt"'方式發(fā)送信息 message_file.add_header('Content-Disposition', 'attachment', filename=os.path.basename(filePath)) # 附件內(nèi)容 message.attach(message_file) except Exception as e: print "附件發(fā)送失敗:" + str(e) # 一共三個參數(shù),第一個為發(fā)送文本信息,第二個發(fā)送類型,第三個發(fā)送信息的編碼。如果想要發(fā)送html類型的信息,僅需要修改第二個參數(shù)'plain'為'html'即可 # 文本信息,使用‘plain'屬性不能正常顯示 message_text = MIMEText(messageText, 'html', 'utf-8') message.attach(message_text) # 超文本信息 message_html = MIMEText(messageHTML, 'html', 'utf-8') message.attach(message_html) try: # 因為現(xiàn)在很多服務商做了安全驗證,所有在發(fā)送郵件的時候需要把原來的smtplib.SMTP()改成現(xiàn)在的smtplib.SMTP_SSL()方式 smtpObj = smtplib.SMTP_SSL() # 鏈接郵件服務器 smtpObj.connect(mail_host, mail_port) # 登錄郵件系統(tǒng) smtpObj.login(mail_user, mail_pass) # 發(fā)送郵件信息 smtpObj.sendmail(sender,receivers,message.as_string()) print "郵件發(fā)送成功" except Exception as e: print("郵件發(fā)送失敗,錯誤信息:" + str(e)) if __name__ == '__main__': sendMail()
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
- python使用smtplib模塊發(fā)送郵件
- Python SMTP配置參數(shù)并發(fā)送郵件
- Python基于smtplib協(xié)議實現(xiàn)發(fā)送郵件
- 基于python SMTP實現(xiàn)自動發(fā)送郵件教程解析
- Python基于smtplib模塊發(fā)送郵件代碼實例
- python3.6使用SMTP協(xié)議發(fā)送郵件
- Python使用QQ郵箱發(fā)送郵件報錯smtplib.SMTPAuthenticationError
- python3實現(xiàn)SMTP發(fā)送郵件詳細教程
- python3實現(xiàn)163郵箱SMTP發(fā)送郵件
- python3使用smtplib實現(xiàn)發(fā)送郵件功能
- Python基于SMTP發(fā)送郵件的方法
相關文章
python實現(xiàn)單目標、多目標、多尺度、自定義特征的KCF跟蹤算法(實例代碼)
這篇文章主要介紹了python實現(xiàn)單目標、多目標、多尺度、自定義特征的KCF跟蹤算法,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2020-01-01Python安裝Numpy和matplotlib的方法(推薦)
下面小編就為大家?guī)硪黄狿ython安裝Numpy和matplotlib的方法(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-11-11Pytorch中的variable, tensor與numpy相互轉化的方法
這篇文章主要介紹了Pytorch中的variable, tensor與numpy相互轉化的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-10-10使用Python解析JSON數(shù)據(jù)的基本方法
這篇文章主要介紹了使用Python解析JSON數(shù)據(jù)的基本方法,是Python入門學習中的基礎知識,需要的朋友可以參考下2015-10-10Python實現(xiàn)遺傳算法(二進制編碼)求函數(shù)最優(yōu)值方式
今天小編就為大家分享一篇Python實現(xiàn)遺傳算法(二進制編碼)求函數(shù)最優(yōu)值方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02