Python实现自动发送邮件

一、邮件包含的元素

(1)邮件头部:发件人、收件人、主题

(2)邮件正文(文字、表格、图片等)、附件

(3)发件人信息及备注信息

二、python代码

(1)模块导入

# pandas格式化数据
import pandas as pd

# smtp邮件传输协议
import smtplib

# 负责构造文本,创建一个 HTML 格式的邮件正文
from email.mime.text import MIMEText
from email.header import Header

# 发送邮件,负责将多个对象集合起来
from email.mime.multipart import MIMEMultipart

# 读入文件
from pathlib import Path

(2)构造邮件头部信息

# 构造邮件头部
message = MIMEMultipart()
message['From'] = 'XX.com'
message['To'] = 'XX.com'
message['Subject'] ='测试邮件'

(3)构造邮件正文

#邮件正文开头
head_text = '''<p style="font-size: 16px; color: blue;">您好:</p>
               <p style="font-size:18px;text-indent:2em;">这里是一段测试样例。</p>
            '''


#正文中加入表格
# 读入csv文件路径
path = Path(r'email_test.csv')

# 读取文件,并修改表格头
tables_data = pd.read_csv(path, encoding="UTF-8").rename(columns={"date": "日期", "flow": "流量"})

#表格样式
css_table_style = """
<style>
   #customers {
      font-family:"Arial", Trebuchet MS, Helvetica, sans-serif;
      font-size: 14px;
      border-collapse: collapse;
      width: 50%;
    }

    #customers td, #customers th {
      border: 1px solid #ddd;
      padding: 3px;
      text-align: center;
    }

    #customers tr:nth-child(even){background-color: #f2f2f2;}

    #customers tr:hover {background-color: #ddd;}

    #customers th {
      padding-top: 12px;
      padding-bottom: 12px;
      text-align: center;
      background-color: #4CAF50;
      color: white;
    }
</style>
<body>
"""

# 把表格转化为HTML格式
css_table_body = tables_data.to_html(index=False, table_id="customers")
css_table_end = '''\n</body>'''
table_messages = css_table_style+css_table_body+css_table_end



# 发件人相关信息
remarks = """<br />
            <p>&nbsp; 此邮件是通过程序自动发送,请勿单独回复!<br>&nbsp; 若对邮件内容存有疑问,请邮件通知发件人。</p>"""

information = """<br /><br />
                <p><span style="color:#CCEEFF;">————————————————</span><br />
                <span style="font-size:24px;color:#00FF00;font-family:"黑体";>如有疑问,请与我联系!</span></p>
                <p><span style="font-size:30px;color:navy;font-family:"黑体";">XXX</span>



# 将邮件正文的各部分组合在一起
theBody = MIMEText(head_text + table_messages + remarks + information, _subtype='html', _charset='utf-8')
message.attach(theBody)

(4)发送邮件

# 发送邮件
print("开始测试 >>>")
try:
    smtp = smtplib.SMTP()
    smtp.connect('smtp.exmail.qq.com')
    smtp.login(username, password)
    smtp.sendmail(sender, main_receivers, message.as_string())
    smtp.quit()
except smtplib.SMTPException as e:
    print(e)

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值