Вот мой класс электронной почты:
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;
}
}
}
И вот соответствующие настройки web.config:
<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>
Для меня ключ был "message.From=From" и "message.ReplyTo=from". Кажется, GoDaddy хочет, чтобы сообщение пришло с адреса в вашем домене. Поэтому для страниц контактов используйте адрес электронной почты по умолчанию в качестве отправителя и установите отправителя в качестве ReplyTo. После этого электронная почта проходит нормально.
21.03.2010
relay-hosting.secureserver.net
в качествеsmtpClient.Host
. Иногда отправка занимала много времени, а иногда вообще отправляла исключение: имя почтового ящика не разрешено. Ответ сервера был: извините, ретрансляция запрещена из вашего местоположения. Изменение моего хоста наsmptout.secureserver.net
решило эту проблему и позволяет отправлять почту за считанные секунды. Спасибо большое :D +1 04.01.2013