Как ускорить отправку файла с помощью smtp - PullRequest
0 голосов
/ 16 февраля 2019

Я настраиваю программу, которая делает снимок экрана и отправляет его на мою электронную почту, и я хочу ускорить процесс, поскольку он будет делать более одного снимка экрана в секунду и отправлять его на мою электронную почтуно из-за длительного процесса проверки он ломает саму мою программу и вызывает лагирование.

Я попытался разделить процесс входа в систему и процесс отправки, поместив его вне функции, но он не отправил электронное письмо.Мне интересно, как мне его структурировать.

def sendemail (имя файла): # создает SMTP-сессию sendss = 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 голосов
/ 16 февраля 2019

Используйте один сеанс SMTP для отправки большого количества электронных писем

Вы можете оставить открытый сеанс SMTP (повторно использовать server объект) и использовать его для отправки нескольких сообщений электронной почты.

Серверы SMTP используют RSET (сброс) команды перед отправкой «не первого» электронного письма для проверки возможности повторного использования сеанса SMTP.

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

Методы низкого уровня, соответствующие стандарту SMTP / ESMTPКоманды HELP, RSET, NOOP, MAIL, RCPT и DATA также поддерживаются.Обычно их не нужно вызывать напрямую, поэтому они здесь не описаны.За подробностями обращайтесь к коду модуля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...