干货 | 解放双手,用Python实现自动发送邮件

使用Python实现自动化邮件发送,可以让你摆脱繁琐的重复性业务,可以节省非常多的时间。

Python有两个内置库:smtplibemail,能够实现邮件功能,smtplib库负责发送邮件,email库负责构造邮件格式和内容。

邮件发送需要遵守SMTP协议,Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。

1、先导入相关的库和方法

import smtplib
import email
# 负责构造文本
from email.mime.text import MIMEText
# 负责构造图片
from email.mime.image import MIMEImage
# 负责将多个对象集合起来
from email.mime.multipart import MIMEMultipart
from email.header import Header

2、设置邮箱域名、发件人邮箱、邮箱授权码、收件人邮箱

# SMTP服务器,这里使用163邮箱
mail_host = "smtp.163.com"
# 发件人邮箱
mail_sender = "******@163.com"
# 邮箱授权码,注意这里不是邮箱密码,如何获取邮箱授权码,请看本文最后教程
mail_license = "********"
# 收件人邮箱,可以为多个收件人
mail_receivers = ["******@qq.com","******@outlook.com"]

3、构建MIMEMultipart对象代表邮件本身,可以往里面添加文本、图片、附件等

mm = MIMEMultipart('related')

4、设置邮件头部内容

# 邮件主题
subject_content = """Python邮件测试"""
# 设置发送者,注意严格遵守格式,里面邮箱为发件人邮箱
mm["From"] = "sender_name<******@163.com>"
# 设置接受者,注意严格遵守格式,里面邮箱为接受者邮箱
mm["To"] = "receiver_1_name<******@qq.com>,receiver_2_name<******@outlook.com>"
# 设置邮件主题
mm["Subject"] = Header(subject_content,'utf-8')

5、添加正文文本

# 邮件正文内容
body_content = """你好,这是一个测试邮件!"""
# 构造文本,参数1:正文内容,参数2:文本格式,参数3:编码方式
message_text = MIMEText(body_content,"plain","utf-8")
# 向MIMEMultipart对象中添加文本对象
mm.attach(message_text) 

6、添加图片

# 二进制读取图片
image_data = open('a.jpg','rb')
# 设置读取获取的二进制数据
message_image = MIMEImage(image_data.read())
# 关闭刚才打开的文件
image_data.close()
# 添加图片文件到邮件信息当中去
mm.attach(message_image)

7、添加附件(excel表格)

# 构造附件
atta = MIMEText(open('sample.xlsx', 'rb').read(), 'base64', 'utf-8')
# 设置附件信息
atta["Content-Disposition"] = 'attachment; filename="sample.xlsx"'
# 添加附件到邮件信息当中去
mm.attach(atta)

8、发送邮件

# 创建SMTP对象
stp = smtplib.SMTP()
# 设置发件人邮箱的域名和端口,端口地址为25
stp.connect(mail_host, 25)
# set_debuglevel(1)可以打印出和SMTP服务器交互的所有信息
stp.set_debuglevel(1)
# 登录邮箱,传递参数1:邮箱地址,参数2:邮箱授权码
stp.login(mail_sender,mail_license)
# 发送邮件,传递参数1:发件人邮箱地址,参数2:收件人邮箱地址,参数3:把邮件内容格式改为str
stp.sendmail(mail_sender, mail_receivers, mm.as_string())
print("邮件发送成功")
# 关闭SMTP对象
stp.quit()

结果
看看邮箱接收到来自python的邮件长什么样:

附:如何设置邮箱授权码

本文测试发送邮箱为163邮箱,可按如下步骤获取邮箱授权码

第一步:登陆网页163邮箱,找到设置并打开

第二步:点击设置中的客户端授权密码

第三步:点击开启,并按提示设置你的授权密码

原文地址:https://www.cnblogs.com/zhuwjwh/p/12096032.html

时间: 2024-10-10 18:38:04

干货 | 解放双手,用Python实现自动发送邮件的相关文章

python selenium-7自动发送邮件

https://jingyan.baidu.com/article/647f0115b78f8d7f2148a8e8.html 1.发送HTML格式的邮件 import smtplib from email.mime.text import MIMEText from email.header import Header #发送邮箱服务器 smtpserver = "smtp.126.com" #发送邮箱用户/密码 user = "发送邮箱@126.com" pas

