Добрый день, сейчас я пытаюсь выполнить проверку электронной почты и следовал всем инструкциям, но получаю статус ответа Неавторизованный
private bool SendEmail(string body, string email)
{
//create client
RestClient client = new RestClient("https://api.eu.mailgun.net/v3");
client.Authenticator =
new HttpBasicAuthenticator("api",
"02a4bca7b2e0c72e98841b20beef1585-69210cfc-a7bc0929");
var request = new RestRequest();
request.AddParameter("domain", "sandbox4706f89b4150439ebca3c380f3fa96d0.mailgun.org");
request.Resource = "{domain}/messages";
request.AddParameter("from", "Ecommerce sandbox Mail<[email protected]>");
request.AddParameter("to", email);
request.AddParameter("subject", "Email Vertfication Email");
request.AddParameter("text", body);
request.Method = Method.Post;
var response = client.Execute(request);
return response.IsSuccessful;
}
У кого-нибудь была такая же проблема? Я подключаюсь из ЕС, поэтому сменил клиент с https://api.mailgun.net/v3 на https://api.eu.mailgun.net/v3 Если я использую https://api.mailgun.net/v3, я получаю статус ответа Unauthorized.
Похоже, Mailgun что-то изменил в API, но забыл изменить документацию. Если вы перейдете на панель управления доменом и выберите API, вы увидите, что базовый URL-адрес отличается от приведенного в примере.
Итак, базовый URL должен быть не https://api.mailgun.net/v3/
, а https://api.mailgun.net/v3/sandbox....mailgun.org`
Кроме того, убедитесь, что письмо, на которое вы отправляете, добавлено в список авторизованных получателей для вашего домена (см., как добавить его, в базу знаний)
После того, как у вас есть правильный базовый URL-адрес и авторизованный (и подтвержденный получатель), вы можете отправить свое электронное письмо. Итак, в вашем примере это будет так (посмотрите также комментарии):
//note the URL with domain
RestClient client = new RestClient("https://api.eu.mailgun.net/v3/sandbox4706f89b4150439ebca3c380f3fa96d0.mailgun.org");
client.Authenticator =
new HttpBasicAuthenticator("api",
"02a4bca7b2e0c72e98841b20beef1585-69210cfc-a7bc0929");
var request = new RestRequest();
//request.AddParameter("domain", ... is not needed anymore becasue of base URL
//also, Resource is now without {domain} parameter
request.Resource = "/messages";
request.AddParameter("from", "Ecommerce sandbox Mail<[email protected]>");
//this mail should be authorized recipient
request.AddParameter("to", email);
request.AddParameter("subject", "Email Vertfication Email");
request.AddParameter("text", body);
request.Method = Method.Post;
var response = client.Execute(request);
return response.IsSuccessful;
... И это должно отправить электронное письмо без несанкционированной ошибки