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

yipeiwu_com5年前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实现邮件的批量发送的示例代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

Pycharm取消py脚本中SQL识别的方法

Pycharm取消py脚本中SQL识别的方法

Pycharm默认可以识别py脚本中的SQL语句,本身很不错,但当SQL拼接时就显示的代码特别难看,找了好久,终于知道怎么关闭SQL识别功能了。 如下图,把勾去掉就可以了。 以上这篇P...

python微信跳一跳系列之棋子定位颜色识别

python微信跳一跳系列之棋子定位颜色识别

python微信跳一跳,前言 这是python玩跳一跳系列博文中一篇,主要内容是用颜色识别的方法来进行跳跳小人的定位。 颜色识别 通过观察,我们可以发现,尽管背景和棋子在不停的变化,但...

Django中间件基础用法详解

前言 django的中间件可以在视图函数执行前执行,比如登陆验证、日志记录等,下面简单说明一下中间件的基础用法,主要为笔者学习时的笔记 1. 在django项目文件夹下创建一个用于存放中...

Pandas标记删除重复记录的方法

Pandas提供了duplicated、Index.duplicated、drop_duplicates函数来标记及删除重复记录 duplicated函数用于标记Series中的值、Da...

itchat接口使用示例

有关itchat接口的知识,小编是初步学习,这里先给大家分享一段代码用法示例。 sudo pip3 install itchat 今天用了下itchat接口,从url=”https://...