Python实现邮件的批量发送的示例代码


Posted in Python onJanuary 23, 2018

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)

以上这篇Python实现邮件的批量发送的示例代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python查询Mysql时返回字典结构的代码
Jun 18 Python
Python中的time模块与datetime模块用法总结
Jun 30 Python
Python中取整的几种方法小结
Jan 06 Python
Python 2与Python 3版本和编码的对比
Feb 14 Python
Python使用getpass库读取密码的示例
Oct 10 Python
Python基于贪心算法解决背包问题示例
Nov 27 Python
Python中的单行、多行、中文注释方法
Jul 19 Python
Python修改列表值问题解决方案
Mar 06 Python
利用Python实现斐波那契数列的方法实例
Jul 26 Python
python 浮点数四舍五入需要注意的地方
Aug 18 Python
深入浅析pycharm中 Make available to all projects的含义
Sep 15 Python
使用python-cv2实现Harr+Adaboost人脸识别的示例
Oct 27 Python
python实现自动发送邮件发送多人、群发、多附件的示例
Jan 23 #Python
python正则表达式面试题解答
Apr 28 #Python
Django中使用celery完成异步任务的示例代码
Jan 23 #Python
python3 发送任意文件邮件的实例
Jan 23 #Python
Python程序员面试题 你必须提前准备!(答案及解析)
Jan 23 #Python
Python实现PS图像明亮度调整效果示例
Jan 23 #Python
matplotlib绘图实例演示标记路径
Jan 23 #Python
You might like
推荐个功能齐全的发送PHP邮件类
2007/01/03 PHP
thinkphp3.0输出重复两次的解决方法
2014/12/19 PHP
PHP编写简单的App接口
2016/08/28 PHP
js,jQuery 排序的实现代码,网页标签排序的实现,标签排序
2011/04/27 Javascript
ajax不执行success回调而是执行了error回调
2012/12/10 Javascript
浅析jQuery Ajax请求参数和返回数据的处理
2016/02/24 Javascript
HTML页面,测试JS对C函数的调用简单实例
2016/08/09 Javascript
一句jQuery代码实现返回顶部效果(简单实用)
2016/12/28 Javascript
js实现字符全排列算法的简单方法
2017/05/01 Javascript
以BootStrap Tab为例写一个前端组件
2017/07/25 Javascript
静态页面实现 include 引入公用代码的示例
2017/09/25 Javascript
JS module的导出和导入的实现代码
2019/02/25 Javascript
使用layui的layer组件做弹出层的例子
2019/09/27 Javascript
详解Vue.js 作用域、slot用法(单个slot、具名slot)
2019/10/15 Javascript
go和python调用其它程序并得到程序输出
2014/02/10 Python
wxPython学习之主框架实例
2014/09/28 Python
python实现ipsec开权限实例
2014/11/11 Python
Python中设置变量作为默认值时容易遇到的错误
2015/04/03 Python
Python自动化开发学习之三级菜单制作
2017/07/14 Python
Python学习之用pygal画世界地图实例
2017/12/07 Python
Django admin美化插件suit使用示例
2017/12/12 Python
Tensorflow环境搭建的方法步骤
2018/02/07 Python
python数字图像处理之骨架提取与分水岭算法
2018/04/27 Python
DES加密解密算法之python实现版(图文并茂)
2018/12/06 Python
详解Numpy数组转置的三种方法T、transpose、swapaxes
2019/05/27 Python
Pytorch maxpool的ceil_mode用法
2020/02/18 Python
python字典和json.dumps()的遇到的坑分析
2020/03/11 Python
Giuseppe Zanotti美国官方网站:将鞋履视为高级时装般精心制作
2018/02/06 全球购物
优秀员工年终发言演讲稿
2014/01/01 职场文书
军人违纪检讨书
2014/02/04 职场文书
化工操作工岗位职责
2014/04/29 职场文书
房屋租赁协议书
2014/10/18 职场文书
导游词之蓬莱长岛
2019/12/17 职场文书
只用40行Python代码就能写出pdf转word小工具
2021/05/31 Python
解决IIS7下无法绑定https主机的问题
2022/04/29 Servers
Beekeeper Studio开源数据库管理工具比Navicat更炫酷
2022/06/21 数据库