我正在处理遗留应用程序,该代码在其代码中具有此逻辑,我不幸地无法修改。我在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);
答案 0 :(得分:1)
System.Web.Mail
没有公开任何指定凭据的设置。但 可以发送经过身份验证的电子邮件,因为System.Web.Mail
是基于CDOSYS构建的。 Here's a KB article which describes how to do it,但您基本上必须修改邮件本身的一些属性:
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);
这是否适用于您的情况,我不确定......