溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何在python中利用smtplib模塊發(fā)送郵件

發(fā)布時(shí)間:2020-12-18 14:24:47 來(lái)源:億速云 閱讀:179 作者:Leah 欄目:開(kāi)發(fā)技術(shù)

這篇文章將為大家詳細(xì)講解有關(guān)如何在python中利用smtplib模塊發(fā)送郵件,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

1)使用smtplib模塊發(fā)送簡(jiǎn)單郵件

步驟:

1.連接SMTP服務(wù)器,并使用用戶名、密碼登陸服務(wù)器
2.創(chuàng)建EmailMessage對(duì)象,該對(duì)象代表了郵件本身
3.調(diào)用sendmail()方法發(fā)送郵件

示例:

  • 我用自己的QQ郵箱(英文地址)給自己(原始地址)發(fā)一封郵件(QQ郵箱需要授權(quán)碼(詳見(jiàn)))

  • smtplib.SMTP() 代表的普通SMTP連接(默認(rèn)端口21)

  • smtplib.SMTP_SSL() 代表基于SSL的SMTP連接(默認(rèn)端口456,安全)

import smtplib
import email.message

fromaddr = 'wk_helloworld@qq.com' # 賬號(hào)
password = '****************'  # QQ授權(quán)碼

conn = smtplib.SMTP_SSL('smtp.qq.com', 465) # 創(chuàng)建SMTP連接 
conn.login(fromaddr, password)    # 登錄郵件服務(wù)器
msg = email.message.EmailMessage()   # 創(chuàng)建郵件對(duì)象
msg.set_content('您好,Python郵件')   # 設(shè)置郵件內(nèi)容(普通郵件)
conn.sendmail(fromaddr, ['929667257@qq.com'], msg.as_string())  # 發(fā)送郵件

conn.quit() # 退出連接

如何在python中利用smtplib模塊發(fā)送郵件

2)發(fā)送內(nèi)容完整的郵件

  • 為郵件設(shè)置標(biāo)題、發(fā)件人名字、收件人名(設(shè)置 EmailMessage 對(duì)象對(duì)應(yīng)的屬性)

  • EmailMessage的set_content() 方法的第二個(gè)參數(shù)設(shè)置為 html 可將郵件內(nèi)容改為 HTML 格式

import smtplib
import email.message

fromaddr = 'wk_helloworld@qq.com'
password = '****************'
 
conn = smtplib.SMTP_SSL('smtp.qq.com', 465)
conn.login(fromaddr, password) 
msg = email.message.EmailMessage()
msg.set_content('<h3>HTML郵件<h3>' + '<div >HTML郵件內(nèi)容</div>', 'html', 'UTF-8')
msg['subject'] = 'HTML郵件'
msg['from'] = '癡迷<%s>' % fromaddr
msg['to'] = '淡然<%s>' % '929667257@qq.com'
conn.sendmail(fromaddr, ['929667257@qq.com'], msg.as_string())

conn.quit()

如何在python中利用smtplib模塊發(fā)送郵件

3)發(fā)送圖文并茂的郵件

在郵件中插入圖片,需要先調(diào)用 EmailMessage 的 add_attachment() 方法來(lái)添加附件,該方法參數(shù):

  • maintype:指定附件的主要類型

  • subtype:指定附件的子類型

  • filename:指定該附件的文件名

  • cid=img:指定該附件的資源 ID

通過(guò)<img…/>元素來(lái)插入附件中的圖片(引用附件的cid屬性)

import smtplib
import email.message
import email.utils

fromaddr = 'wk_helloworld@qq.com'
password = '****************'
toaddr = '929667257@qq.com'
 
conn = smtplib.SMTP_SSL('smtp.qq.com', 465)
conn.login(fromaddr, password) 
msg = email.message.EmailMessage()
first_id = email.utils.make_msgid()
msg.set_content('<h3>HTML郵件<h3>' 
    + '<div >html郵件內(nèi)容</div>' 
    + '<img src="cid:' + first_id[1:-1] + '">', 'html', 'UTF-8')
msg['subject'] = 'HTML郵件'
msg['from'] = 'wk<%s>' % fromaddr
msg['to'] = 'k<%s>' % toaddr

# 添加附件
with open('圖1.jpg', 'rb') as f:
 # 附件指定cid后,郵件正文可通過(guò)該cid來(lái)引用該圖片
 msg.add_attachment(f.read(), maintype='image', subtype='jepg', filename='test1.jpg', cid=first_id)

with open('圖2.jpg', 'rb') as f:
 msg.add_attachment(f.read(), maintype='image', subtype='jepg', filename='test2.jpg')
# with open('圖3.gif', 'rb') as f:
#  msg.add_attachement(f.read(), maintype='image', subtype='gif', filename='test.jpg')

conn.sendmail(fromaddr, [toaddr], msg.as_string())

conn.quit()

關(guān)于如何在python中利用smtplib模塊發(fā)送郵件就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI