一、使用QQ郵箱或者騰訊企業郵箱
python 發送郵件屬於網絡編程方向的,在工作中,我需要經常用郵件來檢測我的程序運行狀況.使用起來十分方便,這里我就用騰訊企業郵箱作為我的收發郵箱來使用.
使用python 中的 smtplib 模塊來實現發送電子郵件. smtplib對SMTP(Simple Mail Transfer Protocol 簡單郵件傳輸協議)進行簡單的包裝.
# 創建 對象
import smtplib
smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] )
- host : STMP服務器主機,可以制定ip或者域名
- port : SMTP服務試用的端口號,一般為25
- local_hostname: 如果 SMTP 在你的本機上,你只需要指定服務器地址為 localhost 即可。
Python SMTP 對象使用 sendmail 方法發送郵件,語法如下:
SMTP.sendmail(from_addr, to_addrs, msg[, mail_options, rcpt_options])
- from_addr: 郵件發送者地址。
- to_addrs: 郵件發送地址,字符串列表,可以發送給多人['addr1','addr2',....],。
- msg: 發送消息
msg 是字符串,表示郵件。郵件一般由標題,發信人,收件人,郵件內容,附件等構成,發送郵件的時候,要注意 msg 的格式。這個格式就是 smtp 協議中定義的格式。
例子
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
def mail(my_sender, my_pass, recipients):
try:
# 郵件的內容
msg = MIMEText('這是一條測試郵件,請忽略', 'plain', 'utf-8')
# [發件人的郵箱昵稱、發件人郵箱賬號], 昵稱隨便
msg['From'] = formataddr([" ", my_sender])
# [收件人郵箱昵稱、收件人郵箱賬號], 昵稱隨便
msg['To'] = formataddr([" ", recipients])
# 郵件的主題,也就是郵件的標題
msg['Subject'] = "郵件測試"
# 備注:這里使用的是QQ郵箱的服務器, 加入用騰訊企業郵箱作為發件人的話,請將"smtp.qq.com" 修改為 "smtp.exmail.qq.com"
# 發件人郵箱中的SMTP服務器,qq端口是465
server = smtplib.SMTP_SSL("smtp.qq.com", port=465)
# (發件人郵箱賬號、郵箱密碼)
server.login(my_sender, my_pass)
# (發件人郵箱賬號、收件人郵箱賬號、發送郵件)
server.sendmail(my_sender, recipients, msg.as_string())
server.quit() # 關閉連接
print("郵件發送成功")
except Exception as e:
print("郵件發送失敗: ",e)
if __name__ == '__main__':
my_sender = '126xxxx261@qq.com' # 發件人郵箱賬號
my_pass = 'xxxxxxxxxxxxxxxx' # 發件人郵箱授權碼 / 騰訊企業郵箱請使用登陸密碼
recipients = '126xxxxx261@qq.com' # 收件人郵箱賬號
mail(my_sender, my_pass, recipients)
使用注意
使用QQ郵箱作為發送端的話,必須開啟SMTP服務,
請點擊官方教程查看具體幫助.
具體設置如下(需要發送短信)
- 1.登陸QQ郵箱,
- 2.選擇 設置 --> 賬戶
- 3.開啟 "POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務" 服務,生成授權碼即可
假如使用騰訊企業郵箱,請修改
server = smtplib.SMTP_SSL("smtp.qq.com", port=465)
中的smtp.qq.com
為smtp.exmail.qq.com
,代碼中提到
第一次寫博客也有很多不足的地方,以后要多多學習,彌補自己.
有時間的話,會繼續補充其他郵箱的使用,道理其實都一樣