Member 13188273 Ответов: 0

C# отправка аутентифицированной почты через SMTP


у меня небольшая проблема со скриптом sendmail. Моя почта не может быть доставлена в один из моих внутренних списков рассылки. Другие дл получают почту. Я получаю ответное сообщение:
RESOLVER.RST.AuthRequired; Authentication required

Мой код c# выглядит следующим образом (метод SendMail принадлежит классу с именем Plan):

public void SendMail(int supplierValue, List<Location> locationList, string meldingsNr, string date, string fromT, string tillT)
    {
    var mailFrom = "mail@mail.com";
    SmtpClient client = new SmtpClient("server ip",25);
    client.UseDefaultCredentials = false;
    NetworkCredential basicAuthInfo = new NetworkCredential("username", "password");
    client.Credentials = basicAuthInfo;
    client.EnableSsl = false;

    // Create some empty vars

    var toList = "";
    var ccList = "";
    var mailSubject = "";
    var mailBody = "";
    List<string> locationListString = new List<string>();
    List<string> locationListString2 = new List<string>();

    // Populate toList with var llString

    ** code removed **

    // switch on supplier Value to fill toList, ccList and mailSubject

    ** code removed **

    // Create mail message

    MailMessage message = new MailMessage();
    MailAddress mailAddress = new MailAddress(mailFrom);
    message.To.Add(toList);
    message.From = mailAddress;
    message.CC.Add(ccList);

    // set subject and encoding

    message.Subject = mailSubject;
    message.SubjectEncoding = Encoding.UTF8;

    // set body and encoding

    message.Body = mailBody;
    message.BodyEncoding = Encoding.UTF8;
    message.IsBodyHtml = true;

    try
    {
        // Send mail 
        client.SendCompleted += (s, e) =>
        {
            client.Dispose();
            message.Dispose();
        };
        client.SendAsync(message, null);

    } catch (SmtpException ex)
    {
        MessageBox.Show(ex.InnerException.Message);

    } catch (System.Exception ex)
    {
       MessageBox.Show(ex.InnerException.Message);
    }
}


Что я уже пробовал:

я попробовал применить это решение:
аутентификация - как сделать SMTP аутентифицированным в C# - переполнение стека[^]

Убедитесь, что вы установили SmtpClient.Учетные данные после вызова SmtpClient.UseDefaultCredentials = false. Порядок важен как установка SmtpClient.UseDefaultCredentials = false сбросит SmtpClient.Учетные данные равны нулю.

но это не сработало. Есть ли еще что-то неправильное в моем коде ?

Richard Deeming

Похоже, Exchange считает, что ваше сообщение исходит из-за пределов вашей сети и не проходит проверку подлинности.

На вкладке "Настройки потока почты" есть опция отключения требования аутентификации, но вы, вероятно, не хотите этого делать.

Посмотрим, если этот ответ ServerFault[^] помощи.

Member 13188273

Нет я не хочу этого делать :)

0 Ответов