【发布时间】:2019-02-15 21:11:17
【问题描述】:
我正在设置一个程序,它会截取屏幕截图并将其发送到我的电子邮件,我想加快这个过程,因为它将在一秒钟内拍摄多个屏幕截图并将其发送到我的电子邮件但由于验证过程很长,它会破坏我的程序本身并导致滞后。
我尝试将登录过程和发送过程分开,将其置于功能之外,但它没有发送电子邮件。我想知道我应该如何构建它。
def 发送电子邮件(文件名): # 创建 SMTP 会话 发送 = 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()
它发送电子邮件但速度很慢。我想减少发送一封电子邮件所浪费的时间。
【问题讨论】:
-
延迟几乎肯定是由于您可用的上行带宽,而不是代码本身。最好的办法是在截屏后创建一个新进程来发送邮件,但是你只会在后台堆积一堆进程,因为你根本无法比你更快地发送图片生成它们。
-
@chepner 但它也必须一遍又一遍地连接到 smtp。一旦我解决了这个问题,我就会减少它被调用的时间。
标签: python performance smtp