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

 更新时间:2018年01月23日 14:42:00   作者:伏草惟存  
下面小编就为大家分享一篇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)

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

相关文章

  • 以一段代码为实例快速入门Python2.7

    以一段代码为实例快速入门Python2.7

    这篇文章主要以一段代码为实例、简单介绍了Python2.7的各种函数和方法以及语句,来自网络上火爆的在线Python教程网站learnxinyminutes.com,需要的朋友可以参考下
    2015-03-03
  • Python数据模型与Python对象模型的相关总结

    Python数据模型与Python对象模型的相关总结

    这篇文章主要介绍了Python数据模型与Python对象模型的相关总结,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下
    2021-01-01
  • python torch.utils.data.DataLoader使用方法

    python torch.utils.data.DataLoader使用方法

    这篇文章主要介绍了python torch.utils.data.DataLoader使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • python DES加密与解密及hex输出和bs64格式输出的实现代码

    python DES加密与解密及hex输出和bs64格式输出的实现代码

    这篇文章主要介绍了python DES加密与解密及hex输出和bs64格式输出的实现代码,代码简单易懂,非常不错对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • python3使用pyqt5制作一个超简单浏览器的实例

    python3使用pyqt5制作一个超简单浏览器的实例

    下面小编就为大家带来一篇python3使用pyqt5制作一个超简单浏览器的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • Python子进程subpocess原理及用法解析

    Python子进程subpocess原理及用法解析

    这篇文章主要介绍了Python子进程subpocess原理及用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • Python数据展示之生成表格图片

    Python数据展示之生成表格图片

    这篇文章主要介绍了Python数据展示之生成表格图片,文章基于Python库的相关资料展开对主题的详细介绍,具有一定的参考价值需要的小伙伴可以参考一下
    2022-04-04
  • Sanic框架蓝图用法实例分析

    Sanic框架蓝图用法实例分析

    这篇文章主要介绍了Sanic框架蓝图用法,结合实例形式分析了Sanic框架中蓝图的功能以及路由控制中蓝图的定义、注册、简单使用方法及相关操作注意事项,需要的朋友可以参考下
    2018-07-07
  • Python数据处理的三个实用技巧分享

    Python数据处理的三个实用技巧分享

    数据处理无所不在,掌握常用技巧,事半功倍。这篇文章将使用Pandas开展数据处理分析,总结其中常用、好用的数据分析技巧,感兴趣的可以学习一下
    2022-04-04
  • 基于python神经卷积网络的人脸识别

    基于python神经卷积网络的人脸识别

    这篇文章主要为大家详细介绍了基于python神经卷积网络的人脸识别,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05

最新评论