Портирование функциональности System.Web.Mail на System.Net.Mail - PullRequest
3 голосов
/ 11 марта 2009

Прекрасно работает следующая функция:

    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 ]

1 голос
/ 11 марта 2009

Если я не ошибаюсь ... вы используете хостинг Goddady. Я также использую это ... и у меня есть **relay-hosting.secureserver.net** в качестве SMTP-сервера. Я не знаю ... может быть что-то в этом роде ... или вы не установили реле в своей консоли.

1 голос
/ 11 марта 2009

Я проверял ваш код выше, он работает нормально. Мне пришлось добавить свойства тела и темы, но даже без них я все равно получил пустое письмо. Я также пытался с и без предоставления учетных данных, оба работали.

Изначально я не изменил строку вашего хоста и получил исключение с сообщением "Ошибка отправки почты".

...