国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

python 學(xué)習(xí)筆記(5)——SMTP 使用QQ郵箱發(fā)送郵件

這篇具有很好參考價值的文章主要介紹了python 學(xué)習(xí)筆記(5)——SMTP 使用QQ郵箱發(fā)送郵件。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

目錄

發(fā)送郵件

1、準(zhǔn)備工作:

2、發(fā)送純文本信息內(nèi)容:

3、發(fā)送 HTML 格式的內(nèi)容:

4、發(fā)送帶附件的郵件:

5、群發(fā)(一個郵件,發(fā)給多個人):


發(fā)送郵件

??????? 以下都 以 QQ郵箱 為發(fā)送方舉例;

?文章來源地址http://www.zghlxwxcb.cn/news/detail-707399.html

1、準(zhǔn)備工作:

???????? 使用 QQ郵箱發(fā)送郵件,需要到 “設(shè)置”=>“賬號” 中 開啟 POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務(wù)

python 學(xué)習(xí)筆記(5)——SMTP 使用QQ郵箱發(fā)送郵件,Python,python,筆記,學(xué)習(xí)

python 學(xué)習(xí)筆記(5)——SMTP 使用QQ郵箱發(fā)送郵件,Python,python,筆記,學(xué)習(xí)

??????? 開啟服務(wù)后,點(diǎn)擊 管理服務(wù)

python 學(xué)習(xí)筆記(5)——SMTP 使用QQ郵箱發(fā)送郵件,Python,python,筆記,學(xué)習(xí)

??????? 然后會跳轉(zhuǎn)到賬號與安全頁面,點(diǎn)擊生成授權(quán)碼以生成授權(quán)碼,并記錄下授權(quán)碼:

python 學(xué)習(xí)筆記(5)——SMTP 使用QQ郵箱發(fā)送郵件,Python,python,筆記,學(xué)習(xí)

參考:

https://wx.mail.qq.com/list/readtemplate?name=app_intro.html#/agreement/authorizationCode

2、發(fā)送純文本信息內(nèi)容:

import smtplib
import time
from email.mime.text import MIMEText

def send_QQ_email_plain():
    sender = user = 'sender@qq.com'    # 發(fā)送方的郵箱賬號
    passwd = 'abcdefgxxxxx'            # 授權(quán)碼

    receiver = 'receiver@qq.com'        # 接收方的郵箱賬號,不一定是QQ郵箱

    # 純文本內(nèi)容 
    msg = MIMEText(f'Python 郵件發(fā)送測試 {time.time()}', 'plain', 'utf-8')

    # From 的內(nèi)容是有要求的,前面的abc為自己定義的 nickname,如果是ASCII格式,則可以直接寫
    msg['From'] = f'abc <sender@qq.com>' 
    msg['To'] = receiver
    msg['Subject'] = 'Python SMTP 郵件測試'         # 點(diǎn)開詳情后的標(biāo)題

    try:
        # 建立 SMTP 、SSL 的連接,連接發(fā)送方的郵箱服務(wù)器
        smtp = smtplib.SMTP_SSL('smtp.qq.com', 465)

        # 登錄發(fā)送方的郵箱賬號
        smtp.login(user, passwd)

        # 發(fā)送郵件 發(fā)送方,接收方,發(fā)送的內(nèi)容
        smtp.sendmail(sender, receiver, msg.as_string())

        print('郵件發(fā)送成功')

        smtp.quit()
    except Exception as e:
        print(e)
        print('發(fā)送郵件失敗')

??????? 對于 msg['Form'] 的要求:

python 學(xué)習(xí)筆記(5)——SMTP 使用QQ郵箱發(fā)送郵件,Python,python,筆記,學(xué)習(xí)

?

??????? 如果自定義的 nickname 是非 ASCII 字符,則直接寫會報錯,如:

msg['From'] = f'好 <sender@qq.com>'

python 學(xué)習(xí)筆記(5)——SMTP 使用QQ郵箱發(fā)送郵件,Python,python,筆記,學(xué)習(xí)

