最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用Python實現(xiàn)自動發(fā)送郵件的實戰(zhàn)指南(以QQ/163為例)

 更新時間:2026年02月09日 09:20:48   作者:玄同765  
很多開發(fā)者需要將大模型生成的內(nèi)容(如報告、代碼、數(shù)據(jù)分析結(jié)果)自動發(fā)送給用戶或團隊,但手動復制粘貼效率低且容易出錯,本文詳細介紹如何用 Python 實現(xiàn)自動發(fā)送郵件,以 QQ 郵箱和 163 郵箱為例,需要的朋友可以參考下

摘要

很多開發(fā)者需要將大模型生成的內(nèi)容(如報告、代碼、數(shù)據(jù)分析結(jié)果)自動發(fā)送給用戶或團隊,但手動復制粘貼效率低且容易出錯。本文詳細介紹如何用 Python 實現(xiàn)自動發(fā)送郵件,以 QQ 郵箱和 163 郵箱為例,結(jié)合大模型生成內(nèi)容的場景,給出完整的代碼示例,包括純文本郵件、HTML 郵件、附件發(fā)送等功能,幫你快速實現(xiàn)自動化郵件推送。

一、引言:為什么要自動發(fā)送郵件?

在大模型應用場景中,自動發(fā)送郵件可以解決以下痛點:

  1. 自動化報告生成:將大模型生成的數(shù)據(jù)分析報告、技術(shù)文檔自動發(fā)送給相關(guān)人員;
  2. 代碼推送:將大模型生成的代碼自動發(fā)送給開發(fā)團隊;
  3. 通知提醒:將大模型生成的異常檢測結(jié)果、預警信息自動發(fā)送給運維人員;
  4. 批量處理:一次性將大模型生成的多份內(nèi)容發(fā)送給不同收件人。

Python 的smtplibemail庫可以輕松實現(xiàn)郵件發(fā)送功能,結(jié)合大模型 API(如 OpenAI、Ollama),可以實現(xiàn)從內(nèi)容生成到郵件發(fā)送的全流程自動化。

二、準備工作:開啟郵箱 SMTP 服務

在使用 Python 發(fā)送郵件前,需要開啟郵箱的 SMTP 服務,并獲取授權(quán)碼(而非郵箱密碼)。

2.1 QQ 郵箱設(shè)置

  1. 登錄 QQ 郵箱,點擊右上角的 “設(shè)置”→“賬戶”;
  2. 找到 “POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV 服務”;
  3. 開啟 “SMTP 服務”;
  4. 點擊 “生成授權(quán)碼”,按照提示操作,獲取授權(quán)碼。

2.2 163 郵箱設(shè)置

  1. 登錄 163 郵箱,點擊右上角的 “設(shè)置”→“POP3/SMTP/IMAP”;
  2. 開啟 “SMTP 服務”;
  3. 點擊 “設(shè)置客戶端授權(quán)密碼”,按照提示操作,獲取授權(quán)碼。

三、Python 發(fā)送郵件核心代碼

Python 發(fā)送郵件主要依賴smtplib(連接 SMTP 服務器)和email(構(gòu)建郵件內(nèi)容)兩個庫。

3.1 發(fā)送純文本郵件

代碼示例

import smtplib
from email.mime.text import MIMEText
from email.header import Header
 
def send_text_email(
    smtp_server: str,
    smtp_port: int,
    sender_email: str,
    sender_password: str,
    receiver_email: str,
    subject: str,
    content: str
):
    """
    發(fā)送純文本郵件
    :param smtp_server: SMTP服務器地址
    :param smtp_port: SMTP服務器端口
    :param sender_email: 發(fā)件人郵箱
    :param sender_password: 發(fā)件人郵箱授權(quán)碼
    :param receiver_email: 收件人郵箱
    :param subject: 郵件主題
    :param content: 郵件內(nèi)容
    """
    # 構(gòu)建郵件內(nèi)容
    message = MIMEText(content, "plain", "utf-8")
    message["From"] = sender_email  # 直接設(shè)置郵箱地址,不使用Header包裝
    message["To"] = receiver_email  # 直接設(shè)置郵箱地址,不使用Header包裝
    message["Subject"] = Header(subject, "utf-8")
 
    # 發(fā)送郵件
    try:
        with smtplib.SMTP_SSL(smtp_server, smtp_port) as server:
            server.login(sender_email, sender_password)
            server.sendmail(sender_email, receiver_email, message.as_string())
        print("純文本郵件發(fā)送成功")
    except Exception as e:
        print(f"純文本郵件發(fā)送失?。簕str(e)}")
 
