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