当前位置: 首页 > news >正文

专做高中知识的网站腾讯朋友圈广告代理

专做高中知识的网站,腾讯朋友圈广告代理,全网营销推广软件,查企业哪个app最好Python邮件自动化完全指南:从基础到高级应用 电子邮件仍然是现代通信的重要方式,掌握用Python发送邮件的技能可以极大提升工作效率。本文将全面介绍如何使用Python实现邮件发送功能,涵盖多种场景和高级应用。 一、邮件协议基础 1. 核心协议…

Python邮件自动化完全指南:从基础到高级应用

电子邮件仍然是现代通信的重要方式,掌握用Python发送邮件的技能可以极大提升工作效率。本文将全面介绍如何使用Python实现邮件发送功能,涵盖多种场景和高级应用。

一、邮件协议基础

1. 核心协议对比

协议端口加密方式用途
SMTP25/587/465SSL/TLS发送邮件
POP3110/995SSL/TLS接收邮件
IMAP143/993SSL/TLS管理邮件

2. 常见邮件服务配置

MAIL_SERVERS = {'gmail': {'smtp': 'smtp.gmail.com','port': 587,'ssl_port': 465},'qq': {'smtp': 'smtp.qq.com','port': 465,'ssl_port': 465},'163': {'smtp': 'smtp.163.com','port': 25,'ssl_port': 465}
}

二、基础邮件发送

1. 使用smtplib发送纯文本邮件

import smtplib
from email.mime.text import MIMETextdef send_email(sender, password, receiver, subject, content):# 创建邮件内容msg = MIMEText(content, 'plain', 'utf-8')msg['From'] = sendermsg['To'] = receivermsg['Subject'] = subjecttry:# 连接服务器 (以QQ邮箱为例)server = smtplib.SMTP_SSL('smtp.qq.com', 465)server.login(sender, password)server.sendmail(sender, [receiver], msg.as_string())server.quit()print("邮件发送成功")except Exception as e:print(f"邮件发送失败: {e}")# 使用示例
send_email(sender='your_email@qq.com',password='your_authorization_code',  # 注意是授权码不是登录密码receiver='target@example.com',subject='Python邮件测试',content='这是一封来自Python的测试邮件'
)

2. 发送HTML格式邮件

from email.mime.text import MIMETexthtml_content = """
<html><body><h1 style="color: red;">重要通知</h1><p>您的订单已发货,<a href="https://example.com">点击查看详情</a></p><img src="cid:image1" width="200"></body>
</html>
"""msg = MIMEText(html_content, 'html', 'utf-8')

三、高级邮件功能

1. 发送带附件的邮件

from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encodersdef send_with_attachment(sender, password, receiver, subject, content, file_path):msg = MIMEMultipart()msg['From'] = sendermsg['To'] = receivermsg['Subject'] = subject# 添加正文msg.attach(MIMEText(content, 'plain', 'utf-8'))# 添加附件with open(file_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="{file_path.split("/")[-1]}"')msg.attach(part)# 发送邮件(代码同前)

2. 发送带嵌入图片的HTML邮件

from email.mime.image import MIMEImagemsg = MIMEMultipart()
msg.attach(MIMEText(html_content, 'html', 'utf-8'))# 嵌入图片
with open('logo.png', 'rb') as img:image = MIMEImage(img.read())image.add_header('Content-ID', '<image1>')msg.attach(image)

四、安全与认证

1. 获取邮箱授权码

邮箱服务获取方式
QQ邮箱设置→账户→POP3/IMAP服务→生成授权码
163邮箱设置→POP3/SMTP/IMAP→客户端授权密码
Gmail账号→安全性→应用专用密码

2. 使用环境变量保护凭证

import os
from dotenv import load_dotenvload_dotenv()  # 加载.env文件sender = os.getenv('EMAIL_USER')
password = os.getenv('EMAIL_PASSWORD')

五、批量发送与模板

1. 使用Jinja2模板引擎

from jinja2 import Templatetemplate = Template("""
尊敬的{{ name }}:
您的订单{{ order_id }}已于{{ ship_date }}发货
""")content = template.render(name="张三",order_id="20230815001",ship_date="2023-08-16"
)

2. 批量发送邮件

import pandas as pd# 从Excel读取收件人列表
df = pd.read_excel('contacts.xlsx')for _, row in df.iterrows():personalized_content = f"""尊敬的{row['姓名']}:您的{row['产品']}购买申请已受理"""send_email(sender=sender,password=password,receiver=row['邮箱'],subject='购买确认通知',content=personalized_content)

六、错误处理与日志

1. 增强错误处理

