Невозможно отправить почту через 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."
}