使用python自动发送邮件

最近研究邮件透明加密技术,,需要使用脚本自动发送邮件测试,于是使用python写了一个小程序.程序可以自动选择不定数量的附件,随机选择主题,随机选择正文,然后自由组合发送,非常适合邮件方面的测试任务.顺便说一下邮件透明加密技术和市场上的其他邮件加密技术相比再部署上非常简单."透明"二字就是部署不改变用户原有习惯,目前的产品有天御云安的隐密邮,网址是https://mail.tyyunan.com/, 各位感兴趣的可以看一下. # -*- coding: utf-8 -*- __vers

@半条_虫 淘宝天猫自动批量打旗帜插件,精准打旗解放双手

/* * * 淘宝天猫批量打旗帜工具 Beta 1.0.0.0 * Release date: * Author : 半条虫(466814195) * Keywords : Etsoftware 半条虫(466814195) rimke 39doo 39度 * Description : 本脚本功能由EtSoftWare团队研发,仅供学习不得用于商业用途. * Blog : http://rimke.blog.163.com/ * Website : http://www.39doo.com/

利用Python自动发送邮件

# -*- coding:utf-8 -*-from email.mime.text import MIMETextfrom email.header import Headerimport smtplib def send_mail(file_new): f = open(file_new,'rb') mail_body = f.read() f.close() msg = MIMEText(mail_body,'html','utf-8')  msg['Subject'] = Header(

Python 自动发送邮件

简单邮件传输协议(SMTP)是一种协议,用于在邮件服务器之间发送电子邮件和路由电子邮件.Python提供smtplib模块,该模块定义了一个SMTP客户端会话对象,可用于使用SMTP或ESMTP侦听器守护程序向任何互联网机器发送邮件. SMTP通讯的基本流程可以概括为以下几点: 1.连接SMTP服务器 2.登陆用户名和密码 3.发送指定邮件内容 4.退出SMTP连接 一.发送纯文本格式邮件 1 #coding:utf-8 2 import sys 3 reload(sys) 4 sys.setd

写完批处理脚本,再写个Gradle脚本,解放双手

前言 上一篇写个批处理来帮忙干活---遍历&字符串处理中,我们已经学习如何写批处理脚本来帮我们做一些简单的重复性工作,本篇继续来学习如何用 Gradle 写脚本,让它也来帮我们干活 Gradle 脚本 需求场景跟上一篇一样,只是需要脚本能够帮我们遍历某个目录下的文件,然后分别针对每个文件执行 java 命令,再输出新的命名格式的文件即可,因此脚本涉及的方面仍然是:文件夹的遍历操作.字符串处理.执行 java 命令.下面开始学习吧: 1. 遍历指定文件夹下的文件 1.1 files() 命令: f

PXE高效批量装机和Kickstart无人值守技术(从此解放双手)

一.PXE概述: ?PXE,Pre-boot-eXcution Environment?预启动执行环境,在操作系统之前运行?可用于远程安装.构建无盘工作立?服务端?运行DHCP服务,用来分配地址.定位引导程序?运行TFTP服务器,提供引导程序下载?客户端?网卡支持PXE协议?主板支持网络启动 二.PXE的优点: ?规模化:同时配多台服务器?自动化:安装系统,配置各种服务?远程实现:不需要光盘,U盘等安装介质 三.服务部署要点: 1.DHCP服务(自动分配IP地址 定位引导文件) next-ser

python IDLE 自动提示功能

\Python27\Lib\idlelib\目录下 config-extensions.def文件修改等待时间 [AutoComplete] enable=1 popupwait=2000(2000表示2秒,修改为0) AutoComplete.py文件修改提示模块 import os import sys import string 在后面加载待提示的模块(import方式) 如: import urllib import urllib2 import re import cookielib

python smtplib 模块发送邮件

发送邮件是大家经常碰到的,接下来看一下使用 python smtplib模块发送邮件,好了废话不多说,直接上代码: import smtplib,sys,os,timefrom email.mime.text import MIMEText import newreportdef send_mail(me,tomail,sub,content):     #要发给谁,可以发送多个人    mailto_list = [tomail+';']    #设置服务器,用户名.口令以及邮箱的后缀