python-邮件发送html

734 阅读2分钟

这是我参与11月更文挑战的第1天,活动详情查看:2021最后一次更文挑战

前言

写在开头,还有两个月就要年末了,也准备静下心来写点东西,也算是对自己的积累吧

python 邮件发送的方法


import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.image import MIMEImage
from email.utils import formataddr
import datetime

my_sender = 'xxxxx@qq.com'  # 发件人邮箱账号
my_pass = 'xxxxxxxxx'  # 发件人邮箱密码

my_user = ['xxx@qq.com']  # 收件人邮箱账号

mail_msg = """
"""

def send_email(filename, my_sender, my_pass, mail_msg):
    msg = MIMEMultipart()
    msg['From'] = formataddr([filename, my_sender])  # 括号里的对应发件人邮箱昵称、发件人邮箱账号
    msg['Subject'] = ""  # 邮件的主题,也可以说是标题

    msg.attach(MIMEText(mail_msg, 'html', 'utf-8'))

    server = smtplib.SMTP_SSL("smtp.exmail.qq.com", 465)  # 发件人邮箱中的SMTP服务器,端口是25 这里我用的腾讯邮箱
    server.login(my_sender, my_pass)  # 括号中对应的是发件人邮箱账号、邮箱密码
    server.sendmail(my_sender, my_user, msg.as_string())  # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
    server.quit()  # 关闭连接
    print("邮件发送成功")
    return

邮件分类

  • 第一类,邮件内容布局在整个邮箱的某个div中,如gmail、hotmai、sohu等。
  • 第二类,邮件内容布局在独立的iframe中,如163、sina等。

我们这里用的第一类方法

Html编写规则

  • 不写style标签,仅用内联样式,不要使用主流的css3样式,因为不同邮件的兼容性很差
  • 少用图片,邮件需获得许可才可以打开图片,没有载入会很丑
  • 内联样式里的float、position属性会被过滤,outlook 不支持padding与margin,使用table布局替代
  • 图片可以使用 <td background=“back.png"> 或使用 <img src=“back.png"/>
  • div模式不支持flash

了解到以上规则真心不太容易去写html页面,本人是一个后端开发者,也不太擅长去写前端页面,因此只能求助万能的百度了

功夫不负有心人终于找到了一个发送 html到 邮箱的模板网站:www.benchmarkemail.com/resources/f… 可以自由下载,然后修改里面响应的内容,将内容拼接完成放入上述代码中的 mail_msg 参数中,之后发送邮件测试,你就可以得到自己想要的内容展示形式了,更多内容还需要各位自己去探索