Python脚本自动发送电子邮件

要编写一个Python脚本来自动发送电子邮件,你可以使用smtplib库来处理SMTP协议,以及email库来构建邮件内容。

  1. 安装必要的库

    通常情况下,smtplib和email库是Python标准库的一部分,因此不需要额外安装。如果你使用的是较旧的Python版本,可能需要确保这些库已安装。

  2. 编写脚本

    以下是一个完整的Python脚本示例,用于发送带有附件的电子邮件

c 复制代码
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders

def send_email(sender_email, sender_password, receiver_email, subject, body, attachment_path):
    # 设置SMTP服务器
    smtp_server = 'smtp.example.com'  # 替换为你的SMTP服务器地址
    smtp_port = 587  # 替换为你的SMTP服务器端口

    # 创建邮件对象
    msg = MIMEMultipart()
    msg['From'] = sender_email
    msg['To'] = receiver_email
    msg['Subject'] = subject

    # 添加邮件正文
    msg.attach(MIMEText(body, 'plain'))

    # 添加附件
    if attachment_path:
        attachment = open(attachment_path, 'rb')
        part = MIMEBase('application', 'octet-stream')
        part.set_payload(attachment.read())
        encoders.encode_base64(part)
        part.add_header('Content-Disposition', f'attachment; filename={attachment_path}')
        msg.attach(part)
        attachment.close()

    # 连接SMTP服务器并发送邮件
    try:
        server = smtplib.SMTP(smtp_server, smtp_port)
        server.starttls()  # 启用TLS加密
        server.login(sender_email, sender_password)
        text = msg.as_string()
        server.sendmail(sender_email, receiver_email, text)
        server.quit()
        print("邮件发送成功")
    except Exception as e:
        print(f"邮件发送失败: {e}")

if __name__ == "__main__":
    # 替换为你的发件人邮箱和密码
    sender_email = 'your_email@example.com'
    sender_password = 'your_password'

    # 替换为收件人邮箱
    receiver_email = 'receiver_email@example.com'

    # 邮件主题和正文
    subject = '测试邮件'
    body = '这是一封测试邮件,包含附件。'

    # 附件路径(可选)
    attachment_path = 'example.txt'  # 替换为你的附件文件路径

    # 发送邮件
    send_email(sender_email, sender_password, receiver_email, subject, body, attachment_path)
  1. 运行脚本
    将上述脚本保存为一个Python文件(例如send_email.py),然后在命令行中运行:

python send_email.py

  1. 注意事项
    SMTP服务器:你需要替换smtp_server和smtp_port为你的电子邮件服务提供商的SMTP服务器地址和端口。例如,Gmail的SMTP服务器是smtp.gmail.com,端口是587。

发件人邮箱和密码:你需要替换sender_email和sender_password为你的发件人邮箱地址和密码。对于Gmail,你可能需要生成一个应用专用密码。

收件人邮箱:替换receiver_email为收件人的邮箱地址。

附件:如果你不需要发送附件,可以将attachment_path设置为None。

  1. 安全性
    密码安全:不要在脚本中硬编码密码,尤其是当你将代码分享或上传到公共仓库时。可以考虑使用环境变量或配置文件来管理敏感信息。

TLS加密:确保使用starttls()来启用TLS加密,以保护邮件内容在传输过程中的安全。

相关推荐
言乐67 小时前
HTML视频审核模型
python·django·virtualenv·pygame·tornado
言乐68 小时前
Python根据无法识别搜索词找出可能输入内容模型
开发语言·python·django·virtualenv·pygame
yl45309 小时前
硫酸泄露处理生产商怎么选才够专业
大数据·人工智能·python
笨笨饿9 小时前
140_AI新手村MCP与Skills是干嘛的
开发语言·人工智能·python·stm32·单片机·嵌入式硬件·物联网
for_ever_love__10 小时前
机器学习入门——手写线性回归与梯度下降
人工智能·python·学习·机器学习·线性回归
打工仔折腾 AI10 小时前
从 Demo 到生产级 Agent:8 个关键设计机制与 Python 实现拆解
java·jvm·人工智能·后端·python·langchain·ai agent 实战
I Am a robert girl10 小时前
当传感器学会“说谎“:拆解可靠性门控的稀疏惯性动捕融合
python·姿态估计·传感器融合·惯性动捕·imu传感器·可靠性门控·可穿戴计算
李航198311 小时前
AI定制柜建模,需要详细的建模规范和标准流程
人工智能·python·计算机视觉·ai·ai编程
沙漠之主11 小时前
Python 教学设计资料:从入门到实战的完整课程方案
爬虫·python
ebiobiz12 小时前
极海 APM32 使用 Nimmake 编译指南
c++·python·单片机·嵌入式硬件·mcu