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

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

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

摘要

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

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

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

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

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

二、準(zhǔn)備工作:開啟郵箱 SMTP 服務(wù)

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

2.1 QQ 郵箱設(shè)置

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

2.2 163 郵箱設(shè)置

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

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

Python 發(fā)送郵件主要依賴smtplib(連接 SMTP 服務(wù)器)和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服務(wù)器地址
    :param smtp_port: SMTP服務(wù)器端口
    :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服務(wù)器地址
    :param smtp_port: SMTP服務(wù)器端口
    :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服務(wù)器地址
    :param smtp_port: SMTP服務(wù)器端口
    :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
    )

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

結(jié)合 Ollama 本地大模型,實(shí)現(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服務(wù)器地址
    :param smtp_port: SMTP服務(wù)器端口
    :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 服務(wù)器端口是否正確,QQ 郵箱和 163 郵箱的 SMTP 端口通常為 465(SSL)或 587(TLS)。

4.3 郵件被攔截

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

五、總結(jié)

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

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

相關(guān)文章

最新評論

长子县| 青州市| 恩施市| 旌德县| 博白县| 河东区| 八宿县| 河南省| 内江市| 韶关市| 凤凰县| 仙居县| 崇文区| 山丹县| 衡东县| 灯塔市| 呼玛县| 岑巩县| 新巴尔虎左旗| 江城| 平阳县| 泰来县| 商丘市| 石门县| 镇远县| 大宁县| 阿巴嘎旗| 三明市| 诏安县| 绥宁县| 子洲县| 合作市| 黄大仙区| 从江县| 鹤壁市| 广德县| 遂昌县| 容城县| 琼结县| 山西省| 大埔县|