将System.Web.Mail功能移植到System.Net.Mail

时间:2009-03-11 00:00:44

标签: c# system.net.mail system.web.mail

以下功能完美无缺:

    protected void SendWebMailMessage(string DisplayName, string From, string ReplyTo,
        string To, string Subject, string Body, string Attachments)
    {
        System.Web.Mail.MailMessage msg = new System.Web.Mail.MailMessage();
        msg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserver",
             "smtpout.secureserver.net");
        msg.Fields.Add(
             "http://schemas.microsoft.com/cdo/configuration/smtpserverport", 25);
        msg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusing", 
             2);
        msg.Fields.Add(
             "http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", 1);
        msg.Fields.Add(
             "http://schemas.microsoft.com/cdo/configuration/sendusername", From);
        msg.Fields.Add(
             "http://schemas.microsoft.com/cdo/configuration/sendpassword",
             mailpassword);
        msg.To = To;
        msg.From = DisplayName + "<" + From + ">";
        msg.BodyFormat = MailFormat.Html;
        msg.Subject = Subject;
        msg.Body = Body;
        msg.Headers.Add("Reply-To", ReplyTo);
        SmtpMail.SmtpServer = "smtpout.secureserver.net";
        SmtpMail.Send(msg);
    }

但是,我收到一个构建警告,告诉我System.Web.Mail已经过时了 我应该使用System.Net.Mail。所以我使用了System.Net.Mail,我提出了 以下函数替换旧的:

    protected void SendNetMailMessage(string DisplayName, string From, string ReplyTo, 
        string To, string Subject, string Body, string Attachments)
    {
        MailAddress addrfrom = new MailAddress(From, DisplayName);
        MailAddress addrto = new MailAddress(To);
        MailAddress replytoaddr = new MailAddress(ReplyTo);
        System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();
        msg.From = addrfrom;
        msg.To.Add(addrto);
        msg.ReplyTo = replytoaddr;
        msg.IsBodyHtml = true;
        SmtpClient smtp = new SmtpClient("smtpout.secureserver.net");
        smtp.Credentials = new NetworkCredential(From, mailpassword);
        smtp.Send(msg);
    }

我没有任何例外或错误,但我的信息永远不会通过。任何人都可以 告诉我,我可能做错了什么?提前谢谢。

2 个答案:

答案 0 :(得分:1)

我测试了你上面的代码,它运行正常。我不得不添加正文和主题属性,但即使没有它们,我仍然收到一封空白的电子邮件。我也尝试过,无论是否提供凭证,都是有效的。

最初我没有更改您的主机字符串,并且收到了一条例外消息“发送邮件失败。”

答案 1 :(得分:1)

如果我没有错......你正在使用Goddady托管。 我也在使用它......我有**relay-hosting.secureserver.net**作为SMTP服务器。 我不知道......可能是这样的......或者你没有在控制台中设置继电器。