Python进阶学习_发送邮件通知

导入第三方模块

与发送邮件相关的 Python 模块:

smtplib

是关于 SMTP(简单邮件传输协议)的操作模块,在发送邮件的过程中起到服务器之间互相通信的作用。

email

简单来说,即服务器之间通信的信息,包括信息头、信息主体等等。

举个简单的例子,当你登录邮箱,写好邮件后点击发送,这部分是由 SMTP 接管;而写邮件、添加附件是由 email 模块控制。

安装

pip3 install smtplib

pip3 install email

导入

import smtplib
from email.mime.text import MIMEText

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

发送纯文本形式邮件

设置邮件内容邮件标题发送人邮箱接收方邮箱等内容
设置发送格式为plain,编码utf-8

message = MIMEText(content, 'plain', 'utf-8')  # 内容, 格式, 编码

QQ 邮箱需要 SSL 认证,所以 SMTP 已经不能满足要求,而需要SMTP_SSL。

def sendTextEmail(title,info):
    content = info+'\n有座位!请尽快购票'
    title = title+'12306车票信息'  # 邮件主题
    message = MIMEText(content, 'plain', 'utf-8')  # 内容, 格式, 编码
    message['From'] = "{}".format(sender)
    message['To'] = ",".join(receivers)
    message['Subject'] = title

    try:
        # QQ 邮箱需要 SSL 认证,所以 SMTP 已经不能满足要求,而需要SMTP_SSL
        smtpObj = smtplib.SMTP_SSL(mail_host, 465)  # 启用SSL发信, 端口一般是465
        smtpObj.login(mail_user, mail_pass)  # 登录验证
        smtpObj.sendmail(sender, receivers, message.as_string())  # 发送
        print("mail has been send successfully.")
    except smtplib.SMTPException as e:
        print(e)

发送HTML形式邮件

当使用Python发送邮件信息时,所有内容都被视为简单文本。 即使在短信中包含HTML标签,它也将显示为简单的文本,HTML标签将不会根据HTML语法进行格式化。 但是,Python提供了将HTML消息作为HTML消息发送的选项。
发送电子邮件时,可以指定一个Mime版本,内容类型和发送HTML电子邮件的字符集。
发送HTML格式的邮件与发送纯文本消息的邮件不同之处就是将MIMEText_subtype设置为 html
在这里插入图片描述

# 2.使用Python发送HTML电子邮件
"""
当使用Python发送邮件信息时,所有内容都被视为简单文本。 即使在短信中包含HTML标签,它也将显示为简单的文本,HTML标签将不会根据HTML语法进行格式化。 但是,Python提供了将HTML消息作为HTML消息发送的选项。
发送电子邮件时,可以指定一个Mime版本,内容类型和发送HTML电子邮件的字符集。
发送HTML格式的邮件与发送纯文本消息的邮件不同之处就是将MIMEText中_subtype设置为 html
"""
def sendHtmlEmail(title,info):
    html = """
    <html>  
    <head></head>  
    <body>  
        <h1>12306车票信息</h1>
        <ul>
            <li>{0}</li>
        </ul>
    </body>  
    </html> 
    """.format(info)
    title = title + '12306车票信息'  # 邮件主题
    message = MIMEText(html, 'html', 'utf-8')  # 内容, 格式, 编码
    message['From'] = "{}".format(sender)
    message['To'] = ",".join(receivers)
    message['Subject'] = title

    try:
        # QQ 邮箱需要 SSL 认证,所以 SMTP 已经不能满足要求,而需要SMTP_SSL
        smtpObj = smtplib.SMTP_SSL(mail_host, 465)  # 启用SSL发信, 端口一般是465
        smtpObj.login(mail_user, mail_pass)  # 登录验证
        smtpObj.sendmail(sender, receivers, message.as_string())  # 发送
        print("mail has been send successfully.")
    except smtplib.SMTPException as e:
        print(e)

源码

# author: LiuShihao
# data: 2020/12/7 2:57 下午
# youknow: 各位老铁,我的这套代码曾经有人出价三个亿我没有卖,如今拿出来和大家分享,不求别的,只求大家免费的小红心帮忙点一点,这里谢过了。
# desc: 发送邮件

import smtplib
from email.mime.text import MIMEText


# 第三方 SMTP 服务
mail_host = "smtp.qq.com"  # SMTP服务器
mail_user = "********8@qq.com"  # 用户名
mail_pass = "****************"  # 密码(这里的密码不是登录邮箱密码,而是授权码)

sender = '********@qq.com'  # 发件人邮箱
receivers = ['*********@qq.com','********@qq.com','********@qq.com']  # 接收人邮箱 
"""
title标题:从上海前往郑州12306车票信息
info正文:
"""
# 1.使用Python发送纯文本电子邮件
def sendTextEmail(title,info):
    content = info+'\n有座位!请尽快购票'
    title = title+'12306车票信息'  # 邮件主题
    message = MIMEText(content, 'plain', 'utf-8')  # 内容, 格式, 编码
    message['From'] = "{}".format(sender)
    message['To'] = ",".join(receivers)
    message['Subject'] = title

    try:
        # QQ 邮箱需要 SSL 认证,所以 SMTP 已经不能满足要求,而需要SMTP_SSL
        smtpObj = smtplib.SMTP_SSL(mail_host, 465)  # 启用SSL发信, 端口一般是465
        smtpObj.login(mail_user, mail_pass)  # 登录验证
        smtpObj.sendmail(sender, receivers, message.as_string())  # 发送
        print("mail has been send successfully.")
    except smtplib.SMTPException as e:
        print(e)

# 2.使用Python发送HTML电子邮件
"""
当使用Python发送邮件信息时,所有内容都被视为简单文本。 即使在短信中包含HTML标签,它也将显示为简单的文本,HTML标签将不会根据HTML语法进行格式化。 但是,Python提供了将HTML消息作为HTML消息发送的选项。
发送电子邮件时,可以指定一个Mime版本,内容类型和发送HTML电子邮件的字符集。
发送HTML格式的邮件与发送纯文本消息的邮件不同之处就是将MIMEText中_subtype设置为 html
"""
def sendHtmlEmail(title,info):
    html = """
    <html>  
    <head></head>  
    <body>  
        <h1>12306车票信息</h1>
        <ul>
            <li>{0}</li>
        </ul>
    </body>  
    </html> 
    """.format(info)
    title = title + '12306车票信息'  # 邮件主题
    message = MIMEText(html, 'html', 'utf-8')  # 内容, 格式, 编码
    message['From'] = "{}".format(sender)
    message['To'] = ",".join(receivers)
    message['Subject'] = title

    try:
        # QQ 邮箱需要 SSL 认证,所以 SMTP 已经不能满足要求,而需要SMTP_SSL
        smtpObj = smtplib.SMTP_SSL(mail_host, 465)  # 启用SSL发信, 端口一般是465
        smtpObj.login(mail_user, mail_pass)  # 登录验证
        smtpObj.sendmail(sender, receivers, message.as_string())  # 发送
        print("mail has been send successfully.")
    except smtplib.SMTPException as e:
        print(e)


if __name__ == '__main__':
    sendTextEmail('从北京前往的上海','Text')

效果

发送纯文本邮件:
在这里插入图片描述
发送HTML邮件:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Liu_Shihao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值