ASP.NET SMTP + web.config - PullRequest
       16

ASP.NET SMTP + web.config

2 голосов
/ 07 августа 2010

Я работаю над устаревшим приложением, в коде которого есть эта логика, которую я, к сожалению, не могу изменить.У меня есть правильные настройки в web.config, и мне было интересно, если я укажу правильный SMTP-сервер, будут ли настройки web.config позаботиться о учетных данных?

Если нет, какие у меня есть варианты отправки электронной почты сэтот код?

  string str13 = "";
    str13 = StringType.FromObject(HttpContext.Current.Application["MailServer"]);
    if (str13.Length > 2)
    {
        SmtpMail.SmtpServer = str13;
    }
    else
    {
        SmtpMail.SmtpServer = "localhost";
    }
    SmtpMail.Send(message);

1 Ответ

1 голос
/ 07 августа 2010

System.Web.Mail, к сожалению, не предоставляет никаких настроек для указания учетных данных. Тем не менее, позволяет отправлять аутентифицированные электронные письма, поскольку System.Web.Mail построен поверх CDOSYS. Вот статья в КБ, в которой описывается, как это сделать , но в основном вам нужно изменить некоторые свойства самого сообщения:

var msg = new MailMessage();
if (userName.Length > 0)
{
    string ns = "http://schemas.microsoft.com/cdo/configuration/";
    msg.Fields.Add(ns + "smtpserver", smtpServer);
    msg.Fields.Add(ns + "smtpserverport", 25) ;
    msg.Fields.Add(ns + "sendusing", cdoSendUsingPort) ;
    msg.Fields.Add(ns + "smtpauthenticate", cdoBasic); 
    msg.Fields.Add(ns + "sendusername", userName); 
    msg.Fields.Add(ns + "sendpassword", password); 
}
msg.To = "someone@domain.com"; 
msg.From = "me@domain.com";
msg.Subject = "Subject";
msg.Body = "Message";
SmtpMail.Send(msg);

Работает ли это в вашей ситуации или нет, я не уверен ....

...