python 發送郵件


一、使用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.comsmtp.exmail.qq.com,代碼中提到

第一次寫博客也有很多不足的地方,以后要多多學習,彌補自己.
有時間的話,會繼續補充其他郵箱的使用,道理其實都一樣


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM