Python smtplib не работает

smtplib и gmail — проблемы со скриптом Python

Вот мой сценарий:

Я просто пытаюсь отправить письмо с моей учетной записи Gmail. Скрипт использует starttls из-за требования gmail. Я пробовал это на двух веб-хостах, 1and1 и webfaction. 1and1 выдает ошибку «Отказано в соединении», и веб-фракция не сообщает об ошибке, но просто не отправляет электронное письмо. Я не вижу ничего плохого в сценарии, поэтому я думаю, что это может быть связано с веб-хостами. Любые мысли и комментарии будут высоко оценены.

РЕДАКТИРОВАТЬ: я включил режим отладки. Судя по выводу, сообщение было успешно отправлено . Я просто никогда его не получаю.

8 ответов

Я думаю, что SMTP-сервер GMail выполняет обратный поиск DNS по IP-адресу, с которого вы подключаетесь, и отклоняет соединение, если не удается найти домен. Это сделано для того, чтобы спаммер не использовал свой SMTP-сервер в качестве открытого ретранслятора.

Я не знаю, если OP все еще заботится об этом ответе, но, оказавшись здесь, чтобы решить аналогичную проблему, надеюсь, кто-то еще может найти это полезным. Оказывается, Google изменил способ использования SMTP-сервера. Вы захотите проверить пару вещей:

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

Читайте также:  Как отремонтировать обогреватель домашний

Разрешить доступ к вашей учетной записи через «менее безопасные приложения» (читай: приложения, от которых мы не получаем доход). Для этого войдите в свою учетную запись и перейдите по ссылке: https://www.google.com/settings/security/lesssecureapps

Используйте порт 587 с TLS. Не совсем уверен, почему, но я никогда не мог заставить порт 465 играть хорошо.

Надеюсь, это поможет кому-то еще.

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

Вам буквально нужен только этот код, чтобы сделать именно то, что вы написали:

Или один вкладыш:

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

Вы можете настроить это, запустив один раз в вашем интерпретаторе:

И выход. Тогда вы можете просто использовать:

Если вы добавляете .yagmail с «my@gmail.com» в свой домашний каталог, то вы можете просто сделать: yagmail.SMTP() , но сейчас это довольно бессмысленно.

Предупреждение: если вы серьезно относитесь к отправке большого количества сообщений, лучше настройте OAuth2, yagmail может помочь с этим.

При первом запуске он проведет вас через процесс получения учетных данных OAuth2 и сохранит их в файле, чтобы в следующий раз вам ничего не нужно было делать с ним. Вы подозреваете, что кто-то нашел ваши учетные данные? У них будут ограниченные разрешения, но вам лучше аннулировать их учетные данные через Gmail.

Для пакета / установки, пожалуйста, посмотрите git или readthedocs, доступно для Python 2 и 3.

Источник

smtplib and gmail — python script problems

Here’s my script:

I’m just trying to send an email from my gmail account. The script uses starttls because of gmail’s requirement. I’ve tried this on two web hosts, 1and1 and webfaction. 1and1 gives me a ‘connection refused’ error and webfaction reports no error but just doesn’t send the email. I can’t see anything wrong with the script, so I’m thinking it might be related to the web hosts. Any thoughts and comments would be much appreciated.

EDIT: I turned on debug mode. From the output, it looks like it sent the message successfully. I just never receive it.

9 Answers 9

Some self-promotion here, but I feel on a valid ground.

You would literally only need this code to do exactly what you wrote:

What is nice is that I propose to use keyring to store your password, so you never have a risk of people seeing your password in your script.

You can set this up by running once in your interpreter:

and exit. Then you can just use:

If you add .yagmail with «my@gmail.com» in your home dir, then you can just do: yagmail.SMTP() , but that’s rather pointless by now.

Warning: If you get serious about sending a lot of messages, better set up OAuth2, yagmail can help with that.

The first time ran, it will guide you through the process of getting OAuth2 credentials and store them in the file so that next time you don’t need to do anything with it. Do you suspect someone found your credentials? They’ll have limited permissions, but you better invalidate their credentials through gmail.

For the package/installation please look at git or readthedocs, available for both Python 2 and 3.

Источник

smtplib.SMTPRecipientsRefused: Как исправить ошибку smtplib в Python? [Дубликат]

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

Вот пример того же:

Я использую объект result для хранения значения во время асинхронной операции. Это позволяет получить результат даже после асинхронного задания.

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

13 ответов

msg[‘To’] должна быть строкой:

Хотя recipients в sendmail(sender, recipients, message) должен быть списком:

Вам нужно понять разницу между видимым адресом электронной почты и доставкой .

msg[«To»] — это, по сути, то, что напечатано на письме. На самом деле это не имеет никакого эффекта. За исключением того, что ваш почтовый клиент, как и обычный почтовый сотрудник, предположит, что это тот, кому вы хотите отправить электронное письмо.

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

Для этого есть разные причины. Например, переадресация . Поле заголовка To: не изменяется при пересылке, однако письмо отправляется в другой почтовый ящик.

Теперь команда smtp.sendmail выполняет доставку фактического . email.Message — это содержимое только буквы, а не доставка.

В низкоуровневом SMTP вам необходимо дать получателям по одному, поэтому список адресов ( не включая имена!) — это разумный API.