?

??????? 正確的格式為:

msg['From'] = f'=?UTF-8?B?{base64.b64encode("好".encode()).decode()}?= <sender@qq.com>'

??????? 如果接收方是 QQ 郵箱,則前面的 nickname 會顯示在該位置:

python 學(xué)習(xí)筆記(5)——SMTP 使用QQ郵箱發(fā)送郵件,Python,python,筆記,學(xué)習(xí)

??????? 如果不需要自己定義 nickname,也可以直接使用郵箱賬號:

msg['From'] = '12345@qq.com'

??????? 則會顯示郵箱賬號:

python 學(xué)習(xí)筆記(5)——SMTP 使用QQ郵箱發(fā)送郵件,Python,python,筆記,學(xué)習(xí)

?

???????? 點(diǎn)開郵件查看詳情:

python 學(xué)習(xí)筆記(5)——SMTP 使用QQ郵箱發(fā)送郵件,Python,python,筆記,學(xué)習(xí)

?

3、發(fā)送 HTML 格式的內(nèi)容:

import base64
import smtplib
import time
from email.mime.text import MIMEText

def send_QQ_mail_HTML():
    user = 'sender@qq.com'
    passwd = 'abcdefxxxx'
    receiver = 'receiver@qq.com'

    # 直接寫
    # html_content = '''
    #     <h1>這個是郵件的內(nèi)容</h1>
    # '''

    # 讀入 html 文件的內(nèi)容
    with open('./for_email.html', mode='r', encoding='utf-8') as f:
        html_content = f.read()

    # 指定類型是 html
    msg = MIMEText(html_content, 'html', 'utf-8')
    msg['From'] = user
    msg['To'] = receiver
    msg['Subject'] = '測試發(fā)送 HTML 內(nèi)容'

    try:
        smtp = smtplib.SMTP_SSL('smtp.qq.com', 465)
        smtp.login(user, passwd)
        smtp.sendmail(user, receiver, msg.as_string())
        print('發(fā)送成功')
    except:
        print('發(fā)送失敗')

????????for_email.html 的內(nèi)容:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        h1{
            color: brown;
        }
        p{
            margin: 5px;
            color: purple;
        }
    </style>
</head>
<body>
    <h1>這是一個郵件內(nèi)容的標(biāo)頭</h1>
    <img src="https://img1.baidu.com/it/u=1890390320,3399874998&fm=253&fmt=auto&app=120&f=JPEG?w=1422&h=800">
    <div>
        <h3>From合法性檢查</h3>
        <p>一、根據(jù)RFC5322協(xié)議,郵件標(biāo)頭中需要包含'From'信息。</p>
        <p>二、根據(jù)RFC2047, RFC822協(xié)議,郵件標(biāo)頭中的'From'形式為:</p>
        <p>1. 郵箱地址形式:prefix@domain, 如 'abc@qq.com'。</p>
        <p>2. 昵稱+空格+&lt;郵箱地址&gt;形式:nickname &lt;prefix@domain&gt;,其中,nickname為ASCII字符集中字符組合或編碼文本:</p>
        <p>(1)如果昵稱全為ASCII字符,如'ABC',郵箱地址為'abc@qq.com',則標(biāo)頭中的'From'為'ABC &lt;abc@qq.com&gt;'。
            注意'ABC'和'&lt;abc@qq.com&gt;'之間用空格隔開;</p>
        <p>(2)如果昵稱包含非ASCII字符,如中文,則請使用base64對昵稱進(jìn)行編碼。nickname最終的形式為
            :"=?" charset "?" encoding "?" encoded-text "?="。其中,charset為字符集;
            encoding為編碼方式,'B'代表base64;encoded-text為編碼后的文本。例如,昵稱為'QQ郵箱昵稱示例',
            郵箱地址為'abc@qq.com',則對昵稱進(jìn)行base64編碼,字符集使用UTF-8,則
            nickname為 '=?UTF-8?B?UVHpgq7nrrHmmLXnp7DnpLrkvos=?=',最終郵件標(biāo)頭中的
            'From'為'"=?utf-8?B?UVHpgq7nrrHmmLXnp7DnpLrkvos=?=" &lt;abc@qq.com&gt;'。
            注意編碼文本和郵件地址間用空格隔開。</p>
    </div>