# 測試代碼
if __name__ == "__main__":
    # QQ郵箱配置
    smtp_server = "smtp.qq.com"
    smtp_port = 465
    sender_email = "your_qq_email@qq.com"
    sender_password = "your_qq_authorization_code"
    receiver_email = "receiver_email@example.com"
    subject = "大模型生成的純文本郵件"
    content = "這是大模型生成的純文本郵件內(nèi)容,用于測試自動發(fā)送郵件功能。"
 
    send_text_email(
        smtp_server,
        smtp_port,
        sender_email,
        sender_password,
        receiver_email,
        subject,
        content
    )

3.2 發(fā)送 HTML 郵件

代碼示例

import smtplib
from email.mime.text import MIMEText
from email.header import Header

def send_html_email(
    smtp_server: str,
    smtp_port: int,
    sender_email: str,
    sender_password: str,
    receiver_email: str,
    subject: str,
    html_content: str
):
    """
    發(fā)送HTML郵件
    :param smtp_server: SMTP服務器地址
    :param smtp_port: SMTP服務器端口
    :param sender_email: 發(fā)件人郵箱
    :param sender_password: 發(fā)件人郵箱授權(quán)碼
    :param receiver_email: 收件人郵箱
    :param subject: 郵件主題
    :param html_content: HTML格式的郵件內(nèi)容
    """
    # 構(gòu)建郵件內(nèi)容
    message = MIMEText(html_content, "html", "utf-8")
    message["From"] = sender_email  # 直接設(shè)置郵箱地址,不使用Header包裝
    message["To"] = receiver_email  # 直接設(shè)置郵箱地址,不使用Header包裝
    message["Subject"] = Header(subject, "utf-8")

    # 發(fā)送郵件
    try:
        with smtplib.SMTP_SSL(smtp_server, smtp_port) as server:
            server.login(sender_email, sender_password)
            server.sendmail(sender_email, receiver_email, message.as_string())
        print("HTML郵件發(fā)送成功")
    except Exception as e:
        print(f"HTML郵件發(fā)送失?。簕str(e)}")

# 測試代碼
if __name__ == "__main__":
    # 163郵箱配置
    smtp_server = "smtp.163.com"
    smtp_port = 465
    sender_email = "your_163_email@163.com"
    sender_password = "your_163_authorization_code"
    receiver_email = "receiver_email@example.com"
    subject = "大模型生成的HTML郵件"
    html_content = """
    <html>
        <body>
            <h1>大模型生成的HTML郵件</h1>
            <p>這是大模型生成的HTML郵件內(nèi)容,用于測試自動發(fā)送郵件功能。</p>
            <p>以下是大模型生成的代碼示例:</p>
            <pre><code>def fibonacci(n):
    if n <= 1:
        return n
    else:
        return fibonacci(n-1) + fibonacci(n-2)
</code></pre>
        </body>
    </html>
    """

    send_html_email(
        smtp_server,
        smtp_port,
        sender_email,
        sender_password,
        receiver_email,
        subject,
        html_content
    )

3.3 發(fā)送帶附件的郵件

代碼示例

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders
from email.header import Header
import os

def send_email_with_attachment(
    smtp_server: str,
    smtp_port: int,
    sender_email: str,
    sender_password: str,
    receiver_email: str,
    subject: str,
    content: str,
    attachment_path: str
):
    """
    發(fā)送帶附件的郵件
    :param smtp_server: SMTP服務器地址
    :param smtp_port: SMTP服務器端口
    :param sender_email: 發(fā)件人郵箱
    :param sender_password: 發(fā)件人郵箱授權(quán)碼
    :param receiver_email: 收件人郵箱
    :param subject: 郵件主題
    :param content: 郵件內(nèi)容
    :param attachment_path: 附件路徑
    """
    # 構(gòu)建郵件內(nèi)容
    message = MIMEMultipart()
    message["From"] = sender_email  # 直接設(shè)置郵箱地址,不使用Header包裝
    message["To"] = receiver_email  # 直接設(shè)置郵箱地址,不使用Header包裝
    message["Subject"] = Header(subject, "utf-8")

    # 添加郵件正文
    message.attach(MIMEText(content, "plain", "utf-8"))

    # 添加附件
    if os.path.exists(attachment_path):
        filename = os.path.basename(attachment_path)
        with open(attachment_path, "rb") as f:
            part = MIMEBase("application", "octet-stream")
            part.set_payload(f.read())
            encoders.encode_base64(part)
            part.add_header("Content-Disposition", f"attachment; filename={filename}")
            message.attach(part)
    else:
        print(f"附件不存在:{attachment_path}")
        return

    # 發(fā)送郵件
    try:
        with smtplib.SMTP_SSL(smtp_server, smtp_port) as server:
            server.login(sender_email, sender_password)
            server.sendmail(sender_email, receiver_email, message.as_string())
        print("帶附件的郵件發(fā)送成功")
    except Exception as e:
        print(f"帶附件的郵件發(fā)送失?。簕str(e)}")