Для заголовка он может также содержать, например, имя, например To: First Last , Other User . Поэтому ваш пример кода не рекомендуется, так как он не сможет доставить эту почту, поскольку, просто разделив его на , , у вас все еще не будут действительные адреса!

Источник

Отправка электронной почты с помощью python smtplib не работает, запутался в поле «from»

Я пытаюсь отправить электронное письмо на python. Вот мой код.

Это выполняется без ошибок, но на wmh1993@gmail.com не отправляется электронное письмо.

Вопросы

Одна вещь, которую я не понимаю об этом коде: какие ограничения у меня возникают при настройке поля FROM ?

Должен ли я как-то сказать, что это было с моего компьютера?

Что происходит, чтобы не мешать кому-то другому?

Или я свободен сделать это?

Это выполняется без ошибок, но на wmh1993@gmail.com не отправляется электронное письмо.

Это обычно означает, что сообщение было передано вашему MTA (почтовому серверу) на «localhost», но этот сервер не смог передать его в gmail. он, вероятно, попытался отправить сообщение bounce на «sender@example.com», и это тоже не удалось. или он отправил сообщение успешно, но он приземлился в папке спама gmails (сообщение может вызывать спам-правила, поскольку отсутствует заголовок даты)

Одна вещь, которую я не понимаю об этом коде: какие ограничения у меня возникают при установке поля FROM?

он должен быть синтаксически корректным адресом электронной почты

Должен ли я как-то сказать, что это был с моего компьютера?

нет. но это может быть проблемой, почему она не была доставлена. ваш компьютер на домашнем/динамическом/коммутируемом IP-адресе? gmail (и многие многие другие провайдеры) не принимают почту с таких IP-адресов. HELO вашего почтового сервера может быть неправильным, параметры DNS могут быть неправильными и т.д. вам нужно проверить журналы сервера. вам, вероятно, придется настроить локальный почтовый сервер для передачи сообщения через smarthost, а не пытаться напрямую связаться с целевым сервером.

Что существует, чтобы помешать мне подманивать кого-то еще?

не так много, поэтому у нас так много спама из поддельных адресов. такие вещи, как SPF/DKIM, могут немного помочь, но сам протокол SMTP не обеспечивает защиту от подмены.

Источник

smtplib python не работает

Пытаюсь подключиться к smpt серверу gmail, но он дает сеть недоступной

Ни то ни другое не работает

Это дает следующую ошибку:

Обратная трассировка (самый недавний призыв последнего):

4 ответа

Мне нужно отправить email по-делбийски linux. Как отправить? Я запустил свой сервер на коробке 256 MB linux и услышал, что postfix и sendmail-это перебор. Недавно я наткнулся на ssmtp, который, кажется, является исполняемым файлом, должен быть выполнен как процесс и вызван через python с помощью.

Я использую smtplib, отправляя письма довольно часто. Я использую свой собственный сервер SMTP в качестве ретранслятора. Проблема в том, что каждый раз, когда выдается соединение smtplib.SMTP (. ), весь процесс блокируется. Я новичок в python (v3) и задаюсь вопросом, поддерживает ли smtplib уже.

Используйте порт 465 . Из Google docs по конфигурации SMTP;

Согласно этой странице порт 587 требует TLS.

Для меня, когда я попробовал в Ubuntu, он работает с портом TLS. Сценарий показан здесь:

и он работает с портом SSL в windows cygwin. Сценарий показан здесь:

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

Похожие вопросы:

Я получаю следующую ошибку, когда пытаюсь использовать smtplib в своем коде Python. Traceback (most recent call last): File myemail.py, line 1, in import smtplib File.

Эй, у меня есть сервер windows, на котором работают скрипты python CGI, и у меня возникли небольшие проблемы с smtplib. Сервер работает под управлением python 2.1 (к сожалению, и я не могу его.

У меня возникла проблема с отправкой по электронной почте unicode символов с помощью smtplib в Python 3. Это не удается в 3.1.1, но работает в 2.5.4: import smtplib from email.mime.text import.

Мне нужно отправить email по-делбийски linux. Как отправить? Я запустил свой сервер на коробке 256 MB linux и услышал, что postfix и sendmail-это перебор. Недавно я наткнулся на ssmtp, который.

Я использую smtplib, отправляя письма довольно часто. Я использую свой собственный сервер SMTP в качестве ретранслятора. Проблема в том, что каждый раз, когда выдается соединение smtplib.SMTP (. ).

Мне интересно, могу ли я отправить matplotlib pyplot через smtplib. Я имею в виду, что после того, как я построю этот dataframe: In [3]: dfa Out[3]: day imps clicks 70 2013-09-09 90739468 74609 69.

Как я могу избежать нарушения условий использования Gmail при использовании Python smtplib ? Я хотел бы отправлять внутренние электронные письма с помощью Python. После 2 дней борьбы с Gmail API я.

У меня есть сценарий, как следовать #!/usr/bin/python import smtplib import datetime from email.MIMEMultipart import MIMEMultipart from email.MIMEText import MIMEText now = ‘<:%Y-%m-%d.

Привет, я пытаюсь подключиться к серверу outlook, чтобы отправить email с smtplib в python. Попытка использовать этот код smtplib.SMTP(‘smtp-mail.outlook.com’) ничего не печатает и также не.

Я использую anaconda на linux и хочу установить smtplib для отправки почты. Я пробовал, conda install smtplib which returned: PackageNotFoundError: Package missing in current linux-64 channels: -.

Источник

Оцените статью