如何用python發送SMTP郵件(基於QQ郵箱)親測可用

  1. 第一步

首先我們要在QQ郵箱開通SMTP郵件,並生成授權碼

設置->賬戶->生成授權碼

通過綁定手機發送短信生成授權碼,並保存授權碼,一系列英文字母(等會要用)
在這裏插入圖片描述

  1. 第二步
    確保自己的計算機名稱爲全英文,查看方式:

控制面板-系統和安全-系統-計算機名

一定要是英文,如果是中文的話會報錯的,具體報錯信息如下:
‘utf-8’ codec can’t decode byte 0xba in position 0: invalid start byte
如果是中文的話要修改才行

  1. 第三步
    打開編譯器,因爲所需要的庫一般都有,不需要再下載
  2. 第四步
    運行代碼,代碼如下:
# coding=utf-8
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
 
my_sender='***@qq.com'    # 發件人郵箱賬號
my_pass = '*******'              # 發件人郵箱授權碼,第一步得到的
my_user='*****@qq.com'      # 收件人郵箱賬號,可以發送給自己
 
def mail():
    ret=True
    try:
        #msg=MIMEText('填寫郵件內容','plain','utf-8')
        mail_msg = """
            <p>Python 郵件發送測試...</p>
            <p><a href="http://www.runoob.com">這是一個鏈接</a></p>
            """
        msg = MIMEText(mail_msg, 'html', 'utf-8')
        msg['From']=formataddr(["FromRunoob",my_sender])  # 括號裏的對應發件人郵箱暱稱、發件人郵箱賬號
        msg['To']=formataddr(["FK",my_user])              # 括號裏的對應收件人郵箱暱稱、收件人郵箱賬號
        msg['Subject']="測試郵件"                # 郵件的主題,也可以說是標題
 
        # 發件人郵箱中的SMTP服務器,端口是25
        #server=smtplib.SMTP("smtp.qq.com", 25)
        
        '''
        QQ郵箱使用下面這種方式才成功
        '''
        server=smtplib.SMTP_SSL("smtp.qq.com", 465)  # 發件人郵箱中的SMTP服務器,端口是465,固定的,不能更改
        server.login(my_sender, my_pass)  # 括號中對應的是發件人郵箱賬號、郵箱密碼
        server.set_debuglevel(1)
        server.sendmail(my_sender,[my_user,],msg.as_string())  # 括號中對應的是發件人郵箱賬號、收件人郵箱賬號、發送郵件
        server.quit()  # 關閉連接
    except Exception as err:  # 如果 try 中的語句沒有執行,則會執行下面的 ret=False
        print(err)
        ret=False
    return ret
 
ret=mail()
if ret:
    print("郵件發送成功")
else:
    print("郵件發送失敗")

親測這個代碼可用,有的版本的代碼發郵件會出現:
由於目標計算機積極拒絕,無法連接
參考鏈接:菜鳥教程,其中的代碼可能不能用
但是上面給出的就不會,O(∩_∩)O哈哈~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章