首页 > 编程 > Python > 正文

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

2020-01-04 16:04:36
字体:
来源:转载
供稿:网友

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 encodersfrom email.header import Headerfrom email.mime.text import MIMETextfrom email.mime.multipart import MIMEMultipartfrom email.mime.base import MIMEBasefrom email.mime.application import MIMEApplicationfrom email.utils import parseaddr, formataddrimport smtplibdef _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实现邮件的批量发送的示例代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持VEVB武林网。


注:相关教程知识阅读请移步到python教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表