程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Python >> 如何利用python個性化掃郵群發郵件(支持附件)

如何利用python個性化掃郵群發郵件(支持附件)

編輯:Python

掃郵,其實就是群發郵件的形象說法。雖然個人很鄙視掃郵這種行為,但有時候我們迫不得已還是要掃這麼一下兩下。但不得不說學校分配給學生的郵箱掃郵掃起來很麻煩,發件人有 20 個人的上限設置,不能一次性地群發出去。聽說現在有人還是把掃郵列表分成 N 多份,每份 20 人,然後分成 N 次發出去,這樣的方法略原始,效率也略低,容易漏發或者重復。

不過既然學校的郵箱支持IMAP和SMTP,我們就可以用python來掃郵了。Python自帶的email包和smtplib包都很強大,不但可以滿足基本的發郵件的需要,而且可以添加附件,再配合上python編程功能,像使用個性化稱呼這樣平時群發郵件時的難題也能解決。


首先,要用python群發郵件,先到python官網上下載最新版的python即可,掃郵所需要的包都是自帶的,無需再做任何准備。

下面是一個單發郵件的實例(親測可用):

import smtplib
import email
import email.mime.application

mailto_list=["[email protected]"]

#Your information
mail_host="HOSTNAME.com" #SMTP server name
mail_user="YOUR_USERNAME"
mail_pass="YOUR_PASSWORD"
mail_postfix="SAMPLE.com"

# Create a text/plain message
msg = email.mime.Multipart.MIMEMultipart()
msg['Subject'] = 'Homework'
msg['From'] = '[email protected]'
msg['To'] = '[email protected]'

# The main body is just another attachment
body = email.mime.Text.MIMEText("""Hello, please check the attachment
to find the assignment this week.""")
msg.attach(body)

# PDF attachment
filename='Assignment.pdf'
fp=open(filename,'rb')
att = email.mime.application.MIMEApplication(fp.read(),_subtype="pdf")
fp.close()
att.add_header('Content-Disposition','attachment',filename=filename)
msg.attach(att)

#Send
try:
s = smtplib.SMTP()
s.connect(mail_host)
s.login(mail_user,mail_pass)
s.sendmail('[email protected]',mailto_list, msg.as_string())
s.close()
print 'Success'
except Exception, e:
print str(e)
print 'Fail'


上面的示例發送了一個純文本郵件,並且附帶了一個pdf附件。只要稍作修改,就可以發送HTML郵件和其他類型的附件。注意正確替換郵箱地址,郵件服務器的賬戶名和密碼,測試一下是不是能正確單發郵件。

發送了單封郵件,那麼群發郵件也就簡單了。只要將上面的代碼封裝成一個函數,將郵件列表轉換成數組的形式,通過一個簡單的for循環,就可以輕易地將郵件群發出去。要在郵件開頭寫上類似“尊敬的XXX用戶”之類問候語進行個性化,也只要利用python稍作編程即可。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved