Отправка почты нескольким пользователям с помощью python

Недавно я нашел код для отправки электронных писем с помощью python. Это было только для одного пользователя, поэтому я изменил его, чтобы получать электронные письма из txt-файла, в котором электронная почта хранится в каждой строке, а затем отправлять им письма. Однако я обнаружил, что письма попадают в папку со спамом (в случае Gmail) или в папку «Нежелательная почта» (в случае hotmail или live). Можно ли изменить код, чтобы сообщение попадало в папку «Входящие», а не отфильтровывалось как спам? Я что-то не так понял?

import smtplib,sys

server = 'smtp.gmail.com'
port = 587

sender = '[email protected]'
subject = 'Gmail SMTP Test'
body = 'blah blah blah'

"Sends an e-mail to the specified recipient."



session = smtplib.SMTP(server, port)

session.ehlo()
session.starttls()
session.ehlo
session.login(sender, 'my-password!')

f = open('emails.txt')
for line in f:
  recipient = line
  print recipient
  headers = ["From: " + sender,
       "Subject: " + subject,
       "To: " + recipient]
  headers = "\r\n".join(headers)
  session.sendmail(sender, recipient, headers + "\r\n\r\n" + body)

f.close()
session.quit()

person Karan Thakkar    schedule 26.06.2012    source источник
comment
Сколько получателей в файле?   -  person Junuxx    schedule 26.06.2012
comment
Если они попадают в спам, убедитесь, что ваши электронные письма не касаются виагры, горячих синглов в моем районе или нигерийских деловых предложений.   -  person wim    schedule 26.06.2012
comment
@wim Конечно, дело не в этом. Это простой лайнер.   -  person Karan Thakkar    schedule 26.06.2012


Ответы (3)


Это очень сложный вопрос, потому что классификацию спама делаете не вы. (Очевидно! Если бы кто-то мог сделать свои сообщения «не спамными», то, конечно, спамеры тоже сделали бы это.)

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

person Katriel    schedule 26.06.2012
comment
Причина, по которой я запутался, заключается в том, что если я отправлю одно и то же письмо с той же темой на тот же идентификатор электронной почты, используя свою учетную запись gmail, сообщение попадет в папку «Входящие». Однако, когда я использую приведенный выше скрипт Python, он попадает в спам. Как вы можете это объяснить? - person Karan Thakkar; 26.06.2012
comment
Gmail, вероятно, устанавливает гораздо больше заголовков SMTP, когда вы отправляете через их веб-службу. Некоторые вы можете отправлять программно; некоторые могут принимать во внимание тот факт, что сообщения, отправленные вручную, с гораздо меньшей вероятностью будут считаться спамом. - person Katriel; 26.06.2012
comment
Кстати, если получатель однажды явным образом пометит ваши сообщения как не спам, это должно перестать быть проблемой. - person Katriel; 26.06.2012
comment
Так есть ли умеренное обходное решение для этого? Конечно, как только получатель пометит мои письма как не спам, это не будет проблемой, но дело в том, что в большинстве случаев люди не проверяют спам. Почему я использую этот сценарий, так это потому, что с помощью gmail невозможно отправить несколько писем за один раз, не раскрывая адреса электронной почты всех получателей всем в списке. - person Karan Thakkar; 26.06.2012
comment
Конечно, это так: просто поместите их в поле BCC. - person Katriel; 26.06.2012

У меня была аналогичная проблема с использованием PHP для отправки электронных писем, и я смог получить свои электронные письма из папки со спамом, просто изменив тему и тело, что сделало их немного более содержательными и менее похожими на тесты.

Попробуйте разные вещи — например, тему «Счет из магазина Джека» или «Представляем вас в Твиттере». Или просто возьмите тему и текст из реального электронного письма и поместите их в свой тест.

person crunkchitis    schedule 26.06.2012
comment
Причина, по которой я запутался, заключается в том, что если я отправлю одно и то же письмо с той же темой на тот же идентификатор электронной почты, используя свою учетную запись gmail, сообщение попадет в папку «Входящие». Однако, когда я использую приведенный выше скрипт Python, он попадает в спам. - person Karan Thakkar; 26.06.2012

Yes One Way is there but there is time wasting method.....

Это ваш код:

поставь метод сна и замени этим кодом

    import smtplib,sys
    import time
    server = 'smtp.gmail.com'
    port = 587

    sender = '[email protected]'
    subject = 'Gmail SMTP Test'
    body = 'blah blah blah'

    "Sends an e-mail to the specified recipient."



    session = smtplib.SMTP(server, port)

    session.ehlo()
    session.starttls()
    session.ehlo
    session.login(sender, 'my-password!')

    f = open('emails.txt')
    for line in f:
      recipient = line
      print recipient
      headers = ["From: " + sender,
           "Subject: " + subject,
           "To: " + recipient]
      headers = "\r\n".join(headers)
      session.sendmail(sender, recipient, headers + "\r\n\r\n" + body)
      time.sleep(3)
    f.close()
    session.quit()

ЕСЛИ любой другой комментарий проблемы....:)

person Virbhadrasinh    schedule 23.12.2014