# 測試代碼
if __name__ == "__main__":
    # QQ郵箱配置
    smtp_server = "smtp.qq.com"
    smtp_port = 465
    sender_email = "your_qq_email@qq.com"
    sender_password = "your_qq_authorization_code"
    receiver_email = "receiver_email@example.com"
    subject = "大模型生成的帶附件郵件"
    content = "這是大模型生成的帶附件郵件內(nèi)容,附件是大模型生成的代碼文件。"
    attachment_path = "fibonacci.py"

    send_email_with_attachment(
        smtp_server,
        smtp_port,
        sender_email,
        sender_password,
        receiver_email,
        subject,
        content,
        attachment_path
    )

三、實戰(zhàn)案例:大模型生成內(nèi)容自動發(fā)送郵件

結(jié)合 Ollama 本地大模型,實現(xiàn)從內(nèi)容生成到郵件發(fā)送的全流程自動化。

代碼示例

import ollama
import smtplib
from email.mime.text import MIMEText
from email.header import Header

def generate_content_with_ollama(model_name: str, prompt: str) -> str:
    """
    使用Ollama大模型生成內(nèi)容
    :param model_name: 模型名稱
    :param prompt: 提示詞
    :return: 大模型生成的內(nèi)容
    """
    response = ollama.generate(model=model_name, prompt=prompt, stream=False)
    return response["response"]

def send_email(
    smtp_server: str,
    smtp_port: int,
    sender_email: str,
    sender_password: str,
    receiver_email: str,
    subject: str,
    content: str
):
    """
    發(fā)送郵件
    :param smtp_server: SMTP服務器地址
    :param smtp_port: SMTP服務器端口
    :param sender_email: 發(fā)件人郵箱
    :param sender_password: 發(fā)件人郵箱授權(quán)碼
    :param receiver_email: 收件人郵箱
    :param subject: 郵件主題
    :param content: 郵件內(nèi)容
    """
    message = MIMEText(content, "plain", "utf-8")
    message["From"] = Header(sender_email, "utf-8")
    message["To"] = Header(receiver_email, "utf-8")
    message["Subject"] = Header(subject, "utf-8")

    try:
        with smtplib.SMTP_SSL(smtp_server, smtp_port) as server:
            server.login(sender_email, sender_password)
            server.sendmail(sender_email, receiver_email, message.as_string())
        print("郵件發(fā)送成功")
    except Exception as e:
        print(f"郵件發(fā)送失?。簕str(e)}")

# 主函數(shù)
if __name__ == "__main__":
    # 大模型配置
    model_name = "llama3:8b"
    prompt = "生成一份Python數(shù)據(jù)分析報告的大綱,包括數(shù)據(jù)收集、數(shù)據(jù)清洗、數(shù)據(jù)分析、數(shù)據(jù)可視化、報告總結(jié)等部分。"

    # 生成內(nèi)容
    content = generate_content_with_ollama(model_name, prompt)
    print(f"大模型生成的內(nèi)容:\n{content}")

    # 郵件配置
    smtp_server = "smtp.qq.com"
    smtp_port = 465
    sender_email = "your_qq_email@qq.com"
    sender_password = "your_qq_authorization_code"
    receiver_email = "receiver_email@example.com"
    subject = "大模型生成的Python數(shù)據(jù)分析報告大綱"

    # 發(fā)送郵件
    send_email(
        smtp_server,
        smtp_port,
        sender_email,
        sender_password,
        receiver_email,
        subject,
        content
    )

四、常見問題與解決方案

4.1 授權(quán)碼錯誤

問題:發(fā)送郵件時提示 “535 Login Fail. Please enter your authorization code to login.”解決方案:檢查授權(quán)碼是否正確,確保使用的是授權(quán)碼而非郵箱密碼。

4.2 端口錯誤

問題:發(fā)送郵件時提示 “Connection refused”解決方案:檢查 SMTP 服務器端口是否正確,QQ 郵箱和 163 郵箱的 SMTP 端口通常為 465(SSL)或 587(TLS)。

4.3 郵件被攔截

問題:郵件發(fā)送成功但收件人未收到解決方案:檢查郵件內(nèi)容是否包含敏感詞匯,避免被垃圾郵件過濾器攔截;可以在郵件中添加退訂鏈接,提高郵件可信度。

五、總結(jié)

Python 的smtplibemail庫可以輕松實現(xiàn)郵件發(fā)送功能,結(jié)合大模型生成內(nèi)容的場景,可以實現(xiàn)從內(nèi)容生成到郵件發(fā)送的全流程自動化。本文以 QQ 郵箱和 163 郵箱為例,給出了純文本郵件、HTML 郵件、附件郵件的代碼示例,并結(jié)合 Ollama 大模型實現(xiàn)了內(nèi)容生成與郵件發(fā)送的自動化。希望本文對你有所幫助,讓你在大模型應用場景中實現(xiàn)自動化郵件推送。

