Hier ist meine E-Mail-Klasse:
public class Email
{
public enum MailAddressType
{
From = 1,
Bcc
}
private static MailAddress _from = null;
public static void SendEmail(string to, string subject, string body)
{
SendEmail(to, subject, body, From, string.Empty);
}
public static void SendEmail(string to, string subject, string body, string from)
{
SendEmail(to, subject, body, from, MailAddressType.From);
}
public static void SendEmail(string to, string subject, string body, string addresses, MailAddressType addressType)
{
MailAddress from = From;
string bcc = string.Empty;
if (MailAddressType.From == addressType)
{
from = new MailAddress(addresses);
}
else
{
bcc = addresses;
}
SendEmail(to, subject, body, from, bcc);
}
private static void SendEmail(string to, string subject, string body, MailAddress from, string bcc)
{
MailMessage message = new MailMessage();
message.From = From;
message.To.Add(to);
if (!string.IsNullOrEmpty(bcc))
{
message.Bcc.Add(bcc);
}
message.ReplyTo = from;
message.Subject = subject;
message.Body = HttpContext.Current.Server.HtmlEncode(body);
SmtpClient smtp = new SmtpClient();
smtp.Send(message);
}
public static MailAddress From
{
get
{
if (null == _from)
{
SmtpSection section = (SmtpSection)ConfigurationManager.GetSection("system.net/mailSettings/smtp");
string address = section.From;
string displayName = ConfigurationManager.AppSettings["fromEmailDisplayName"];
_from = new MailAddress(address, displayName);
}
return _from;
}
}
}
Und hier sind die entsprechenden web.config Einstellungen:
<appSettings>
<add key="fromEmailDisplayName" value="Firstname Lastname"/>
</appSettings>
<system.net>
<mailSettings>
<smtp deliveryMethod="Network" from="[email protected]">
<network host="relay-hosting.secureserver.net" />
</smtp>
</mailSettings>
</system.net>
Für mich war der Schlüssel "message.From = Von" und „Nachricht. ReplyTo = von ". GoDaddy scheint zu wollen, dass die Nachricht von einer Adresse in Ihrer Domain kommt. Verwenden Sie daher für Kontaktseiten Ihre Standard-E-Mail-Adresse als Absender und legen Sie den Absender als ReplyTo fest. E-Mail geht danach gut durch.
Ich hatte Probleme bei der Verwendung von 'relay-hosting.secureserver.net' als' smtpClient.Host'. Manchmal hat es lange gedauert, um zu senden, und andere, die es senden würde, eine Ausnahme auslösend: "Postfachname nicht erlaubt. Die Antwort des Servers war: Entschuldigung, das Weiterleiten, das von Ihrem Standort verweigert wurde". Durch die Änderung meines Hosts auf 'smptout.secureserver.net' wurde dieses Problem behoben und die E-Mail kann innerhalb von Sekunden gesendet werden. Vielen Dank: D +1 –
godaddy hat einige Änderungen an der E-Mail-Infrastruktur vorgenommen. Sie können Ihr E-Mail-Konto in verschiedenen Rechenzentren erstellen. So können Sie Amerika, Europa oder Asien Server wählen. Aus diesem Grund müssen Sie einen SMTP-Server für Ihre Region verwenden. wie "smtpout.europe.secureserver.net" –
Mein Problem war Port 25. Vielen Dank für den Vorschlag Port 3535. Arbeitete wie ein Charme! – curiousBoy