python smtp 群发邮件

摘要:
最近,我在工作中遇到了使用脚本处理和发送结果电子邮件的问题。使用Python的smtp模块,我简单地完成了实现。经过仔细调查,我们发现了一个有趣的地方:电子邮件的副本大致如下:1defsendmail2…………..3………..4msg=MIMEMultipart()5msg['From']=_from6msg['To']=To_Addrs7………8………9邮件服务器中使用的方法。sendmail方法1是获取电子邮件地址,然后“test@test.com , kratos@test.com , admin@test.com参数“to_addrs”以字符串的形式提供给sendmail。脚本运行后,仅test@test.com邮箱已收到电子邮件,但后续地址未收到电子邮件。在谷歌下载了Python的smtp之后,修改方法如下:方法2:[“test@test.com "," kratos@test.com "," admin@test.com“]作为参数”to_addrs“以列表的形式提供给sendmail。

最近工作中遇到使用脚本处理问题并发送结果邮件,使用python的smtp模块很简单的完成了实现。今天遇到一个问题,根据脚本的测试结果需要群发邮件,但是发送邮件的py文件只有首个地址收到了邮件。仔细排查发现个有意思的地方:

发送邮件的py大致如下:

1 def sendmail(message,to_addrs)
2        ............................
3        ...........................
4        msg = MIMEMultipart()
5        msg['From'] = _from
6        msg['To'] = to_addrs
7        ......................
8        ......................
9        mailserver.sendmail(_from, to_addrs, message)

方法1 使用的方法是获取到邮件地址后,以“test@test.com,kratos@test.com,admin@test.com”以字符串形式作为参数“to_addrs”给了sendmail。脚本运行结束后只有test@test.com邮箱收到了邮件,后续地址均未收到邮件。

google 了python 的smtp之后,修改的方法是:

方法2 以["test@test.com","kratos@test.com","admin@test.com"]以列表形式作为参数“to_addrs”给了sendmail。

然后将“msg["To"] = to_addrs” 行修改为 “msg["To"] = ",".join(to_addrs)”搞定,指定的邮件列表中的账户均收到邮件

>>> a = "test@test.com,kratos@test.com,admin@test.com"
>>> a
'test@test.com,kratos@test.com,admin@test.com'
>>> type(a)
<type 'str'>
>>> b = ["test@test.com","kratos@test.com","admin@test.com"]
>>> c = ",".join(b)
>>> c
'test@test.com,kratos@test.com,admin@test.com'
>>> type(c)
<type 'str'>
>>> a == c
True

以上看 a 与c没什么区别,使用方法2 成功搞定。有时间在继续看看吧,没知识太可怕了呵呵。

备注:

  使用的是Gmail邮箱

免责声明:文章转载自《python smtp 群发邮件》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇JavaWeb入门——背景知识204. Count Primes 素数的个数下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

设置Outlook的时候千万别忘了设置在邮箱中保留原邮件!

1 打开Outlook,在菜单中选择“电子邮件帐户”,打开电子邮件帐户窗口。 2 选择“查看或者更改现有电子邮件帐户” 3 选择要更改的邮件帐户,选择“更改”,打开配置窗口。 4 选择“其他设置”,进入“高级”选项页 5 选择“在服务器上保留邮件的副本” 6 成功,现在可以放心收发邮件了。...

Python——eventlet

eventlet语境下的“绿色线程”普通线程之间的区别:   1. 绿色线程几乎没有开销,不用像保留普通线程一样保留“绿色线程”,每一个网络连接对应至少一个“绿色线程”;   2. 绿色线程需要人为的设置使其互相让渡CPU控制权,而不是抢占。绿色线程既能够共享数据结构,又不需要显式的互斥控制,因为只有当一个绿色线程让出了控制权后其他的绿色线程才能访问彼此共...

python 字符串 转 bit, bitarray 异或加密

Python中异或加密要将str 转为 bitarray, 提示: int类型和纯数字的字符串也可以异或处理, 可能更方便 from bitarray import bitarray def str2bitarray(msg):  # msg 为str   msg_2 = ""  # 转为1010拼接成字符串   for a in msg.encode(...

Python 调用outlook发送邮件(转 )

单账号: import win32com.client as win32 def send_mail(): outlook = win32.Dispatch('Outlook.Application') mail_item = outlook.CreateItem(0) # 0: olMailItem mail_...

20201324 实验二《Python程序设计》实验报告

20201324 2020-2021-2 《Python程序设计》实验二报告 课程:《Python程序设计》 班级: 2013 姓名: 徐源 学号:20201324 实验教师:王志强 实验日期:2021年4月26日 必修/选修: 公选课 (一)实验内容 设计并完成一个完整的应用程序,完成加减乘除模等运算,功能多多益善。 基本四则运算 取模运算 求幂运算...

ubuntu 配置vim编辑器

 憋了很久,终于用上了unix下的vim 开发环境: 安装pydiction   pydiction用来实现代码补全和语法提示功能。pydiction不能通过apt安装,需要自行下载安装。 git clone https://github.com/rkulla/pydiction #https://github.com/ma6174/vim 看个人吧...