IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Python用SMTP自动发送邮件email -> 正文阅读

[系统运维]Python用SMTP自动发送邮件email

作者:recommend-item-box type_blog clearfix

发送邮件是一个常见的需求,一般会采用SMTP代理的形式,进行邮件自动发送

在发送邮件时,主要有如下准备工作

????????① 发件人、收件人、抄送人

????????② 发件人邮箱授权码

????????③ 邮件主题

????????④ 邮件正文

????????⑤ 附件

发送邮件上,由浅到深,可以大致分为以下5种格式

????????① 只有正文;

? ? ? ? ②?正文+html+超链接;

? ? ? ? ③?正文+正文图片;

? ? ? ? ④?正文+附件;

? ? ? ? ⑤?正文+html+可跳转url+正文图片+附件(这里会规范写一下)

其中,授权码的获取这里需要各自操作一下,示例如:QQ邮箱的授权码,需要在电脑上登录自己的QQ邮箱,在“设置” - “账户” - “POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务”中,开启相关服务,获取授权码

如图所示操作,点击生成授权码,发送短信即可获取到SMTP邮件代理授权码,将发送人邮箱授权码复制下来以便后面SMTP代理使用


?

接下来用QQ邮箱,示例自动发送以上类型的邮件(注意:带邮件和不带邮件中,实例不一样)

1、发送只有文本正文的邮件

# 发送只有文本正文的邮件
import smtplib
from email.mime.text import MIMEText

# 配置邮件信息
email = {
        'from': '111@qq.com',
        'to': ['222@qq.com'],
        'cc': ['333@qq.com'],
        'subject': '自动发送邮件',
        'license': '这里是你们的授权码',
        'text': '示例:发送只含有文本的邮件' ,
    }

# 创建一个文本实例
# 正文
msg = MIMEText(email['text'], 'plain', 'utf-8')
# 发件人
msg['From'] = email['from']
# 收件人
msg['To'] = ','.join(email['to'])
# 抄送
msg['Cc'] = ','.join(email['cc'])
# 邮件标题
msg['Subject'] = email['subject']

# 登录邮箱服务器
email_server = smtplib.SMTP_SSL('smtp.qq.com', 465)
email_server.login(email['from'], email['license'])

# 发送邮件
try:
    email_server.sendmail(email['from'], email['to'], msg.as_string())
    print('发送成功')
except:
    print('Error:发送失败')

2、发送包含正文、超链接的邮件

# 发送包含正文、可跳转URL链接的邮件
import smtplib
from email.mime.text import MIMEText

# 配置邮件信息
email = {
        'from': '111@qq.com',
        'to': ['222@qq.com'],
        'cc': ['333@qq.com'],
        'subject': '自动发送邮件',
        'license': '这里是你们的授权码',
        'text': '示例:发送只含有文本的邮件' ,
        'html': '<p>欢迎进入我的博客:&nbsp&nbsp<a href="https://blog.csdn.net/wang1qqqq">点击进入</a></p>',
    }

# 创建一个文本实例
# 添加文本(可有可无)
msg = MIMEText(email['text'], 'plain', 'utf-8')
# 添加带url的html文本链接
msg_html = MIMEText(email['html'], 'html', 'utf-8')
msg.attach(msg_html)
# 发件人
msg['From'] = email['from']
# 收件人
msg['To'] = ','.join(email['to'])
# 抄送
msg['Cc'] = ','.join(email['cc'])
# 邮件标题
msg['Subject'] = email['subject']

# 登录邮箱服务器
email_server = smtplib.SMTP_SSL('smtp.qq.com', 465)
email_server.login(email['from'], email['license'])

# 发送邮件
try:
    email_server.sendmail(email['from'], email['to'], msg.as_string())
    print('发送成功')
except:
    print('Error:发送失败')

3、发送包含正文、图片的邮件

# 发送包含正文、图片的邮件
import smtplib
from email.mime.image import MIMEImage
from email.mime.text import MIMEText

# 配置邮件信息
email = {
        'from': '111@qq.com',
        'to': ['222@qq.com'],
        'cc': ['333@qq.com'],
        'subject': '自动发送邮件',
        'license': '这里是你们的授权码',
        'text': '示例:发送只含有文本的邮件' ,
    }

# 创建一个文本实例
# 添加文本(可有可无)
msg = MIMEText(email['text'], 'plain', 'utf-8')
# 插入图片html,命名图片id为i_image
img_html = '<p><img src="cid:i_image"></p>'
msg.attach(MIMEText(img_html, 'html', 'utf-8'))
# 打开图片
img_open = open(i_attach, 'rb')
img = MIMEImage(img_open.read())
# 插入图片
img.add_header('Content-ID', '<i_image>')
msg.attach(img)
# 关闭图片
img_open.close()


# 发件人
msg['From'] = email['from']
# 收件人
msg['To'] = ','.join(email['to'])
# 抄送
msg['Cc'] = ','.join(email['cc'])
# 邮件标题
msg['Subject'] = email['subject']

# 登录邮箱服务器
email_server = smtplib.SMTP_SSL('smtp.qq.com', 465)
email_server.login(email['from'], email['license'])

