最近工作中遇到使用腳本處理問題並發送結果郵件,使用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郵箱
