Python实现邮件的批量发送
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">信息化工程所
</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, )
server.starttls() # 调用starttls()方法,就创建了安全连接
# server.set_debuglevel() # 记录详细信息
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', '')
mime.set_payload(f.read()) # 把附件的内容读进来:
encoders.encode_base64(mime) # 用Base64编码:
msg.attach(mime) # 添加到MIMEMultipart: server = smtplib.SMTP(smtp_server, )
# server.set_debuglevel() # 记录详细信息
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, ,timeout=)
# server.set_debuglevel() # 记录详细信息
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">
信息化工程所</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, )
server.starttls() # 调用starttls()方法,就创建了安全连接
# server.set_debuglevel() # 记录详细信息
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', '')
mime.set_payload(f.read()) # 把附件的内容读进来:
encoders.encode_base64(mime) # 用Base64编码:
msg.attach(mime) # 添加到MIMEMultipart: server = smtplib.SMTP(smtp_server, )
# server.set_debuglevel() # 记录详细信息
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, ,timeout=)
# server.set_debuglevel() # 记录详细信息
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)
Python实现邮件的批量发送的更多相关文章
- python SMTP邮件发送(转载)
Python SMTP发送邮件 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式. py ...
- python实现邮件发送
实例补充: #**************************利用STMP自动发送邮件******************************import smtplibsmtp = smtp ...
- Python 基于Python实现邮件发送
基于Python实现邮件发送 by:授客 QQ:1033553122 测试环境: Python版本:Python 2.7 注:需要修改mimetypes.py文件(该文件可通过文章底部的网盘分 ...
- 用Python实现邮件发送Hive明细数据
代码地址如下:http://www.demodashi.com/demo/12673.html 一.需求描述 客户需要每周周一接收特定的活动数据,生成Excel或是CSV文件,并通过邮件发送给指定接收 ...
- Python之邮件发送
Python的smtplib提供了一种很方便的途径用来发送电子邮件,它有SMTP协议进行简单的封装,可以使用SMTP对象的sendmail方法发送邮件,通过help()查看SMTP所提供的方法如下: ...
- 如何用python进行邮件发送
使用Python调用邮件服务器发送邮件,使用的协议是SMTP(Simple Mail Transfer Protocol),下图为使用TCP/IP基于SMTP发送邮件的过程示意图: SMTP协议工作原 ...
- Python 实现邮件发送功能(进阶)
上篇文章已经介绍了利用Python发送文本消息的用法,也在文末遗留了如何发送图片和附件的问题,本章主要来回答这两个问题. 本章主要包含知识点: 1. 如何将图片放到邮件主体中发送 2. 如何发送附 ...
- 20201203-5 批量发送 email【】
1-1 批量发送 email 1 from openpyxl import load_workbook 2 import smtplib 3 from email.mime.text import M ...
- 使用python发邮件
使用python发邮件 网上有很多发邮件的例子,本人在网上找了一份,稍加修改后使用 上源码 # encoding=utf-8 from email.mime.image import MIMEImag ...
随机推荐
- javafx的scene大小不能在控制器中设置
做个记录,备忘 遇到一个问题,点击提交,红色标识的VBox大小不能改变.问题如图,代码如下 点击后 fxml结构简化代码: 红色框体对应vboxMax <VBox fx:id="vbo ...
- ***使用Fiddler抓取Android安卓手机的APP请求
安装Fiddler,百度搜索Fiddler,就会有下载链接. 启动Fiddler,开始设置.点击“tools-->fiddler options”. 设置HTTPS选项.在设置过程中会有 ...
- bootstrapTable 参数说明
- yum 命令下载安装Openjdk
https://blog.csdn.net/bobo0915/article/details/80707184
- hibernate查询竟然有6种方法
hibernate查询的6种方法 1.HQL查询 2.对象化查询Criteria方法 3.动态查询DetachedCriteria 4.例子查询 5.sql查询 6.命名查询 1.HQL查询 stat ...
- bzoj1026
题意: windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. windy想知道,在A和B之间,包括A和B,总共有多少个windy数? 数据范围 A,B≤ ...
- day17--JQuery选择器
操作HTML标签的时候,我们首先要找到HTML标签的位置,然后进行操作,下面来看看集中查找标签的方法,如下: 1.Id选择器 -- Id在HTML中是唯一的,通过Id进行查找,Id ...
- Codeforces Round #441(Div.2) F - High Cry
F - High Cry 题目大意:给你n个数,让你找区间里面所有数或 起来大于区间里面最大数的区间个数. 思路:反向思维,找出不符合的区间然后用总数减去.我们找出每个数掌控的最左端 和最右端,一个数 ...
- 6-4 破碎的键盘 uva11988
基础的数组链表 用cur标记光标之前的 用last标记最后的十分巧妙 数组开的不够大会引起RE!! next[0]=0:这使得最后一项所指的为0 核心语句: next[i]=next[cur] ne ...
- Unity 之 rawimage 与image 的区别
http://www.newbieol.com/information/740.html