отправка писем в странном поведении питона

Я работаю над куском кода, который регулярно отправляет электронные письма из 4 разных учетных записей, 2 из них – учетные записи gmail, а остальные 2 – учетные записи Yahoo. Когда я начал писать код, я смог отправить все электронные письма из обоих учетных записей gmail, используя следующий фрагмент кода:

def sendGmail(self, fromaddr, toaddr, username, password, email_body, email_subject ): # Build the email msg = MIMEText(email_body) msg['Subject'] = email_subject msg['From'] = fromaddr msg['To'] = toaddr try: # The actual mail send server = smtplib.SMTP('smtp.gmail.com:587') server.starttls() server.login(username,password) server.sendmail(fromaddr, toaddr, msg.as_string()) server.quit() print "email sent: %s" % fromaddr except Exception as e: print "Something went wrong when sending the email %s" % fromaddr print e 

Как я уже сказал, этот фрагмент кода работал отлично, теперь, когда я добавляю sendYahoomail (), который является другим методом, я всегда получаю (530 «Доступ запрещен») в качестве исключения для использования sendGmail (). Я уверен, что это не имеет никакого отношения к моему методу Yahoo, и я могу правильно войти в браузер с учетными данными gmail.

Что может быть неправильным, или просто Gmail не хочет, чтобы я отправлял код?

2 Solutions collect form web for “отправка писем в странном поведении питона”

Я пробовал свой код выше с моей учетной записью Gmail (на самом деле это аккаунт Google Apps, но он должен быть идентичным), и он отлично работает для меня. Я даже попробовал неправильный заголовок «От», а также использовал неправильный адрес источника на уровне SMTP – оба раза Gmail разрешал мне отправлять электронную почту, но, казалось, спокойно фиксировал заголовок при выходе. Тем не менее, вам может потребоваться повторная проверка вашего адреса от вашего имени пользователя. Также попробуйте использовать полный адрес электронной почты в качестве имени пользователя, если вы в настоящее время используете только часть до @.

Я также попробовал неправильный пароль и получил ошибку 535, что не совпадает с тем, что вы видите. Так как у меня включена двухфакторная аутентификация, я также попробовал свой реальный пароль вместо специфичного для приложения и который по-прежнему дал ошибку 535 (но с сообщением «требуется пароль для конкретного приложения»).

Возможно ли, что ваш интернет-провайдер настроил что-то, что перехватывает SMTP-подключения к Gmail? Кажется маловероятным, хотя мой интернет-провайдер однажды заблокировал доступ к Gmail на порту 587, хотя порт 465 все еще работал. Возможно, вы можете попробовать использовать smtplib.SMTP_SSL на порту 465 на всякий случай и посмотреть, не приносит ли вам больше радости.

Вы также можете попробовать отправить адреса на разных провайдерах в случае отказа Gmail от отправки по этой причине (например, если другой поставщик был включен в черный список спама, например). Кроме того, если возможно, что ваша электронная почта выглядит спамом, попробуйте ввести код с темой сообщения и телом, близким к подлинному электронному письму, и посмотрите, поможет ли это.

Вы можете найти это полезным: https://support.google.com/mail/answer/14257

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

Иногда это работало для меня, а иногда и нет.

  • Как обрабатывать asyncore внутри класса в python, не блокируя ничего?
  • Отправка почты с Python с помощью SMTP
  • Отправка почты с помощью python smtplib
  • Ответ на электронную почту с помощью python 3.4
  • Проблема с расширением SMTP AUTH с Python
  • smtp отправить электронную почту и почему одно вложение может иметь два Content-Type?
  • Проблема с прикреплением файлов в двоичном файле
  • Перенаправление и отслеживание электронной почты с mandrill и django
  • Python: при отправке электронной почты всегда блокируется в разделе: smtpserver = smtplib.SMTP («smtp.gmail.com», 587)
  • Ошибка: SMTPRecipientsRefused 553, '5.7.1 #while, работая в форме контакта в django
  • Неверная версия Python Smtp SSL для Linux
  • Python - лучший язык программирования в мире.