发送邮件_使用 Python 发送电子邮件
在實際運用中,我們可能需要通過電子郵件告訴我們 Python 運行的結果的是否與預期的一致。現(xiàn)在我們就來看一下,怎么通過 Python 發(fā)送郵件。
這個示例中我們需要用到的第三方庫有:
?smtplib?email.mime.text 里面的 MIMEText?email.header 里面的 Header
* 如果沒有對應的庫,需要使用 pip install 進行安裝
代碼
import smtplibfrom email.mime.text import MIMETextfrom email.header import Headersubject = "Python E-Mail Test"sender = ""to_receiver = [""]cc_receiver = [""]receiver = to_receiver + cc_receivermessage = MIMEText("Hi,\n\nThis is Python Challenge test email, please ignore it. \n\nRegards,\nAaron" , "plain", "UTF-8")message["Subject"] = Header(subject, "UTF-8")message["From"] = sendermessage['To'] = ";".join(to_receiver)message["Cc"] = ";".join(cc_receiver)try: smtpObj = smtplib.SMTP("") smtpObj.sendmail(sender, receiver, message.as_string()) print("Email sent successfully")except smtplib.SMTPException: print("Error")代碼說明
使用?import?和?from ... import ...?導入第三方庫
import smtplibfrom email.mime.text import MIMETextfrom email.header import Header通過變量指定郵件主題,收件人等信息,其中 subject 是郵件的主題;sender 是發(fā)件人的地址;to_ receiver 是收件人的郵件地址,是一個列表,你可以在這個列表中添加多個收件人的地址;cc_receiver 是抄送的郵件地址,也是一個列表,在這個列表中也可以添加多個抄送地址;將 to_ receiver 和 cc_receiver 合并,就是所有收件人的地址。
subject = "Python E-Mail Test"sender = ""to_receiver = [""]cc_receiver = [""]receiver = to_receiver + cc_receiver通過 MIMEText 編寫郵件正文,正文的內容有三部分,第一部分是你要發(fā)送的郵件內容,可以使用轉義字符(如,\n, \t 等)改變內容的格式;然后指定郵件的文本格式,我們使用的是?plain(純文本),你也可以將 plain 換成 html,使用 html 格式;最后面是內容的編碼,我使用的是?UTF-8;最后將這些內容賦值給一個變量 message,這個就使我們我們要發(fā)送的內容。
message = MIMEText("Hi,\n\nThis is Python Challenge test email, please ignore it. \n\nRegards,\nAaron" , "plain", "UTF-8")將前面定義的郵件主題變量 subject 通過?hearder?添加到郵件內容中,然后在郵件的 from 欄中添加 sender 的郵件地址;將 to_receiver 變量中的地址添加到郵件的 to 欄中,如果 to_receiver 中有多個地址,則使用?;隔開;將 cc_receiver 中的郵件地址,添加到郵件的 cc 欄中,如果 cc_receiver 有多個地址,則使用?;隔開。
message["Subject"] = Header(subject, "UTF-8")message["From"] = sendermessage['To'] = ";".join(to_receiver)message["Cc"] = ";".join(cc_receiver)try ... except ...?是 Python 中的異常處理,可以在出錯的情況下,跳過錯誤,繼續(xù)運行,在本示例中,這是代碼的最后一部分,不管出沒出錯,這段代碼運行完都會結束,所有我們這里的異常處理,就只有 print 一個 “Error” 信息。
使用?smtplib.SMTP?指定發(fā)送郵件使用的 SMTP 服務器地址,并將賦值給一個變量 smtp;然后使用?sendmail?發(fā)送電子郵件,并指定發(fā)件人 sender,所有收件人 receiver,以及使用 message.as_string() 將 message 的 MIMEText 對象轉換成 str;使用 smtp.quit() 結束 SMTP 會話,并 print 一個信息,告訴你郵件發(fā)送已經(jīng)完成。
try: smtp = smtplib.SMTP("") smtp.sendmail(sender, receiver, message.as_string()) print("Email sent successfully")except smtplib.SMTPException: print("Error")代碼運行結果:
打開收件人郵件,驗證是否收到了郵件
補充
在某些情況下,我們沒有自己的 SMTP 服務器,只能使用第三方提供的 SMTP 服務器,如,qq 郵箱。
那么我們需要添加一些參數(shù)來指定用戶名密碼,如:
mail_user = "xxxxxxxxxx@qq.com" # 用戶名mail_password = "xxxxxxxxxxx" # 口令* 在 qq 郵箱中,如果你需要使用 SMTP 功能,你需要到設置里面開啟 SMTP 功能,并設置一個授權碼,使用這個授權碼代替 qq 郵箱密碼。
然后再發(fā)送代碼的部分補充上 SMTP login:
try: smtpObj = smtplib.SMTP_SSL("", 465) smtpObj.login(mail_user, mail_password) smtpObj.sendmail(sender, receivers, message.as_string()) print("Email sent successfully")except smtplib.SMTPException: print("Error")* qq 郵箱需要使用 ssl, 所以這里使用的 SMTP_SSL,而不是 SMTP,并且端口使用的是 465,而不是默認的 25(如果使用默認端口,端口可以忽略不寫)。
☆ END ☆總結
以上是生活随笔為你收集整理的发送邮件_使用 Python 发送电子邮件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 30天提升技术人的写作力-第十七天
- 下一篇: python可变序列_python序列中