第一篇博客!參考鏈接⬅ 在書上看了用SMTP模塊發郵件,試過之後發現並沒有什麼用。163郵箱開啟了SMTP服務後,登陸了發送的時候卻被拒收了。 找了前人的資料,發現被過期的教程害死了。 以下代碼有效: 如果不需要附件,刪除附件的代碼塊就行。 註:密碼最好不保存在代碼中,而是使用時輸入 ...
第一篇博客!參考鏈接⬅
在書上看了用SMTP模塊發郵件,試過之後發現並沒有什麼用。163郵箱開啟了SMTP服務後,登陸了發送的時候卻被拒收了。
找了前人的資料,發現被過期的教程害死了。
以下代碼有效:
import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.mime.image import MIMEImage #全部為python內置,不需要安裝第三方模塊 receivers = ["[email protected]"] sender = "[email protected]" mail_pass = "password" mail_subject = "python發送郵件測試" # 郵件的標題 mail_context = "這是郵件內容" msg = MIMEMultipart() msg["From"] = sender # 發件人 msg["To"] = ";".join(receivers) # 收件人 msg["Subject"] = mail_subject # 郵件標題 # 郵件正文 msg.attach(MIMEText(mail_context, 'plain', 'utf-8')) #圖片附件 #不同的目錄下要寫全文件路徑 with open('test.jpg','rb') as picAtt: msgImg = MIMEImage(picAtt.read()) msgImg.add_header('Content-Disposition', 'attachment', filename='你.jpg') #msgImg.add_header('Content-ID', '<0>') #msgImg.add_header('X-Attachment-Id', '0') msg.attach(msgImg) # 構造附件 att = MIMEText(open('test.txt', "rb").read(), "base64", "utf-8") att["Content-Type"] = "application/octet-stream" # 附件名稱為中文時的寫法 att.add_header("Content-Disposition", "attachment", filename=("gbk", "", "測試結果.txt")) # 附件名稱非中文時的寫法 # att["Content-Disposition"] = 'attachment; filename="test.html")' msg.attach(att) try: # 啟動網易SMTP服務,埠465 smtpObj = smtplib.SMTP_SSL('smtp.163.com', 465) # 登陸賬號 smtpObj.login('[email protected]', 'your_password') # 發送 smtpObj.sendmail(sender, receivers, msg.as_string()) print('Success!') # 退出登錄 smtpObj.quit() except smtplib.SMTPException as e: print(e)
如果不需要附件,刪除附件的代碼塊就行。
註:密碼最好不保存在代碼中,而是使用時輸入