☰
python如何发送邮件
2026/10/28 15:00:12 网站建设 项目流程

以下是一个使用Python发送邮件的示例代码,包含基础配置和附件功能:

importsmtplibfromemail.mime.multipartimportMIMEMultipartfromemail.mime.textimportMIMETextfromemail.mime.baseimportMIMEBasefromemailimportencodersimportosdefsend_email(sender,receiver,subject,body,files=None,smtp_server='smtp.gmail.com',port=587,password=None):""" 发送带附件的邮件 参数: sender: 发件人邮箱 receiver: 收件人邮箱(多个用列表) subject: 邮件主题 body: 邮件正文 files: 附件路径列表 smtp_server: SMTP服务器 port: 端口 password: 发件人邮箱密码/授权码 """try:# 创建MIME对象msg=MIMEMultipart()msg['From']=sender msg['To']=', '.join(receiver)ifisinstance(receiver,list)elsereceiver msg['Subject']=subject# 添加正文msg.attach(MIMEText(body,'plain'))# 添加附件iffiles:forfile_pathinfiles:withopen(file_path,'rb')asf:part=MIMEBase('application','octet-stream')part.set_payload(f.read())encoders.encode_base64(part)part.add_header('Content-Disposition',f'attachment; filename="{os.path.basename(file_path)}"')msg.attach(part)# 连接SMTP服务器withsmtplib.SMTP(smtp_server,port)asserver:server.starttls()# 启用TLS加密server.login(sender,password)server.sendmail(sender,receiver,msg.as_string())print("邮件发送成功")exceptExceptionase:print(f"邮件发送失败:{e}")# 使用示例if__name__=="__main__":# 配置信息 - 需要替换为实际值config={'sender':'your_email@gmail.com','password':'your_app_password',# Gmail需使用应用专用密码'receiver':'recipient@example.com','subject':'Python邮件测试','body':'这是一封通过Python脚本发送的测试邮件','files':['report.pdf','data.xlsx']# 可选附件}send_email(sender=config['sender'],receiver=config['receiver'],subject=config['subject'],body=config['body'],files=config['files'],password=config['password'])

使用说明:

  1. SMTP服务配置:

    • Gmail用户:
      • 启用两步验证后创建应用专用密码
      • 开启允许不够安全的应用(或使用OAuth2)
    • 企业邮箱:联系管理员获取SMTP服务器地址和端口
  2. 参数说明:

    • 多个收件人用列表:['a@example.com', 'b@example.com']
    • 附件支持常见格式(PDF/DOC/XLSX等)
  3. 安全提示:

    • 不要将密码硬编码在脚本中
    • 建议使用环境变量存储敏感信息
    • 测试时使用临时邮箱服务(如Mailtrap)

常见问题处理:

# 如遇SSL错误,可尝试修改连接方式:withsmtplib.SMTP_SSL(smtp_server,465)asserver:# 使用SSL端口server.login(sender,password)...

扩展功能:

  • 添加HTML格式正文:替换MIMEText(body, 'plain')为MIMEText(body, 'html')
  • 添加图片嵌入:使用MIMEImage并设置Content-ID

请根据您的实际邮箱服务商配置SMTP参数,并确保网络环境允许访问对应端口。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询