Как отправить почту непосредственно на SMTP-сервер без проверки подлинности?

Я хотел бы отправить электронное письмо прямо из сценария в учетную запись электронной почты Gmail, подключившись непосредственно к smtp.gmail.com .

Тем не менее, я бы предпочел не иметь пароль gmail в скрипте. Из того, что я прочитал, кажется, что Gmail требует аутентификации, прежде чем она отправит любую почту, в том числе ее собственным пользователям.

Мой вопрос заключается в том, как почта поступает с другого сервера SMTP, когда-либо поставленного, поскольку этот SMTP-сервер не имеет учетных данных Gmail. Требуется ли для Gmail только аутентификация для « анонимных » отправителей, и поскольку мой скрипт работает на персональном компьютере, он подвержен более высокой безопасности? Вот скрипт python, который я запускаю:

 import smtplib import email msg = email.message.Message() msg["From"] = "user@gmail.com" msg["To"] = "user@gmail.com" msg["Subject"] = "Test message" server = smtplib.SMTP("smtp.gmail.com",587) server.starttls() server.ehlo_or_helo_if_needed() try: failed = server.sendmail("user@gmail.com","user@gmail.com", msg.as_string()) server.close() except Exception as e: print(e) 

Когда я запускаю этот скрипт, вывод:

 (530, b'5.5.1 Authentication Required. Learn more at 5.5.1 http://support.google.com/mail/bin/answer.py?answer=14257 fw5sm21125889wib.0', 'user@gmail.com') 

Мой вопрос: как внешние SMTP-серверы избегают этой проблемы? И что они делают реплицируемыми в локальном скрипте или требуют правильных обратных записей DNS, записей SPF и т. Д.?

3 Solutions collect form web for “Как отправить почту непосредственно на SMTP-сервер без проверки подлинности?”

Вы можете использовать некоторые внешние SMTP-серверы без проверки подлинности (или локального SMTP), но отправленное сообщение будет обнаружено спам-фильтром Google, потому что msg [«From»] – это @ google.com , а фактический SMTP – не smtp.gmail .com .

Эти SMTP-серверы также должны иметь правильную обратную зону в DNS провайдера, и в противном случае этот smtp будет заблокирован Google.

Это действительно хороший вопрос, и я отвечаю inline.

Я хотел бы отправить электронное письмо прямо из сценария в учетную запись электронной почты Gmail, подключившись непосредственно к smtp.gmail.com.

Прежде всего smpt.gmail.com не является почтовым сервером, который принимает почту (от других почтовых серверов), а скорее позволяет пользователям Gmail регистрироваться и, следовательно, отправлять или проверять электронную почту. Если мы хотим узнать почтовые серверы Gmail, которые принимают письма от других почтовых серверов. На терминале можно запустить следующий cmd:

dig mx gmail.com +short

вывод:

 10 alt1.gmail-smtp-in.l.google.com. 40 alt4.gmail-smtp-in.l.google.com. 5 gmail-smtp-in.l.google.com. 30 alt3.gmail-smtp-in.l.google.com. 20 alt2.gmail-smtp-in.l.google.com. 

С gmail-smtp-in.l.google.com. имеет самое низкое значение 5, мы используем его как предпочтительный почтовый сервер

Тем не менее, я бы предпочел не иметь пароль gmail в скрипте. Из того, что я прочитал, кажется, что Gmail требует аутентификации, прежде чем она отправит любую почту, в том числе ее собственным пользователям.

Точно один использует smtp.gmail.com для входа и отправки / проверки электронной почты в / из своих соответствующих учетных записей, поэтому нам нужны учетные данные пользователя. Однако нам не нужны учетные данные при отправке писем на его почтовый сервер, т. Е. Gmail-smtp-in.l.google.com (пример ниже)

Мой вопрос заключается в том, как почта поступает с другого сервера SMTP, когда-либо поставленного, поскольку этот SMTP-сервер не имеет учетных данных Gmail. Требуется ли для Gmail только аутентификация для «анонимных» отправителей, и поскольку мой скрипт работает на персональном компьютере, он подвержен более высокой безопасности? Вот скрипт python, который я запускаю:

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

Следующий скрипт python отправляет электронную почту на учетную запись gmail без проверки подлинности.

 import smtplib fromaddr = 'sending@example.com' toaddrs = ['receiving@gmail.com'] msg = ''' From: {fromaddr} To: {toaddr} Subject: testin' This is a test . ''' msg = msg.format(fromaddr =fromaddr, toaddr = toaddrs[0]) # The actual mail send server = smtplib.SMTP('gmail-smtp-in.l.google.com:25') server.starttls() server.ehlo("example.com") server.mail(fromaddr) server.rcpt(toaddrs[0]) server.data(msg) server.quit() 

Или попробуйте следующий фрагмент Telnet

 telnet gmail-smtp-in.l.google.com 25 HELO sendingdomain.com MAIL FROM:<user@sending.com> RCPT TO:<playingwithtelnet@gmail.com> DATA From: <user@sending.com> To: <playingwithtelnet@gmail.com> Subject: Just a test email The body of the mail goes here. . QUIT 

Вы не можете использовать gmail smtp-server без проверки подлинности. Это политика Google. Вам необходимо ввести пароль своей учетной записи. Но есть и другой способ. Вы можете использовать GAE (Google App Engine) с API Gmail. Таким образом вы можете отправлять сообщения напрямую.

  • Не удается отправить электронную почту через python с помощью gmail - smtplib.SMTPException: расширение SMTP AUTH не поддерживается сервером
  • Django отправляет электронную почту
  • Как обрабатывать asyncore внутри класса в python, не блокируя ничего?
  • Python3 multipartmime email (текст, электронная почта и вложение)
  • Sendmail Errno Соединение Отказано
  • Проблема с прикреплением файлов в двоичном файле
  • Кодирование темы почты (SMTP) в Python с символами, отличными от ASCII
  • Django- Connection отказался при использовании smtp
  • отправлять анонимную почту с локального компьютера
  • Ответ на электронную почту с помощью python 3.4
  • Расширение SMTP AUTH не поддерживается сервером в python 2.4
  • Python - лучший язык программирования в мире.