</body>
</html>

?

??????? 該html中含有引用了外鏈的img圖片,如果接收方為QQ郵箱,則默認(rèn)不會顯示圖片:

python 學(xué)習(xí)筆記(5)——SMTP 使用QQ郵箱發(fā)送郵件,Python,python,筆記,學(xué)習(xí)

??????? 如果是其他的郵箱,圖片有可能可以顯示(如企業(yè)微信的郵箱),html 的樣式也可能會丟失不奏效。

4、發(fā)送帶附件的郵件:

import base64
import smtplib
import time
from email.mime.application import MIMEApplication
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

def send_QQ_email_mul():
    sender = user = 'sender@qq.com'
    passwd = 'abcdefghijk'         # 不是密碼,是生成的 授權(quán)碼
    receiver = 'receiver@qq.com'

    content = MIMEMultipart()           # 創(chuàng)建一個包含多個部分的內(nèi)容
    content['From'] = user
    content['To'] = receiver
    content['Subject'] = 'Test Email'

    # 添加文本內(nèi)容
    # text = MIMEText('this is a test email.', 'plain', 'utf-8')
    # content.attach(text)

    # 添加html內(nèi)容
    with open('./for_email.html', mode='r', encoding='utf-8') as f:
        html_content = f.read()
    msg = MIMEText(html_content, 'html', 'utf-8')
    content.attach(msg)

    # 添加附件
    with open('./data.xlsx', 'rb') as f:
        attachment = MIMEApplication(f.read())    # 讀取為附件
        attachment.add_header('Content-Disposition', 'attachment', filename='data.xlsx')
        content.attach(attachment)

    try:
        smtp = smtplib.SMTP_SSL('smtp.qq.com', 465)
        smtp.login(user, passwd)
        smtp.sendmail(sender, receiver, content.as_string())
        print('郵件發(fā)送成功')
    except Exception as e:
        print(e)
        print('發(fā)送郵件失敗')

python 學(xué)習(xí)筆記(5)——SMTP 使用QQ郵箱發(fā)送郵件,Python,python,筆記,學(xué)習(xí)

5、群發(fā)(一個郵件,發(fā)給多個人):

??????? 將 receiver 寫成每個人的郵箱賬號數(shù)組即可

import base64
import smtplib
import time
from email.mime.text import MIMEText

def send_QQ_mail():
    sender = user = '12345@qq.com'
    passwd = 'ABCD'

    # 寫成數(shù)組,將發(fā)給這三者
    receiver = ['abcdef@qq.com','aaa@xxx.edu.cn','abcd@gmail.com']

    msg = MIMEText(f'Python 郵件發(fā)送測試 {time.time()}', 'plain', 'utf-8')
    msg['From'] = f'=?UTF-8?B?{base64.b64encode("好".encode()).decode()}?= <sender@qq.com>'
    msg['To'] = 'you'            # 每個人都會看到這個內(nèi)容
    msg['Subject'] = 'Python SMTP 郵件測試'         # 點(diǎn)開詳情后的標(biāo)題

    try:
        # 建立 SMTP 、SSL 的連接
        smtp = smtplib.SMTP_SSL('smtp.qq.com', 465)
        # 登錄
        smtp.login(user, passwd)
        # 發(fā)送郵件 發(fā)送方,接收方,發(fā)送的內(nèi)容
        smtp.sendmail(sender, receiver, msg.as_string())
        print('郵件發(fā)送成功')
        smtp.quit()
    except Exception as e:
        print(e)
        print('發(fā)送郵件失敗')

?

?

到了這里,關(guān)于python 學(xué)習(xí)筆記(5)——SMTP 使用QQ郵箱發(fā)送郵件的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包