Porting della funzionalità System.Web.Mail su System.Net.Mail
-
08-07-2019 - |
Domanda
La seguente funzione funziona perfettamente:
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);
}
Tuttavia, ricevo un avviso di build che mi dice che System.Web.Mail è obsoleto e che dovrei usare System.Net.Mail. Quindi ho usato System.Net.Mail e mi sono inventato la seguente funzione per sostituire la mia precedente:
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);
}
Non ricevo eccezioni o errori, ma il mio messaggio non passa mai. Qualcuno può dimmi cosa potrei fare di sbagliato? Grazie in anticipo.
Soluzione
Se non sbaglio ... stai usando l'hosting Goddady.
Lo sto anche usando ... e ho ** relay-hosting.secureserver.net **
come server SMTP.
Non so ... potrebbe essere qualcosa del genere ... o non hai impostato il relè nella tua console.
Altri suggerimenti
Ho testato il tuo codice sopra e funziona benissimo. Ho dovuto aggiungere le proprietà del corpo e dell'oggetto, ma anche senza di loro ho ancora ricevuto un'e-mail vuota. Ho anche provato con e senza fornire credenziali, entrambi hanno funzionato.
Inizialmente non avevo modificato la stringa host e ho ricevuto un'eccezione con il messaggio "Errore nell'invio della posta". "