python email模块自动化操作邮件

1.发送普通文本邮件

from email.message import EmailMessage
import smtplib
import keyring
password = keyring.get_password("yagmail", "960xxxx@qq.com") #关于keyring的使用可以参考https://www.cnblogs.com/panwenbin-logs/p/19111506


# 创建邮件对象
msg = EmailMessage()
msg['From'] = '960xxxx@qq.com'
msg['To'] = 'panxxx@chxxxxxxding.com' #批量群发 msg['To'] = ', '.join(['a@example.com', 'b@example.com'])
msg['Subject'] = '每日提醒'
msg.set_content('你好,这是今天的日报,请查收!')
msg.set_charset('utf-8') #防止乱码
# 发送邮件
try:
    with smtplib.SMTP_SSL('smtp.qq.com', 465) as smtp:
        #smtp.set_debuglevel(1)  # 开启调试模式
        #code, response = smtp.ehlo()
        # print(f"EHLO响应: {code} - {response}")
        smtp.login('960xxx@qq.com', password)
        smtp.send_message(msg)
        print("✅ 邮件发送成功!")
        smtp.close()
except Exception as e:
    print(f"❌ 邮件发送失败: {e}")

2.创建HTML格式邮件

msg = EmailMessage()
msg['From'] = '960xxx@qq.com'
msg['To'] = 'panxxx@cxxxding.com'
msg['Subject'] = '每日提醒'
msg.set_content('文本内容')
msg.add_alternative("""
<html>
  <body>
    <h1 style="color:blue;">这是HTML版本日报</h1>
    <p>点击 <a href="http://example.com">查看详情</a></p>
  </body>
</html>
.......
""", subtype='html')  #不要忘记subtype='html'指定格式,不添加则内容变为附件内容

3.创建带附件邮件  

msg = EmailMessage()
msg['From'] = '960xxx@qq.com'
msg['To'] = 'panxxx@cxxxxxlding.com'
msg['Subject'] = '每日提醒'
msg.set_content('文本内容')

with open('test.png','rb') as f:
    msg.add_attachment(f.read(),maintype='application',subtype='PNG',filename='test.png')

  

 

  

posted @ 2025-09-26 16:18  百衲本  阅读(13)  评论(0)    收藏  举报
cnblogs_post_body { color: black; font: 0.875em/1.5em "微软雅黑" , "PTSans" , "Arial" ,sans-serif; font-size: 15px; } cnblogs_post_body h1 { text-align:center; background: #333366; border-radius: 6px 6px 6px 6px; box-shadow: 0 0 0 1px #5F5A4B, 1px 1px 6px 1px rgba(10, 10, 0, 0.5); color: #FFFFFF; font-family: "微软雅黑" , "宋体" , "黑体" ,Arial; font-size: 23px; font-weight: bold; height: 25px; line-height: 25px; margin: 18px 0 !important; padding: 8px 0 5px 5px; text-shadow: 2px 2px 3px #222222; } cnblogs_post_body h2 { text-align:center; background: #006699; border-radius: 6px 6px 6px 6px; box-shadow: 0 0 0 1px #5F5A4B, 1px 1px 6px 1px rgba(10, 10, 0, 0.5); color: #FFFFFF; font-family: "微软雅黑" , "宋体" , "黑体" ,Arial; font-size: 20px; font-weight: bold; height: 25px; line-height: 25px; margin: 18px 0 !important; padding: 8px 0 5px 5px; text-shadow: 2px 2px 3px #222222; } cnblogs_post_body h3 { background: #2B6695; border-radius: 6px 6px 6px 6px; box-shadow: 0 0 0 1px #5F5A4B, 1px 1px 6px 1px rgba(10, 10, 0, 0.5); color: #FFFFFF; font-family: "微软雅黑" , "宋体" , "黑体" ,Arial; font-size: 18px; font-weight: bold; height: 25px; line-height: 25px; margin: 18px 0 !important; padding: 8px 0 5px 5px; text-shadow: 2px 2px 3px #222222; } 回到顶部 博客侧边栏 回到顶部 页首代码 回到顶部 页脚代码