Невозможно отправить почту через MailGun через API или SMTP

Я создал новую учетную запись и не подтвердил свой домен. Я хотел бы проверить и подтвердить отправку почты, прежде чем приступить к проверке и добавлению платежной информации.

Я попытался curl, используя метод песочницы и API-ключ (в том числе SMTP). Я также пытался использовать свой домен, используя в качестве получателя почтовый адрес верхнего аккаунта. Но каждый раз при отправке команды (как curl, так и smtp) я получаю ответ "Mailgun Magnificent API" - но почта не доставляется. До сих пор API Mailgun не выглядело так великолепно... Я просмотрел документацию несколько раз и не могу найти, что я могу делать неправильно...

Буду признателен за любую оказанную помощь.

5 ответов

Решение

Столкнулся с той же проблемой при отправке электронных писем через API php curl. Я решил эту проблему, изменив базовый URL API https://api.mailgun.net/v3/YOUR_DOMAIN_NAME на https://api.mailgun.net/v3/YOUR_DOMAIN_NAME/messages. Это потому, что их API не только для отправки. Надеюсь это поможет.

Для тех, кто пытается выяснить, что означает "Mailgun Magnificent API" в ответе Mailgun HTTP 200-OK API, это происходит при публикации в https://api.mailgun.net/v3/YOUR_DOMAIN_NAME/some/api/endpoint когда /some/api/endpoint не является действительной конечной точкой API Mailgun.

Есть несколько способов, которыми вы могли случайно увидеть это. Скажите, что ваш домен отправителя - "mg.example.com". Все они ответят "Mailgun Magnificent API":

  • Пропуск конечной точки API: https://api.mailgun.net/v3/mg.example.com (как отмечено в другом ответе)
  • Неправильное написание конечной точки: https://api.mailgun.net/v3/mg.example.com/massages (это должны быть сообщения с символом e)
  • Включая # после вашего домена: https://api.mailgun.net/v3/mg.example.com #/messages (возможно, вы пытались добавить # comment в ваш файл конфигурации, но ваш формат конфигурации не поддерживает встроенные комментарии?)
  • Включая дополнительный путь после вашего домена: https://api.mailgun.net/v3/mg.example.com/myapp/messages (может быть, вы используете клиентскую библиотеку Mailgun и установите MAILGUN_DOMAIN_NAME='mg.example.com/myapp' -The /myapp часть не принадлежит вашему доменному имени)

Обратите внимание, что вы не увидите "Mailgun Magnificent API", если YOUR_DOMAIN_NAME не является действительным отправляющим доменом, зарегистрированным в Mailgun. (В этом случае Mailgun вместо этого отвечает 404-Not Found).

Включение косой черты «/» после части URL-адреса сообщений в конце также приводит к этой ошибке.

Например, если вы используете такую ​​библиотеку, как Refit for c#, убедитесь, что интерфейс вашего сервиса объявлен следующим образом (см. атрибут Post):

      public interface IMailgunService
{
    [Post("")]
    Task<JsonDocument> SendEmailAsync([Body(BodySerializationMethod.UrlEncoded)] Dictionary<string, object> data);
}

Руководство по почтовым пистолетам показывает, что вы должны использовать https://api.mailgun.net/v3/YOUR_DOMAIN как YOUR_DOMAIN_NAME, как показано в приведенном ниже фрагменте, и это было проблемой .

Если вы используете mailgun-js, вам просто нужно, чтобы YOUR_DOMAIN был YOUR_DOMAIN_NAME.

Нет необходимости в части https://api.mailgun.net/v3

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

      $ curl -s --user 'api:key-xxx' \
https://api.mailgun.net/v3/your_domain/messages \
-F from='User <user@sample.mailgun.org>' \
-F to='xxx@gmail.com' \
-F subject='Hello' \
-F text='Testing some mailgun!'

Ответ

      {
  "id": "<xxx.x.xxx@your_domain>",
  "message": "Queued. Thank you."
}
Другие вопросы по тегам