Go Daddy электронной почты SMTP не отправляет электронную почту, но без ошибок - PullRequest
0 голосов
/ 17 марта 2019

Я недавно приобрел пакет электронной почты Essentials от GoDaddy, и я пытаюсь настроить отправку электронной почты с моего сайта через SMTP.У меня настроен следующий код:

var smtp = new SmtpClient
{
    Host = "mycoolwebsite.com.mail.protection.outlook.com",
    Port = 25,
    DeliveryMethod = SmtpDeliveryMethod.Network,
    UseDefaultCredentials = false,
    Credentials = new NetworkCredential("info@mycoolwebsite.com", "supersecurepassword")
};
using (var message = new MailMessage("info@mycoolwebsite.com", "myemail@test.com")
{
    IsBodyHtml = true,
    Subject = subject,
    Body = body
})
{
    smtp.Send(message);
}

Он отправляется и не выдает никаких исключений, однако электронное письмо не отправляется.Я очень смущен, почему это не работает.

У кого-нибудь есть идеи?

Ответы [ 3 ]

1 голос
/ 17 марта 2019

Ничего не зная об API GoDaddy, единственное, что я могу предложить, это, возможно, проверить правильность порта.Это может потребовать защиты транспортного уровня, в этом случае порт 25 будет закрыт.

Например, я думаю, что SMTP-сервер office365 (smtp.office365.com) требует защищенного SMTP и использует порт 587.

1 голос
/ 18 марта 2019

Для этого потребуется TLS, что означает использование SMTP MailKit.Вы можете получить его, используя менеджер пакетов NuGet в Visual Studio.Ищите MailKit по Джеффри Стедфасту.

Документация также здесь .

Как только у вас есть все ссылки на месте, используйте MailKit.Net.Smtp.SmtpClient class:

  • Установить "smtp.office365.com" в качестве хоста
  • Использовать порт 587.

Вам потребуетсядобавьте эту строку после создания экземпляра smtp, поскольку у вас нет токена OAuth:

smtp.AuthenticationMechanisms.Remove("XOAUTH2");

Это будет делать то, что вам нужно.

Вот пример того, как все это должно выглядеть:

string FromPseudonym = "MySite Support";
string FromAddress = "admin@MySite.com";
var message = new MimeMessage();

message.From.Add(new MailboxAddress(FromPseudonym, FromAddress));
message.To.Add(new MailboxAddress("Recipient Pseudonym", "RecipientAddress@somewhere.com"));
message.Subject = "Testing Email";

var bodyBuilder = new BodyBuilder();

string MsgBody = "Message Body stuff goes here";

bodyBuilder.HtmlBody = MsgBody;
message.Body = bodyBuilder.ToMessageBody();

using (var client = new SmtpClient())
{
    client.Connect("smtp.office365.com", 587);
    client.AuthenticationMechanisms.Remove("XOAUTH2");
    client.Authenticate(FromAddress, "Your super secret password goes here");

    client.Send(message);
    client.Disconnect(true);
}

Вам понадобятся следующие пространства имен:

using MimeKit;
using MimeKit.Utils;
using MailKit.Net.Smtp;
1 голос
/ 17 марта 2019

Я был там, где ты был раньше. Если вы запускаете приложение из среды разработки, электронные письма отправляться не будут. GoDaddy SMTP настроен так, что электронные письма будут отправляться только по запросу из их среды.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...