# 发送邮件
try:
    email_server.sendmail(email['from'], email['to'], msg.as_string())
    print('发送成功')
except:
    print('Error:发送失败')

4、发送包含正文、附件的邮件

# 发送包含正文、附件的邮件
import smtplib
from email.mime.image import MIMEImage
from email.mime.text import MIMEText

# 配置邮件信息
email = {
        'from': '111@qq.com',
        'to': ['222@qq.com'],
        'cc': ['333@qq.com'],
        'subject': '自动发送邮件',
        'license': 'autmmyrqmqpcbace',
        'text': '示例:发送只含有文本的邮件' ,
    }

# 创建一个带附件的示例
msg = MIMEMultipart()
# 打开图片
img_open = open(i_attach, 'rb')
# 设置图片信息
att = MIMEText(img_open.read(), 'base64', 'utf-8')
att['Content-Type'] = 'application/octet-stream'
# 添加到附件
att.add_header('Content-Disposition', 'attachment', filename='疫情大数据.png')
msg.attach(att)
# 关闭图片
img_open.close()


# 发件人
msg['From'] = email['from']
# 收件人
msg['To'] = ','.join(email['to'])
# 抄送
msg['Cc'] = ','.join(email['cc'])
# 邮件标题
msg['Subject'] = email['subject']

# 登录邮箱服务器
email_server = smtplib.SMTP_SSL('smtp.qq.com', 465)
email_server.login(email['from'], email['license'])

# 发送邮件
try:
    email_server.sendmail(email['from'], email['to'], msg.as_string())
    print('发送成功')
except:
    print('Error:发送失败')

5、发送包含正文、html、超链接、正文图片、附件的邮件

# 发送包含正文、html、可点击url、正文图片、附件的邮件
import smtplib
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText


def email_header(email):
    # 设置邮件信息
    # 无附件邮件使用:msg = MIMEText(email['text'], 'plain', 'utf-8')
    # MIMEMultipart:创建一个带附件的实例
    msg = MIMEMultipart()
    # 可以自定义发件人抬头(不理想,QQ邮箱列表上看不到发件人名称):Header('发送机器人', 'utf-8')
    msg['From'] = email['from']
    msg['To'] = ','.join(email['to'])
    msg['Cc'] = ','.join(email['cc'])
    msg['Subject'] = email['subject']
    return msg


def email_body(email, msg):
    # 添加文本(如果有html,文本会被覆盖)
    # msg.attach(MIMEText(email['text'], 'plain', 'utf-8'))
    # 添加html
    msg.attach(MIMEText(email['text'], 'html', 'utf-8'))
    msg.attach(MIMEText(email['html'], 'html', 'utf-8'))

    for i_attach in email['attach']:
        # 添加正文图片(图片需要在html的情况下使用)
        img_html = '<p><img src="cid:i_image"></p>'
        msg.attach(MIMEText(img_html, 'html', 'utf-8'))
        img_open = open(i_attach, 'rb')
        img = MIMEImage(img_open.read())
        img.add_header('Content-ID', '<i_image>')
        msg.attach(img)
        # 关闭图片
        img_open.close()


def email_att(email, msg):
    # 添加附件
    for i_attach in email['attach']:
        img_open = open(i_attach, 'rb')
        att = MIMEText(img_open.read(), 'base64', 'utf-8')
        att['Content-Type'] = 'application/octet-stream'
        att.add_header('Content-Disposition', 'attachment', filename='中国疫情大数据.png')
        msg.attach(att)

        # 关闭图片
        img_open.close()


def email_login(email):
    # 登录邮箱服务器
    email_server = smtplib.SMTP_SSL('smtp.qq.com', 465)
    email_server.login(email['from'], email['license'])
    return email_server


def email_send(email, email_server):
    # 发送邮件
    try:
        email_server.sendmail(email['from'], email['to'], msg.as_string())
        print('发送成功')
    except:
        print('Error:发送失败')

if __name__ == '__main__':
    # 配置附件路径
    img_path = 'auto_img/'
    # 定义发送邮件信息
    email = {
        'from': '111@qq.com',
        'to': ['222@qq.com'],
        'cc': ['333@qq.com'],
        'subject': '每日疫情数据推送',
        'license': '这里是你们的授权码',
        'text': '每日疫情数据推送:' + str(datetime.datetime.now().strftime("%Y-%m-%d")),
        'html': '<p>欢迎进入我的博客:&nbsp&nbsp<a href="https://blog.csdn.net/wang1qqqq">点击进入</a></p>',
        'attach': [img_path + '中国疫情大数据.png']
    }
    # 配置收件人、发件人、抄送人、标题
    msg = email_header(email)
    # 配置正文内容
    email_body(email, msg)
    # 配置附件
    email_att(email, msg)
    # 登录邮件服务器
    email_server = email_login(email)
    # 发送邮件
    email_send(email, email_server)

如上,就是自动发送邮件的示范,可以根据自身情况,选择发送带正文、html、超链接、正文图片、附件的邮件。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-04-22 19:19:35  更:2022-04-22 19:23:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 20:43:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码