以上就是使用Python實現(xiàn)自動發(fā)送郵件的實戰(zhàn)指南(以QQ/163為例)的詳細內(nèi)容,更多關(guān)于Python QQ/163自動發(fā)送郵件的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python數(shù)據(jù)序列化技術(shù)總結(jié)

    Python數(shù)據(jù)序列化技術(shù)總結(jié)

    在現(xiàn)代軟件開發(fā)中,數(shù)據(jù)序列化是一個關(guān)鍵環(huán)節(jié),它允許我們將復雜的數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為可存儲或可傳輸?shù)母袷?,Python提供了多種數(shù)據(jù)序列化技術(shù),每種技術(shù)都有其獨特的性能優(yōu)勢和適用場景,本文將詳細介紹幾種強大的Python數(shù)據(jù)序列化技術(shù),需要的朋友可以參考下
    2025-03-03
  • 詳解Python自動化之文件自動化處理

    詳解Python自動化之文件自動化處理

    今天給大家?guī)淼氖顷P(guān)于Python的相關(guān)知識,文章圍繞著Python文件自動化處理展開,文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • pandas 實現(xiàn)分組后取第N行

    pandas 實現(xiàn)分組后取第N行

    這篇文章主要介紹了pandas 實現(xiàn)分組后取第N行的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • Python+PyQt5設(shè)計實現(xiàn)一個C++源代碼行數(shù)統(tǒng)計工具

    Python+PyQt5設(shè)計實現(xiàn)一個C++源代碼行數(shù)統(tǒng)計工具

    在軟件開發(fā)過程中,代碼行數(shù)是一個基礎(chǔ)但重要的軟件度量指標,本文介紹一個基于PyQt5的圖形化C++源代碼行數(shù)統(tǒng)計工具,感興趣的小伙伴可以了解下
    2025-10-10
  • Selenium模擬用戶進行操作網(wǎng)頁的最全指南

    Selenium模擬用戶進行操作網(wǎng)頁的最全指南

    這篇文章主要為大家詳細介紹了使用selenium怎么模仿人類行為,去操作網(wǎng)頁的頁面呢,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2025-05-05
  • Python利用字典破解WIFI密碼的方法

    Python利用字典破解WIFI密碼的方法

    今天小編就為大家分享一篇關(guān)于Python利用字典破解WIFI密碼的方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • 淺談keras 的抽象后端(from keras import backend as K)

    淺談keras 的抽象后端(from keras import backend as K)

    這篇文章主要介紹了淺談keras 的抽象后端(from keras import backend as K),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • python爬蟲開發(fā)之使用python爬蟲庫requests,urllib與今日頭條搜索功能爬取搜索內(nèi)容實例

    python爬蟲開發(fā)之使用python爬蟲庫requests,urllib與今日頭條搜索功能爬取搜索內(nèi)容實例

    這篇文章主要介紹了python爬蟲開發(fā)之使用python爬蟲庫requests,urllib與今日頭條搜索功能爬取搜索內(nèi)容實例,需要的朋友可以參考下
    2020-03-03
  • Python3.7實現(xiàn)驗證碼登錄方式代碼實例

    Python3.7實現(xiàn)驗證碼登錄方式代碼實例

    這篇文章主要介紹了Python3.7實現(xiàn)驗證碼登錄方式代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-02-02
  • Python中所有子圖標簽Legend顯示問題記錄

    Python中所有子圖標簽Legend顯示問題記錄

    在Python中,利用matplotlib創(chuàng)建的子圖可以很容易地添加圖例,無論是為每個子圖單獨添加,還是統(tǒng)一在一起,本文詳細介紹了如何在多個子圖中顯示圖例,包括全局圖例的顯示、圖例樣式的調(diào)整和圖例位置的調(diào)整等,需要的朋友可以參考下
    2024-12-12

最新評論

滕州市| 滕州市| 大田县| 淄博市| 福清市| 五原县| 蒲江县| 闽清县| 涿州市| 连平县| 华亭县| 会宁县| 尚志市| 林西县| 乐业县| 诏安县| 株洲县| 台山市| 六枝特区| 长武县| 如皋市| 如皋市| 宁河县| 梅河口市| 凤城市| 石林| 阜宁县| 瓮安县| 北票市| 宁远县| 南阳市| 泌阳县| 秦皇岛市| 秦皇岛市| 林西县| 翼城县| 九龙城区| 榆中县| 东城区| 托克逊县| 永仁县|