使用Python Smtplib 和email發送郵件

下面的文件打開沒有使用with語句,是不規范的。實測可用。
給出的鏈接是在學習過程中用到的有用的鏈接,代碼是根據這些鏈接拼湊起來的。代碼實現了發送郵件和附件的功能。

#!/usr/bin/python
# -*- coding: UTF-8 -*-
# http://www.runoob.com/python/python-email.html
# http://blog.csdn.net/smart55427/article/details/48783393
# http://help.163.com/09/1224/17/5RAJ4LMH00753VB8.html
#http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386832745198026a685614e7462fb57dbf733cc9f3ad000

import smtplib
from email.mime.text import MIMEText
from email.header import Header
from email.mime.multipart import MIMEMultipart


# 第三方 SMTP 服務
mail_host="smtp.126.com"  #設置服務器
mail_user="mailnotifier@126.com"    #用戶名
mail_pass="xxxxxxxx"   #口令 


sender = 'mailnotifier@126.com'
receivers = ['aochuan103@126.com']  # 接收郵件,可設置為你的QQ郵箱或者其他郵箱

# 創建帶附件實例
message = MIMEMultipart()
message['From'] = 'AoChuan<mailnotifier@126.com'
message['To'] =  'Amos<aochuan103@126.com>'
subject = 'Python SMTP 郵件測試'
message['Subject'] = Header(subject, 'utf-8')

# 正文內容
message.attach(MIMEText('Send by python & smtplib and email.\n帶附件測試', 'plain', 'utf-8'))

# 構造附件1,傳送當前目錄下的 test.txt 文件  文件名不能出現中文名
att1 = MIMEText(open('test.caj', 'rb').read(), 'base64', 'utf-8')
att1["Content-Type"] = 'application/octet-stream'
# 這里的filename可以任意寫,寫什么名字,郵件中顯示什么名字
att1["Content-Disposition"] = 'attachment; filename="test.caj"'
message.attach(att1)

# 構造附件2,傳送當前目錄下的 runoob.txt 文件
att2 = MIMEText(open('test1.py', 'rb').read(), 'base64', 'utf-8')
att2["Content-Type"] = 'application/octet-stream'
att2["Content-Disposition"] = 'attachment; filename="test1.py"'
message.attach(att2)

try:
    smtpObj = smtplib.SMTP() 
    smtpObj.connect(mail_host, 25)    # 25 為 SMTP 端口號
    smtpObj.login(mail_user,mail_pass)  
    smtpObj.sendmail(sender, receivers, message.as_string())
    print "郵件發送成功"
except smtplib.SMTPException:
    print "Error: 無法發送郵件"
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容