try:server = smtplib.SMTP_SSL('smtp.qq.com', 465)server.login(sender, password)server.sendmail(sender, [receiver], msg.as_string())
except smtplib.SMTPAuthenticationError:print("认证失败,请检查用户名和授权码")
except smtplib.SMTPConnectError:print("无法连接到服务器")
except smtplib.SMTPException as e:print(f"邮件发送错误: {e}")
finally:server.quit() if 'server' in locals() else None

2. 添加发送日志

import logginglogging.basicConfig(filename='email.log',level=logging.INFO,format='%(asctime)s - %(levelname)s - %(message)s'
)logging.info(f"发送邮件给{receiver},主题:{subject}")

七、替代方案与扩展

1. 使用yagmail简化操作

import yagmailyag = yagmail.SMTP(user='your_email@gmail.com',password='your_password',host='smtp.gmail.com'
)yag.send(to='target@example.com',subject='Yagmail测试',contents=['正文内容', '/本地路径/附件.pdf']
)

2. 使用Flask-Mail集成到Web应用

from flask import Flask
from flask_mail import Mail, Messageapp = Flask(__name__)
app.config['MAIL_SERVER'] = 'smtp.163.com'
app.config['MAIL_PORT'] = 465
app.config['MAIL_USE_SSL'] = True
app.config['MAIL_USERNAME'] = 'your_email@163.com'
app.config['MAIL_PASSWORD'] = 'your_password'mail = Mail(app)@app.route('/send')
def send():msg = Message('Flask邮件测试',sender='your_email@163.com',recipients=['target@example.com'])msg.body = "这是邮件正文"mail.send(msg)return "邮件已发送"

八、最佳实践

  1. 频率控制:避免被识别为垃圾邮件

    • 普通邮箱:每分钟不超过1封
    • 企业邮箱:每分钟不超过10封
  2. 内容优化

    • 避免使用垃圾邮件敏感词(“免费”、"赢取"等)
    • 平衡文本和图片比例
  3. DKIM/SPF设置

    # SPF记录示例
    example.com. TXT "v=spf1 include:spf.mail.qq.com -all"# DKIM记录(需从邮件服务商获取)
    mail._domainkey.example.com. TXT "k=rsa; p=..."
    

通过本文,您已经掌握了从基础到高级的Python邮件发送技术。无论是简单的通知邮件,还是复杂的批量营销邮件,现在都可以轻松实现。记得在实际应用中遵守相关法律法规和邮件服务商的使用政策。

http://www.dtcms.com/a/593269.html

相关文章:

  • 「日拱一码」146 SVR调参注意事项与技巧
  • 谷歌云大规模分布式存储系统:定义、特性与技术挑战解析
  • 山东省住房和城乡建设厅服务网站百度网络公司
  • 网站平台需要做无形资产吗 怎么做网站里做个子网页怎么做
  • 在 AEDT 中对用于模拟的作业进行排队
  • FastAPI × Loguru:从“能跑”到“可运维”的日志实战
  • 怎样设立网站网站开发 策划是干嘛的
  • 【大数据技术04】数据可视化
  • qml 网站开发宝塔网站301重定向怎么做
  • 《数据结构:从0到1》-09-队列
  • 安徽建站模板广州市网站制作
  • Vue 项目实战《尚医通》,完成医院科室业务,页面自动滚动到指定位置,笔记22
  • 国产化Word处理控件Spire.Doc教程:使用Java将RTF文件转换为PDF的全面教程
  • Redis 生产环境安全基线配置指南:从风险分析到实操加固
  • java使用poi-tl模版+vform自定义表单生成word,使用LibreOffice导出为pdf,批量下载为压缩文件
  • 济南专业的网站建设公司wordpress快速发布
  • 帝国cms手机网站模板保洁公司开发app
  • 【必收藏】RAG技术全景图:从NaiveRAG到AgenticRAG的演进与工程实践指南
  • 构建AI智能体:九十、图解大模型核心三大件 — 输入编码、注意力机制与前馈网络层
  • 任意模型×任意加速器×任意云,红帽用开放混合解锁企业AI深水区
  • DETR:新一代目标检测范式综述
  • AI浏览器通过模拟人类用户行为绕过付费墙
  • HMSiR-Amide-BG,是一种酶靶向荧光标记分子
  • 大模型-详解 Vision Transformer (ViT) (2)
  • 汽车之家联合HarmonyOS SDK,深度构建鸿蒙生态体系
  • 福州网站设计哪里建站wordpress鼠标停留
  • 2025年IEEE TEVC SCI1区TOP,多解旅行商问题的层次遗传算法,深度解析+性能实测
  • 企业级即时通讯和涉密即时通讯有哪些区别?
  • 在VUE内使用beforeinstallprompt接口安装PWA添加到桌面
  • CMMI证书(更准确地说,是CMMI评估等级证书)对于一个组织,特别是软件和研发类组织来说,作用是多方面的、战略性的。