Распространенная проблема с алгоритмом при попытке отправить электронное письмо с помощью C#

Я пытаюсь отправить электронное письмо через приложение C#, но каждый раз, когда я пытаюсь отправить электронное письмо, возникает ошибка, говорящая: «Ошибка вызова sspi», когда я смотрю на внутреннее исключение он говорит что-то вроде "Клиент и сервер не могут обмениваться данными, потому что у них нет общего алгоритма"

Мой код таков:

try
{
    var fromAddress = new MailAddress("[email protected]", "Sender");
    var toAddress = new MailAddress("[email protected]", "Receiver");
    const string fromPassword = "Pass123";
    const string subject = "Prueba";
    const string body = "Prueba body";

    var smtp = new SmtpClient
    {
        Host = "smpt.domain.com",
        Port = 25,
        EnableSsl = true,
        DeliveryMethod = SmtpDeliveryMethod.Network,
        UseDefaultCredentials = false,
        Credentials = new System.Net.NetworkCredential(fromAddress.Address, fromPassword)
    };
    using (var message = new MailMessage(fromAddress, toAddress)
    {
        Subject = subject,
        Body = body,
        DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure,
        BodyEncoding = UTF8Encoding.UTF8
    })
    {
        smtp.Send(message);
    }
}
catch (Exception exc) 
{
    MessageBox.Show(string.Format("Error: {0}", exc.Message), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}

И в моем App.config у меня есть что-то вроде:

<system.net>
    <mailSettings>
      <smtp from="[email protected]">
        <network host="smtp.domain.com" port="25" userName="[email protected]" password="Pass123" defaultCredentials="true" />        
      </smtp>
    </mailSettings>
</system.net>

person dontknowathing    schedule 11.02.2015    source источник
comment
Верно ли, что пароль для вашего отправителя различается между кодом и конфигурацией, или вы просто отредактировали реальные данные?   -  person Rowland Shaw    schedule 11.02.2015
comment
Нет, я просто изменил реальные данные и пропущу это, я исправлю   -  person dontknowathing    schedule 11.02.2015


Ответы (2)


Проверьте эту https://www3.trustwave.com/support/kb/article.aspx?id=11849

  • Перейдите к панели управления.
  • Административные инструменты, а затем Локальная политика безопасности.
  • Локальные политики и параметры безопасности.
  • Криптография системы: используйте алгоритмы, совместимые с FIPS, для шифрования, хеширования и подписи.
  • Отключите настройку и нажмите кнопку Применить.
  • Перезапустите IIS
person komluk    schedule 11.02.2015
comment
Я только что попробовал это, теперь я получаю другую ошибку, ошибка отправки электронной почты и внутреннее исключение: клиент и сервер не могут общаться, потому что они не обладают общим алгоритмом - person dontknowathing; 11.02.2015
comment
Я пробовал это [ссылка] (blogs.msdn.com/b/winsdk/ archive/2014/05/01/), но я не могу понять, какой шифр использует мой сервер - person dontknowathing; 11.02.2015

В конце концов, я просто отказываюсь от использования SmtpClient и MailMessage, я использовал Outlook MailItem.

Microsoft.Office.Interop.Outlook.Application oApp = new Microsoft.Office.Interop.Outlook.Application();
Microsoft.Office.Interop.Outlook.MailItem oMsg = (Microsoft.Office.Interop.Outlook.MailItem)oApp.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem);

oMsg.To = "[email protected]";
oMsg.Subject = "Prueba";
oMsg.BodyFormat = Microsoft.Office.Interop.Outlook.OlBodyFormat.olFormatHTML;

oMsg.HTMLBody = "<html><body>";
oMsg.HTMLBody += string.Format("<p>El dato {0}", var1);
oMsg.HTMLBody += string.Format("se guardo en la  <a href='{0}'>dirección</a>.</p> </br> <p>Saludos.</p> </body></html>", path);

oMsg.Display(false); 
((Microsoft.Office.Interop.Outlook._MailItem)oMsg).Send();
person dontknowathing    schedule 13.02.2015