2011-01-26 5 views
0

Я стараюсь не проверять почту постоянно, поэтому я загружаю всю электронную почту один раз каждые 4 часа. У меня есть задание cron, которое извлекает непрочитанные сообщения из учетной записи Gmail, а затем отправляет их в учетную запись, которую я проверяю.Python sendmail() после 12-часовой задержки

В последнее время сообщения появляются непоследовательно, иногда с задержкой на день. Все сообщения отправляются правильно, но задержка причудлива.

Вот мой код:

imap_domain = "imap.gmail.com" 
imap_port = 993 
imap_username = '[email protected]' 
imap_password = 'mypassword' 

#smtp settings 
smtp_domain = "mail.kburke.org" 
smtp_port = 2626 
smtp_username = "[email protected]" 
smtp_password = "mypassword" 

recipient = ['[email protected]'] 

imap_server = imaplib.IMAP4_SSL(imap_domain, imap_port) 
imap_server.login(imap_username, imap_password) 
imap_server.select('INBOX') 
status, email_ids = imap_server.search(None, '(UNSEEN)') 

server = smtplib.SMTP(smtp_domain, smtp_port) 
server.ehlo() 
server.starttls() 
server.ehlo() 
server.login(smtp_username, smtp_password) 

for e in email_ids[0].split(' '): 
    if e is not '': 
     try: 
      raw_msg = imap_server.fetch(e, '(RFC822)') 
      msg = email.message_from_string(raw_msg[1][0][1]) 

      #modify reply-to so we preserve email address 
      if not msg['Reply-To']: 
       msg['Reply-To'] = msg['From'] 

      result = server.sendmail(msg['From'], recipient, msg.as_string()) 

Я думаю, что было бы лучше, чтобы отправить из аккаунта Gmail, но Gmail не позволяет отправлять электронную почту с другим получателем, чем владелец счетов. Вы знаете, почему сообщения электронной почты появляются с задержкой, и что я могу сделать, чтобы исправить эту проблему? Спасибо, Kevin

+0

Вы когда-нибудь слышали о почтовом клиенте? Thunderbird, Outlook, Evolution и т. Д. Позволяют контролировать несколько учетных записей электронной почты и получать уведомления на вашем рабочем столе. –

+0

Привет, Рей, моя идея состояла в том, чтобы * избежать * проверки моей электронной почты, поскольку я в настоящее время проверяю ее слишком часто. У меня есть лучшая сила воли, если процесс загрузки будет автоматизирован, чем если бы я мог получить свою электронную почту в любое время, когда я вхожу в систему. –

ответ

0

Взгляните на журналы вашего почтового сервера. Бьюсь об заклад, у вас много ошибок в том, что GMail не принимает ваш адрес электронной почты, потому что (похоже, спам | тот узел отправил слишком много писем по другой причине), и ваш почтовый сервер делает это обычным способом «Держись и попробуй позже» ,

Это случилось со мной, довольно неожиданно в один прекрасный день для аналогичного использования с GMail.

1

Просмотрите почтовые заголовки отправляемых писем. Один добавляется для каждого почтового сервера вместе с меткой времени. Тогда вы можете увидеть преступника.

+0

Как только я нахожу преступника, что я могу сделать, чтобы ускорить его? –

+0

Обычно есть только два почтовых сервера. Тот, который вы используете для ретрансляции почты, например. у вас есть учетная запись электронной почты и почтовый сервер назначения, но в зависимости от места назначения теоретически может быть больше перелетов. Если ваш почтовый сервер является виновником, используйте другой провайдер для отправки писем. У меня есть некоторые учетные записи google, которые я использую только для отправки автоматических почтовых сообщений, и я еще не видел никаких проблем. – Daniel