Отправка электронной почты через Sendgrid не удалась для некоторых писем - невозможно получить mx-информацию: не удалось получить IP-адреса из записи PTR: поиск <nil>: нераспознанный адрес - PullRequest
1 голос
/ 07 апреля 2020

Согласно Как отправить электронное письмо из Azure функционального приложения , мы не можем отправлять электронную почту напрямую из нашей Azure функции, поэтому вместо этого мы используем API SendGrid для отправки наших электронных писем. (Похоже, что SendGrid хорошо работает для нас, и мы получаем бесплатную учетную запись по нашей подписке Azure)

Хотя большинство писем go в порядке, некоторые из них не доставляются. Фид активности SendGrid показывает для них статус Block. Подробное сообщение об ошибке:

unable to get mx info: failed to get IPs from PTR record: lookup <nil>: unrecognized address

Sendgrid activity display, including the error message details

Поскольку большинство писем выдают go, мы не думаем, что это проблема нашего кода. Мы прошли этапы аутентификации домена SendGrid , проверили наш домен, добавили ключи DKIM в наш DNS и добавили хосты SendGrid в нашу запись SPF. Однако некоторые из них не работают, и мы не можем найти что-либо в справке SendGrid по нашей ошибке.

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

from sendgrid import SendGridAPIClient
from sendgrid.helpers.mail import Mail

def sendEmail(toaddress, subject, message):
   logging.info("Sending email to <%s> - %s", toaddress, subject)

   message = Mail(
      from_email=settings.emailFrom(),
      to_emails=toaddress,
      subject=subject,
      plain_text_content=message)
   try:
      sg = SendGridAPIClient(settings.sendgridAPIKey())
      response = sg.send(message)
      logging.info("Email sent via SendGrid: %d - %s", response.status_code, response.body)
   except Exception as e:
      logging.error(e.message)

1 Ответ

0 голосов
/ 07 апреля 2020

TL; DR - проверьте домен на опечатку!

.

Оказывается, что сообщение об ошибке, показанное в SendGrid, действительно содержало ответ, но немного крипти c и не совсем то, что мы ожидаем увидеть для фактической ошибки

unable to get mx info: failed to get IPs from PTR record: lookup <nil>: unrecognized address

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

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

Этот домен опечаток существует и зарегистрирован. Однако для него не определены записи DNS - нет записи @ A и записи MX.

SendGrid следовал за RF C, пытаясь найти запись MX для домена, но ее не было, затем возвращался к записи A для домена, но это не помогло существуют либо. Это привело к тому, что SendGrid записал ошибку и сдался.

Итак, для этой точной ошибки дважды тщательно проверьте домены на наличие опечаток!

...