Python实现邮件的批量发送的示例代码
作者:伏草惟存 发布时间:2023-08-09 07:47:57
标签:Python,邮件,批量,发送
1 发送文本信息
'''加密发送文本邮件'''
def sendEmail(from_addr,password,to_addr,smtp_server):
try:
msg = MIMEText('你好,来自信息化工程所的问候...', 'plain', 'utf-8') # 文本邮件
# msg = MIMEText('<html><body><h1>你好</h1>' + '<p>send by <a href="http://www.python.org" rel="external nofollow" rel="external nofollow" >信息化工程所
</a>...</p>' +'</body></html>', 'html', 'utf-8') # 网页文件
msg['From'] = _format_addr('信息化工程所 <%s>' % from_addr)
msg['To'] = _format_addr('收件人 <%s>' % to_addr)
msg['Subject'] = Header('邮件的主题:问候', 'utf-8').encode()
server = smtplib.SMTP(smtp_server, 25)
server.starttls() # 调用starttls()方法,就创建了安全连接
# server.set_debuglevel(1) # 记录详细信息
server.login(from_addr, password) # 登录邮箱服务器
server.sendmail(from_addr, [to_addr], msg.as_string()) # 发送信息
server.quit()
print("加密后邮件发送成功!")
except Exception as e:
print("发送失败:" + e)
2 发送带图片附件的邮件
'''发送带图片附件的邮件'''
def sendFileEmail(from_addr,password,to_addr,smtp_server):
try:
msg = MIMEMultipart()
msg['From'] = _format_addr('信息化工程所 <%s>' % from_addr)
msg['To'] = _format_addr('收件人 <%s>' % to_addr)
msg['Subject'] = Header('邮件的主题:问候', 'utf-8').encode()
# 邮件正文是MIMEText:
msg.attach(MIMEText('send with file...', 'plain', 'utf-8'))
# msg.attach(MIMEText('<html><body><h1>你好</h1>' + '<p>send by <img src=cid:0"></p>' +'</body></html>', 'html', 'utf-8')) # 网页文件
# 添加附件就是加上一个MIMEBase,从本地读取一个图片:
with open(r'./file/图片.png', 'rb') as f:
mime = MIMEBase('image', 'png', filename='图片.png') # 设置附件的MIME和文件名,这里是png类型:
mime.add_header('Content-Disposition', 'attachment',filename=('gbk', '', '图片.png')) # 加上必要的头信息,解决中文附件名乱码
mime.add_header('Content-ID', '<0>')
mime.add_header('X-Attachment-Id', '0')
mime.set_payload(f.read()) # 把附件的内容读进来:
encoders.encode_base64(mime) # 用Base64编码:
msg.attach(mime) # 添加到MIMEMultipart:
server = smtplib.SMTP(smtp_server, 25)
# server.set_debuglevel(1) # 记录详细信息
server.login(from_addr, password) # 登录邮箱服务器
server.sendmail(from_addr, to_addr, msg.as_string()) # 发送信息
server.quit()
print("带图片邮件发送成功!")
except Exception as e:
print("发送失败:" + e)
3 发送带图片附件的邮件
'''发送带图片附件的邮件'''
def sendFilesEmail(from_addr,password,to_addr,smtp_server):
try:
msg = MIMEMultipart()
msg['From'] = _format_addr('信息化工程所 <%s>' % from_addr)
msg['To'] = _format_addr('收件人 <%s>' % to_addr)
msg['Subject'] = Header('邮件的主题:问候', 'utf-8').encode()
# 邮件正文是MIMEText:
msg.attach(MIMEText('发送多附件邮件...', 'plain', 'utf-8'))
#---这是附件部分---
#xlsx类型附件
part = MIMEApplication(open(r'./file/foo.xlsx','rb').read())
part.add_header('Content-Disposition', 'attachment', filename="foo.xlsx")
msg.attach(part)
#jpg类型附件
part = MIMEApplication(open(r'./file/图片.png','rb').read())
part.add_header('Content-Disposition', 'attachment', filename=('gbk', '', '图片.png'))
msg.attach(part)
#pdf类型附件
part = MIMEApplication(open(r'./file/foo.pdf','rb').read())
part.add_header('Content-Disposition', 'attachment', filename="foo.pdf")
msg.attach(part)
# #mp3类型附件
# part = MIMEApplication(open('foo.mp3','rb').read())
# part.add_header('Content-Disposition', 'attachment', filename="foo.mp3")
# msg.attach(part)
server = smtplib.SMTP(smtp_server, 25,timeout=30)
# server.set_debuglevel(1) # 记录详细信息
server.login(from_addr, password) # 登录邮箱服务器
server.sendmail(from_addr, to_addr, msg.as_string()) # 发送信息
server.quit()
print("带图片邮件发送成功!")
except Exception as e:
print("发送失败:" + e)
4 完整代码
from email import encoders
from email.header import Header
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email.mime.application import MIMEApplication
from email.utils import parseaddr, formataddr
import smtplib
def _format_addr(s):
name, addr = parseaddr(s)
return formataddr((Header(name, 'utf-8').encode(), addr))
'''加密发送文本邮件'''
def sendEmail(from_addr,password,to_addr,smtp_server):
try:
msg = MIMEText('你好,来自信息化工程所的问候...', 'plain', 'utf-8') # 文本邮件
# msg = MIMEText('<html><body><h1>你好</h1>' + '<p>send by <a href="http://www.python.org" rel="external nofollow" rel="external nofollow" >
信息化工程所</a>...</p>' +'</body></html>', 'html', 'utf-8') # 网页文件
msg['From'] = _format_addr('信息化工程所 <%s>' % from_addr)
msg['To'] = _format_addr('收件人 <%s>' % to_addr)
msg['Subject'] = Header('邮件的主题:问候', 'utf-8').encode()
server = smtplib.SMTP(smtp_server, 25)
server.starttls() # 调用starttls()方法,就创建了安全连接
# server.set_debuglevel(1) # 记录详细信息
server.login(from_addr, password) # 登录邮箱服务器
server.sendmail(from_addr, [to_addr], msg.as_string()) # 发送信息
server.quit()
print("加密后邮件发送成功!")
except Exception as e:
print("发送失败:" + e)
'''发送带图片附件的邮件'''
def sendFileEmail(from_addr,password,to_addr,smtp_server):
try:
msg = MIMEMultipart()
msg['From'] = _format_addr('信息化工程所 <%s>' % from_addr)
msg['To'] = _format_addr('收件人 <%s>' % to_addr)
msg['Subject'] = Header('邮件的主题:问候', 'utf-8').encode()
# 邮件正文是MIMEText:
msg.attach(MIMEText('send with file...', 'plain', 'utf-8'))
# msg.attach(MIMEText('<html><body><h1>你好</h1>' + '<p>send by <img src=cid:0"></p>' +'</body></html>', 'html', 'utf-8')) # 网页文件
# 添加附件就是加上一个MIMEBase,从本地读取一个图片:
with open(r'./file/图片.png', 'rb') as f:
mime = MIMEBase('image', 'png', filename='图片.png') # 设置附件的MIME和文件名,这里是png类型:
mime.add_header('Content-Disposition', 'attachment',filename=('gbk', '', '图片.png')) # 加上必要的头信息,解决中文附件名乱码
mime.add_header('Content-ID', '<0>')
mime.add_header('X-Attachment-Id', '0')
mime.set_payload(f.read()) # 把附件的内容读进来:
encoders.encode_base64(mime) # 用Base64编码:
msg.attach(mime) # 添加到MIMEMultipart:
server = smtplib.SMTP(smtp_server, 25)
# server.set_debuglevel(1) # 记录详细信息
server.login(from_addr, password) # 登录邮箱服务器
server.sendmail(from_addr, to_addr, msg.as_string()) # 发送信息
server.quit()
print("带图片邮件发送成功!")
except Exception as e:
print("发送失败:" + e)
'''发送带图片附件的邮件'''
def sendFilesEmail(from_addr,password,to_addr,smtp_server):
try:
msg = MIMEMultipart()
msg['From'] = _format_addr('信息化工程所 <%s>' % from_addr)
msg['To'] = _format_addr('收件人 <%s>' % to_addr)
msg['Subject'] = Header('邮件的主题:问候', 'utf-8').encode()
# 邮件正文是MIMEText:
msg.attach(MIMEText('发送多附件邮件...', 'plain', 'utf-8'))
#---这是附件部分---
#xlsx类型附件
part = MIMEApplication(open(r'./file/foo.xlsx','rb').read())
part.add_header('Content-Disposition', 'attachment', filename="foo.xlsx")
msg.attach(part)
#jpg类型附件
part = MIMEApplication(open(r'./file/图片.png','rb').read())
part.add_header('Content-Disposition', 'attachment', filename=('gbk', '', '图片.png'))
msg.attach(part)
#pdf类型附件
part = MIMEApplication(open(r'./file/foo.pdf','rb').read())
part.add_header('Content-Disposition', 'attachment', filename="foo.pdf")
msg.attach(part)
# #mp3类型附件
# part = MIMEApplication(open('foo.mp3','rb').read())
# part.add_header('Content-Disposition', 'attachment', filename="foo.mp3")
# msg.attach(part)
server = smtplib.SMTP(smtp_server, 25,timeout=30)
# server.set_debuglevel(1) # 记录详细信息
server.login(from_addr, password) # 登录邮箱服务器
server.sendmail(from_addr, to_addr, msg.as_string()) # 发送信息
server.quit()
print("带图片邮件发送成功!")
except Exception as e:
print("发送失败:" + e)
if __name__ == '__main__':
from_addr = 'webter@tccxfw.com' # 邮箱登录用户名
password = 'TCC123' # 登录密码
to_addr = ['1943840362463@qq.com','jason1423@vip.qq.com','jason14449905@126.com'
] # 发送对象地址,可以多个邮箱
smtp_server='172.16.254.46' # 服务器地址,默认端口号25
sendEmail(from_addr,password,to_addr,smtp_server)
来源:https://www.cnblogs.com/baiboy/p/7251541.html
0
投稿
猜你喜欢
- 看到了很多关于如何读出图片的长度的高度的方法,其实都不实用,大多都是通过图片的大小来判断的,图片的种类众多,通过大小来判断难免要制造很多的代
- 一、查看定时策略是否开启show variables like '%event_scheduler%'; * on
- 问题:希望仅仅允许某个指定IP的计算机连接到SQL Server服务器,但不允许其他的客户端进行连接。解决方法如下:你可以直接在防火墙中做限
- python logging日志模块的详解日志级别日志一共分成5个等级,从低到高分别是:DEBUG INFO WARNING ERROR C
- 一、安装前准备查看数据库版本命令: mysql --versionmysql-community-common-8.0.17-1.el7.x
- 问题描述??输入一个正整数n在n*n的方阵内填入1,2,3,4…n*n,要求填成蛇形。(回旋的向中间收敛)样例输入:4样例输出:不必严格按照
- 一、Beautiful Soup库简介BeautifulSoup4 是一个 HTML/XML 的解析器,主要的功能是解析和提取 HTML/X
- JSON到字典转化:dictinfo = simplejson.loads(json_str) 输出dict类型字典到JSON转化:json
- alleen 问:下面是我制作的一菜单效果,现在的问题是当我只点击一级菜单A一次的时候,一级菜单A的背景色由绿色变成了黄色,再点击一级菜单B
- 1.前言(闲话)最近在做电磁炮,发现题目需要用到颜色跟踪,于是花了一点时间学了一下OpenMV,只学习OpenMV是远远不够的,还需要实现与
- 本文实例为大家分享了js瀑布流加载效果,动态加载图片,供大家参考,具体内容如下鼠标滚动事件,当鼠标滚动到下边,动态加载图片。1. HTML代
- 按照某一列排序d = {'A': [3, 6, 6, 7, 9], 'B': [2, 5, 8, 0, 0]
- 目录互斥机制写流程读流程恢复流程在Hadoop2.X之前,Namenode是HDFS集群中可能发生单点故障的节点,每个HDFS集群只有一个n
- 导语每日游戏更新系列——今天带大家来看看扫雷小游戏!它是许多人接触到的第一款游戏,大概也是广大办公族和无网学生无聊时消遣的最佳游戏。在那些还
- 使用cpu和gpu的区别在Tensorflow中使用gpu和cpu是有很大的差别的。在小数据集的情况下,cpu和gpu的性能差别不大。不过在
- 在开发过程中,我们有时会遇到这样的问题,将 2020-11-08T08:18:46+08:00 转成 2020-11-08 08:18:46
- 经纬度坐标转换最常见办法就是调用第三方 API,例如百度、高德地图等服务平台,提供了相应的功能接口,它们的这类技术已经非常成熟啦,准确稳定,
- 问题背景:这个问题是在爬取某夕夕商城遇到的问题,原本的方案是用selenium + chromedriver + mitmproxy开心的刷
- 代码如下:url="http://www.cidianwang.com/" wstr=getHTTPPage(
- python opencv把一张图片嵌入(叠加)到另一张图片上1、背景:最近做了个烟火生成系统的界面设计,需要将烟雾图片嵌入到任意一张图片中