如何解决Amazon SES和Python:提高电子邮件发送速度
对于50封电子邮件,关闭笔记本电脑电源大约需要50秒钟。当我将其上传到我拥有的Amazon LightSail实例时,大约花费了20秒。
我有50,000封电子邮件要发送,因此假设大约没有问题,大约需要6个小时。
我的问题是如何加快这一过程?
import smtplib
import email.utils
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import csv
from datetime import datetime
startTime = datetime.Now()
SENDER = 'XXX'
SENDERNAME = 'XXX'
USERNAME_SMTP = "XXX"
PASSWORD_SMTP = "XXX"
HOST = "email-smtp.eu-west-2.amazonaws.com"
PORT = 587
SUBJECT = 'XXX'
BODY_TEXT = 'XXX'
with open('email.html','r',encoding='utf-8-sig') as file:
BODY_HTML = file.read()
file.close()
msg = MIMEMultipart('alternative')
msg['Subject'] = SUBJECT
msg['From'] = email.utils.formataddr((SENDERNAME,SENDER))
server = smtplib.SMTP(HOST,PORT)
server.ehlo()
server.starttls()
server.ehlo()
server.login(USERNAME_SMTP,PASSWORD_SMTP)
def send_email(RECIPIENT,NAME,BOOKING_REFERENCE,UNIQUE_CODE):
global BODY_HTML
BODY_HTML = BODY_HTML.replace("{NAME}",NAME)
BODY_HTML = BODY_HTML.replace("{BOOKING REFERENCE}",BOOKING_REFERENCE)
BODY_HTML = BODY_HTML.replace("{INSERT BOOKING REFERENCE}",BOOKING_REFERENCE)
BODY_HTML = BODY_HTML.replace("{UNIQUE CODE}",UNIQUE_CODE)
part1 = MIMEText(BODY_TEXT,'plain')
part2 = MIMEText(BODY_HTML,'html')
msg.attach(part1)
msg.attach(part2)
msg['To'] = RECIPIENT
try:
server.sendmail(SENDER,RECIPIENT,msg.as_string())
except Exception as e:
print ("Error: ",e)
else:
print ("Email sent!")
file1 = open('rolled.csv','r')
reader = csv.reader(file1)
new_rows_list = []
for row in reader:
new_rows_list.append(row)
file1.close()
for row in new_rows_list:
send_email(row[0],row[1],row[2],row[3])
server.close()
print (datetime.Now() - startTime)
file2 = open('rolled_done.csv','w',newline='')
writer = csv.writer(file2)
writer.writerows(new_rows_list)
file2.close()
更新
使用Boto3可以大大提高速度,看起来使用模板可以进一步提高速度
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。