###背景
最近在做监控时需要使用smtp发送群邮件,但使用python smtp时遇到一个很坑的地方,刚刚越过,所以记录一下

直接上代码:

def send_mail(server, fro, to, subject, text, files=[]): assert type(server) == dict  assert type(files) == list msg = MIMEMultipart() msg['From'] = fro msg['Subject'] = subject msg['To'] = to                                      //注意这里,不是要发的用户,只是在邮件中显示的收件人信息msg['Date'] = formatdate(localtime=True) msg.attach(MIMEText(text,'html','utf-8'))msg["Accept-Language"]="zh-CN"msg["Accept-Charset"]="ISO-8859-1,utf-8" for file in files: part = MIMEBase('application', 'octet-stream') #'octet-stream': binary data part.set_payload(open(file, 'rb').read())encoders.encode_base64(part) part.add_header('Content-Disposition', 'attachment; filename="%s"' % os.path.basename(file)) msg.attach(part) import smtplib smtp = smtplib.SMTP(server['name']) smtp.login(server['user'], server['passwd']) to = to.strip(',').split(',')                              //注意这里,用的是用户列表而不是字符串,这里是真正的用户列表smtp.sendmail(fro, to, msg.as_string()) smtp.close()

查明原因如下:

The problem is that SMTP.sendmail and email.MIMEText need two different things.

email.MIMEText sets up the “To:” header for the body of the e-mail. It is ONLY used for displaying a result to the human being at the other end, and like all e-mail headers, must be a single string. (Note that it does not actually have to have anything to do with the people who actually receive the message.)

SMTP.sendmail, on the other hand, sets up the “envelope” of the message for the SMTP protocol. It needs a Python list of strings, each of which has a single address.

So, what you need to do is COMBINE the two replies you received. Set msg‘To’ to a single string, but pass the raw list to sendmail.

python 使用smtp发送群邮件相关推荐

  1. oracle 发的邮件qq,python基于SMTP发送QQ邮件

    python基于SMTP发送QQ邮件,供大家参考,具体内容如下 第一步: 1.打开qq邮箱,开启smtp服务 2.验证密保 3.获取授权码 python代码里面使用 在Python中, smtplib ...

  2. python判断邮件发送成功_【基本解决】python中用SMTP发送QQ邮件提示成功但是收件人收不到邮件...

    折腾: 期间, 已经用了smtp的ssl去发送邮件了,但是结果: 第二收件人也没有收到邮件... 那去把端口号从465改为587: smtpPort=587, 结果直接出错: smtpObj = sm ...

  3. python应用系列教程——python使用smtp上传邮件,使用pop3下载邮件

    全栈工程师开发手册 (作者:栾鹏) python教程全解 python使用smtp上传邮件,使用pop3下载邮件.由于上传后立刻下载了,所以有时不会再在网页邮箱中有通知. 可设置邮件的收发人,主题,内 ...

  4. 在Delphi中使用indy SMTP发送gmail邮件[转]

    在Delphi中使用indy SMTP发送gmail邮件[转] 2012-01-01 22:44:30|  分类: Delphi |  标签: |举报 |字号大中小 订阅 在Delphi中发送emai ...

  5. java通过SMTP发送QQ邮件的完全步骤

    java通过SMTP发送QQ邮件的完全步骤 首先,我们需要打开QQ邮箱的SMTP服务,因为QQ邮箱对于一般的用户都是默认关闭SMTP服务的. 打开QQ邮箱,点击设置 点击帐户 找到SMTP服务的选项, ...

  6. (Python)使用SMTP发送QQ邮件

    要想通过QQ邮箱来发送邮件,需要开启QQ邮箱的设置-账户里SMTP服务,接下来会通过发送短信验证来获得授权码,有了授权码后就可以在代码里添加了. 接下来看看QQ的邮件服务器配置: (授权码填写在代码的 ...

  7. python3.x下 smtp发送html邮件和附件

    综合网络上的文章以及自己的实验,在python的IDEL下成功的通过SMTP发送出去了邮件.现将过程记录如下: 一.准备工作: 1.安装好python3.x 2.拥有一个支持smtp服务的邮箱,我是用 ...

  8. Python每天定时发送监控邮件

    不管是在信贷领域还是支付领域,作为一个风控人员,我们都需要对部署的策略模型进行监控,信贷领域可能还需要对客户的逾期表现进行监控.这时,如果我们能用python自动连接数据库,对策略.模型.贷后表现等数 ...

  9. python使用SMTP发送qq/sina邮件

    python使用qq邮箱(个人邮箱)发送邮件需开启qq邮箱的SMTP服务 在设置中开启pop3/SMTP服务,返回的密码就是之后代码中登录使用账户密码(在完整代码中标识了出来) 之后出现如下错误 sm ...

最新文章

  1. 【MATLAB】符号数学计算(二):符号运算中的运算符和函数
  2. caddy 获取SSL证书报错解决:failed to obtain certificate: acme: Error - One or more domains had a problem
  3. sessionStorage细节
  4. linux进程退出没有log,Linux下应用进程消失原因分析-Go语言中文社区
  5. 求出2个字符串中的最大公共子串
  6. 100条常用写作谚语(5)(6)(7)(8)
  7. 牛客网matlab怎么输入数据,从牛客上找的面经
  8. 图像算法九:【图像特征提取】特征降维、PCA人脸特征抽取、局部二进制
  9. MySQL操作(备份很重要)
  10. linux相关的东东 来自dbanotes
  11. 抖音育儿类账号的创作灵感分享, 想进圈的不妨了解一下
  12. python中delete函数_python中的delete函数是如何使用的,最好带例子,谢谢
  13. linux dns劫持转发,linux的dns被劫持
  14. inno setup将exe应用打包成——安装包
  15. 全国计算机等级考试Python二级知识点_1
  16. 购买二手MacBook是否正品,请仔细检查以下情况,可防止翻车
  17. Stimulsoft Dashboards.JS JavaScript 2203.1.0仪表板
  18. 新月剑痕十项属性内存修改器
  19. php 3d animation,CSS_纯CSS实现菜单、导航栏的3D翻转动画效果,我曾经向大家展示过闪光的logo - phpStudy...
  20. ios开发收藏按钮_iOS使用CoreData实现收藏功能

热门文章

  1. kindle电子书横竖屏切换方法
  2. 【STM32训练—WiFi模块】第一篇、STM32驱动ESP8266WiFi模块获取网络时间
  3. 漫谈程序员(十五)——应届毕业生上海市落户政策解读
  4. 阿里云服务器企业型如何选择配置最佳?
  5. 熬夜的工作要不要做,大保:不要熬夜挣钱上班
  6. [Python] 二维数组初始化实践
  7. android note4 android版本,三星Galaxy Note4手机系统是什么?能升级安卓4.3吗?
  8. java 微信模板_java开发微信模板消息推送
  9. ELK8.1从零搭建以及基本使用
  10. CentOS7配置阿里云yum源和EPEL源