Python script to send bulk e-mail

View source
 1 #!/usr/bin/env python
 2 #-*- coding: utf-8 -*-
 3 
 4 import email
 5 import smtplib
 6 import mimetypes
 7 from email.MIMEMultipart import MIMEMultipart
 8 from email.MIMEText import MIMEText
 9 
10 # 邮件列表文件(每行一个邮件地址)
11 MAIL_FILE_PATH = './emails.txt'
12 
13 # 邮件内容文件
14 MAIL_CONTENT_PATH = './page_kfc.html'
15 
16 # 发件人名称
17 SENDER_NAME = 'Company Inc.'
18 
19 # 发件人邮箱
20 SENDER_MAIL = '[email protected]'
21 
22 # 发件人邮箱密码
23 SENDER_PSWD = 'yourpassword'
24 
25 # SMTP 服务器
26 SMTP_SERVER = 'smtp.yourmailhost.com'
27 
28 # SMTP 端口
29 SMTP_PORT = '25'
30 
31 # 每次发送给几人
32 RECEIVER_LIMIT_PER_TIME = 10
33 
34 # ##################################################################
35 #                                                                  #
36 #                       以下部分请勿修改                           #
37 #                                                                  #
38 # ##################################################################
39 
40 # 获取收件人列表
41 def GetReceivers(limit = 10):
42     f = open(MAIL_FILE_PATH, 'r+')
43 
44     try:
45         lines = f.readlines()
46     finally:
47         f.close()
48 
49     receivers = lines[:RECEIVER_LIMIT_PER_TIME]
50     lines     = lines[RECEIVER_LIMIT_PER_TIME:]
51 
52     f = open(MAIL_FILE_PATH, 'w+')
53     f.writelines(lines)
54     f.close()
55 
56     return receivers
57 
58 # 批量发送邮件
59 def SendEmail(sender, senderName, receivers, subject, body):
60     smtp = smtplib.SMTP(SMTP_SERVER, SMTP_PORT)
61     smtp.login(SENDER_MAIL, SENDER_PSWD)
62 
63     if(senderName != ''):
64         sender = senderName + '<' + sender + '>'
65 
66     for receiver in receivers:
67         receiver = receiver.strip()
68 
69         msg = MIMEMultipart('alternative')
70         msg['Subject'] = subject
71         msg['From'] = sender
72         msg['To'] = receiver
73         msg.attach(MIMEText(body, 'html', 'utf-8'))
74 
75         smtp.sendmail(sender, receiver, msg.as_string())
76 
77     smtp.quit()
78 
79 if __name__ == '__main__':
80     '''
81     发送邮件开始
82     '''
83 
84     # 获取本次要发送的邮件地址
85     receivers = GetReceivers(RECEIVER_LIMIT_PER_TIME)
86 
87     # 获取邮件标题和内容
88     f = open(MAIL_CONTENT_PATH, 'r');
89     lines = f.readlines()
90     f.close()
91 
92     subject = lines[0].strip()
93     body = ''.join(lines[1:])
94 
95     # 发送
96     SendEmail(SENDER_MAIL, SENDER_NAME, receivers, subject, body)

 

Reproduced in: https: //my.oschina.net/weisenz/blog/200640

Guess you like

Origin blog.csdn.net/weixin_33859665/article/details/91920905