新聞中心
這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
使用python發(fā)送帶附件的郵件
發(fā)送帶附件的郵件,首先要?jiǎng)?chuàng)建MIMEMultipart()實(shí)例,然后構(gòu)造附件,如果有多個(gè)附件,可依次構(gòu)造,最后利用smtplib.smtp發(fā)送。

實(shí)例
#!/usr/bin/python3
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header
sender = '[email protected]'
receivers = ['[email protected]'] # 接收郵件,可設(shè)置為你的QQ郵箱或者其他郵箱
#創(chuàng)建一個(gè)帶附件的實(shí)例
message = MIMEMultipart()
message['From'] = Header("菜鳥教程", 'utf-8')
message['To'] = Header("測(cè)試", 'utf-8')
subject = 'Python SMTP 郵件測(cè)試'
message['Subject'] = Header(subject, 'utf-8')
#郵件正文內(nèi)容
message.attach(MIMEText('這是菜鳥教程Python 郵件發(fā)送測(cè)試……', 'plain', 'utf-8'))
# 構(gòu)造附件1,傳送當(dāng)前目錄下的 test.txt 文件
att1 = MIMEText(open('test.txt', 'rb').read(), 'base64', 'utf-8')
att1["Content-Type"] = 'application/octet-stream'
# 這里的filename可以任意寫,寫什么名字,郵件中顯示什么名字
att1["Content-Disposition"] = 'attachment; filename="test.txt"'
message.attach(att1)
# 構(gòu)造附件2,傳送當(dāng)前目錄下的 runoob.txt 文件
att2 = MIMEText(open('runoob.txt', 'rb').read(), 'base64', 'utf-8')
att2["Content-Type"] = 'application/octet-stream'
att2["Content-Disposition"] = 'attachment; filename="runoob.txt"'
message.attach(att2)
try:
smtpObj = smtplib.SMTP('localhost')
smtpObj.sendmail(sender, receivers, message.as_string())
print ("郵件發(fā)送成功")
except smtplib.SMTPException:
print ("Error: 無法發(fā)送郵件")
$ python3 test.py
郵件發(fā)送成功
查看我們的收件箱(一般在垃圾箱),就可以查看到郵件信息:
在 HTML 文本中添加圖片
郵件的 HTML 文本中一般郵件服務(wù)商添加外鏈?zhǔn)菬o效的,正確添加圖片的實(shí)例如下所示:
實(shí)例
#!/usr/bin/python3
import smtplib
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.header import Header
sender = '[email protected]'
receivers = ['[email protected]'] # 接收郵件,可設(shè)置為你的QQ郵箱或者其他郵箱
msgRoot = MIMEMultipart('related')
msgRoot['From'] = Header("菜鳥教程", 'utf-8')
msgRoot['To'] = Header("測(cè)試", 'utf-8')
subject = 'Python SMTP 郵件測(cè)試'
msgRoot['Subject'] = Header(subject, 'utf-8')
msgAlternative = MIMEMultipart('alternative')
msgRoot.attach(msgAlternative)
mail_msg = """ Python 郵件發(fā)送測(cè)試... """
msgAlternative.attach(MIMEText(mail_msg, 'html', 'utf-8'))
# 指定圖片為當(dāng)前目錄
fp = open('test.png', 'rb')
msgImage = MIMEImage(fp.read())
fp.close()
# 定義圖片 ID,在 HTML 文本中引用
msgImage.add_header('Content-ID', '')
msgRoot.attach(msgImage)
try:
smtpObj = smtplib.SMTP('localhost')
smtpObj.sendmail(sender, receivers, msgRoot.as_string())
print ("郵件發(fā)送成功")
except smtplib.SMTPException:
print ("Error: 無法發(fā)送郵件")
$ python3 test.py
郵件發(fā)送成功
查看我們的收件箱(如果在垃圾箱可能需要移動(dòng)到收件箱才可正常顯示),就可以查看到郵件信息:
使用第三方 SMTP 服務(wù)發(fā)送
這里使用了 QQ 郵箱(你也可以使用 163,Gmail等)的 SMTP 服務(wù),需要做以下配置: QQ 郵箱 SMTP 服務(wù)器地址:smtp.qq.com,ssl 端口:465。
以下實(shí)例你需要修改:發(fā)件人郵箱(你的QQ郵箱),密碼,收件人郵箱(可發(fā)給自己)。
QQ SMTP
#!/usr/bin/python3
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
my_sender='[email protected]' # 發(fā)件人郵箱賬號(hào)
my_pass = 'xxxxxxxxxx' # 發(fā)件人郵箱密碼
my_user='[email protected]' # 收件人郵箱賬號(hào),我這邊發(fā)送給自己
def mail():
ret=True
try:
msg=MIMEText('填寫郵件內(nèi)容','plain','utf-8')
msg['From']=formataddr(["FromRunoob",my_sender]) # 括號(hào)里的對(duì)應(yīng)發(fā)件人郵箱昵稱、發(fā)件人郵箱賬號(hào)
msg['To']=formataddr(["FK",my_user]) # 括號(hào)里的對(duì)應(yīng)收件人郵箱昵稱、收件人郵箱賬號(hào)
msg['Subject']="菜鳥教程發(fā)送郵件測(cè)試" # 郵件的主題,也可以說是標(biāo)題
server=smtplib.SMTP_SSL("smtp.qq.com", 465) # 發(fā)件人郵箱中的SMTP服務(wù)器,端口是25
server.login(my_sender, my_pass) # 括號(hào)中對(duì)應(yīng)的是發(fā)件人郵箱賬號(hào)、郵箱密碼
server.sendmail(my_sender,[my_user,],msg.as_string()) # 括號(hào)中對(duì)應(yīng)的是發(fā)件人郵箱賬號(hào)、收件人郵箱賬號(hào)、發(fā)送郵件
server.quit() # 關(guān)閉連接
except Exception: # 如果 try 中的語句沒有執(zhí)行,則會(huì)執(zhí)行下面的 ret=False
ret=False
return ret
ret=mail()
if ret:
print("郵件發(fā)送成功")
else:
print("郵件發(fā)送失敗")
$ python test.py
郵件發(fā)送成功
發(fā)送成功后,登陸收件人郵箱即可查看:
分享文章:使用python發(fā)送帶附件的郵件
網(wǎng)站路徑:http://fisionsoft.com.cn/article/dpdcddi.html


咨詢
建站咨詢
