Amazon SES和Python:提高电子邮件发送速度

问题描述

我有下面的代码可以有效地执行邮件合并。会发生什么:

  • 通过CSV细节查看循环
  • 基于行中的信息,电子邮件模板已替换了字符串,例如名称代码,引用
  • 然后发送电子邮件
  • 所有电子邮件发送完毕后,正在发送的电子邮件记录将保存到另一个CSV文件

对于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 (将#修改为@)