2009-03-11 6 views
3

La fonction suivante fonctionne parfaitement:fonctionnalité System.Web.Mail à Porting System.Net.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); 
    } 

Cependant, je reçois un avertissement de construction me disant que System.Web.Mail est obsolète, et que Je devrais utiliser System.Net.Mail. Donc, je System.Net.Mail, et je suis venu avec la fonction suivante pour remplacer mon ancien:

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); 
    } 

Je ne pas eu des exceptions ou des erreurs, mais mon message ne passe par. Quelqu'un peut-il me dire ce que je peux faire de mal? Merci d'avance.

+0

Etes-vous sûr que l'authentification est correcte? Mieux vaut vérifier le journal des événements sur le serveur de messagerie et aussi sur le système local? – RobS

+0

Je n'ai pas accès aux journaux du serveur de messagerie. C'est un serveur de messagerie hébergé. Cependant, si elle ne s'est pas correctement authentifiée, la méthode System.Net.Mail.smptClient.Send() déclenchera une exception, comme System.Web.Mail.SmtpMail.Send() lève une exception lorsque l'authentification est sans succès. –

+0

Je suis en train de tester une implémentation similaire (je viens juste de la convertir en System.Net.Mail) et je verrai si j'ai le même problème – RobS

Répondre

1

Si je ne me trompe pas ... vous utilisez l'hébergement Goddady. Je l'utilise aussi ... et j'ai **relay-hosting.secureserver.net** comme serveur SMTP. Je ne sais pas ... peut être peut être quelque chose comme ça ... ou vous n'avez pas défini le relais dans votre console.

1

J'ai testé le code ci-dessus et cela fonctionne très bien. Je devais ajouter les propriétés du corps et du sujet, mais même sans elles, je recevais toujours un email vide. J'ai également essayé avec et sans fournir des informations d'identification, les deux ont fonctionné.

Initialement, je n'avais pas changé votre chaîne hôte et j'ai reçu une exception avec le message "Échec de l'envoi du courrier".

Questions connexes