如何使用smtp加快文件发送速度

时间:2019-02-15 21:11:18

标签: python performance smtp

我正在设置一个程序,该程序拍摄屏幕快照并将其发送到我的电子邮件,并且我想加快该过程,因为它将在一秒钟内获取多个屏幕截图并将其发送到我的电子邮件中但由于要进行长时间的验证,这会破坏我的程序本身并导致延迟。

我试图将登录过程和发送过程分开,将其放置在功能之外,但没有发送电子邮件。我想知道如何构造它。

def sendemail(文件名):     #创建SMTP会话     sends = smtplib.SMTP('smtp.gmail.com',587)

# start TLS for security
sendss.starttls()
email = '___@gmail.com'
password = 'password'


email = 'name@gmail.com'
password = 'pass'
send_to_email = 'pass@gmail.com'
subject = 'Person on Cam 1'
message = 'Person sighted'
msg = MIMEMultipart()
msg['From'] = email
msg['To'] = send_to_email
msg['Subject'] = subject
msg.attach(MIMEText(message, 'plain'))

attachment = open(filename, 'rb') 

part = MIMEBase('application', 'octet_stream')

part.set_payload((attachment).read())


encoders.encode_base64(part)
part.add_header('Content-Disposition', "attachment; filename= "+filename) 

msg.attach(part) 
text = msg.as_string()
server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login(email, password)
text = msg.as_string()
server.sendmail(email, send_to_email, text)
server.quit()

它发送电子邮件,但速度很慢。我想减少浪费时间发送一封电子邮件。

1 个答案:

答案 0 :(得分:0)

使用一个SMTP会话发送许多电子邮件

您可以保持打开的smtp会话(重用server对象)并使用它发送多封电子邮件。

SMTP服务器在sendind“不是第一”电子邮件之前使用RSET(重置)命令来检查SMTP会话是否可以重用。

https://docs.python.org/2/library/smtplib.html

  

还支持对应于标准SMTP / ESMTP命令HELP,RSET,NOOP,MAIL,RCPT和DATA的低级方法。通常,这些不需要直接调用,因此这里没有记录。有关详细信息,请查阅模块代码。