2009-09-01 4 views
6

У меня есть приложение ASP.NET, размещенное на Godaddy, с которого я хочу отправить электронное письмо. Когда он запускается, я получаю: Имя почтового ящика не разрешено. Ответ сервера: извините, ретрансляция отказана из вашего местоположения. важные части кода и Web.config приведены ниже:Не удается отправить электронную почту в ASP.NET через серверы Godaddy

msg = new MailMessage("[email protected]", email); 
     msg.Subject = "GreekTools Registration"; 
     msg.Body = 
      "You have been invited by your organization to register for the GreekTools recruitment application.<br/><br/>" + 
      url + "<br/><br/>" + 
      "Sincerely,<br/>" + 
      "The GreekTools Team"; 

     msg.IsBodyHtml = true; 

     client = new SmtpClient(); 
     client.Host = "relay-hosting.secureserver.net"; 

     client.Send(msg); 

<system.net> 
<mailSettings> 
    <smtp from="[email protected]"> 
    <network host="relay-hosting.secureserver.net" port="25" userName="********" password="*********" /> 
    </smtp> 
</mailSettings> 

ответ

17

1 Если ваш сайт размещен на godaddy, вы можете использовать «relay-hosting.secureserver.net» без учетных данных.

2- Если ваш сайт размещен за пределами godaddy, вы можете использовать «smtpout.secureserver.net» с учетными данными учетной записи электронной почты.

PS: Пожалуйста, измените порт 3535, если у вас есть проблемы с 25

Hosted На GoDaddy

<system.net> 
     <mailSettings> 
     <smtp from="[email protected]"> 
     <network host="relay-hosting.secureserver.net"/> 
     </smtp> 
     </mailSettings> 
    </system.net> 

Внешняя

<system.net> 
    <mailSettings> 
     <smtp from="[email protected]"> 
     <network host="smtpout.secureserver.net" 
      userName="[email protected]" password="your_password_here" 
      port="25" /> 
     </smtp> 
    </mailSettings> 
    </system.net> 
+0

У меня возникали проблемы при использовании 'relay-hosting.secureserver.net' как' smtpClient.Host'. Иногда было много времени для отправки, а другие - при отправке исключения: «Имя почтового ящика не разрешено. Ответ сервера: извините, ретрансляция отказана из вашего местоположения». Изменение моего хоста на 'smptout.secureserver.net' разрешило эту проблему и позволяет отправлять почту за считанные секунды. Большое спасибо: D +1 –

+0

godaddy внесла некоторые изменения в свою инфраструктуру электронной почты. Вы можете создать свою учетную запись электронной почты в разных центрах обработки данных. поэтому вы можете выбрать серверы America, europe или asia. По этой причине вам нужен сервер smtp для вашего региона. как «smtpout.europe.secureserver.net» –

+0

Моя проблема была в порте 25. Большое спасибо за предложение порта 3535. Работал как шарм! – curiousBoy

0

Это, вероятно, ответ от сервера SMTP, потому что машина пытается отправить сообщение электронной почты не белый список (или черный список для СПАМ). Является ли relay -hosting.secureserver.net сервером GoDaddy или он работает в другой сети? Возможно, вы захотите найти сервер GoDaddy, который позволяет отправлять электронную почту. Я бы предположил, что сегодня у многих хостинг-провайдеров есть ограничения.

Я бы узнал, какой тип SMTP-сервера вы используете и какие меры защиты от спама на месте. Администратор может добавить сервер GoDaddy в белый список разрешенных хостов. Вы должны быть очень осторожны и убедитесь, что ваше приложение не может использоваться в качестве прокси-сервера для спамера. Обязательно проверяйте все входные данные, чтобы убедиться в их безопасности.

+0

relay-hosting.secureserver.net является сервером ретрансляции SMT GoDaddy. – Jared

0

Проверьте свое имя хоста. Вы уверены, что ваша учетная запись не настроена на использование mail.greektools.net? Это формат по умолчанию для GoDaddy веб-хостинга ..

+0

Я попытался изменить его на mail.greektools.net, и у меня получилось общее исключение «отказ отправить» (или что-то в этом роде). – Jared

0

набор

defaultCredentials="false" 

в сетевом элементе

 <network host="relay-hosting.secureserver.net" port="25" userName="********" password="*********" defaultCredentials="false" /> 
0

Просто для теста. Удалите значения имени пользователя и пароля из web.config.

Затем в коде установить

//call this line, before you call .Send 
client.Credentials = CredentialCache.DefaultNetworkCredentials; 
client.Send(msg) 
0

Я просто спросил GoDaddy, как настроить форму SMTP почтовик, и они сказали мне, что мне нужно бы использовать релейный сервер, без имени пользователя, нет пароля и нет порта. Имя используемого сервера - это то же имя, которое вы использовали.

2

Вот мой электронный класс:

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 = С" и «сообщение. ReplyTo = from ". Кажется, что GoDaddy хочет, чтобы сообщение появилось с адреса в вашем домене. Поэтому для контактных страниц используйте свой адрес электронной почты по умолчанию как «От» и установите отправителя как ReplyTo. После этого электронная почта проходит через штраф.

0
var message = new MailMessage(); 
message.To.Add(new MailAddress("email-address")); 
message.From = new MailAddress("email-address"); 
message.Subject = "subject"; 
message.Body = string.Format("message-body"); 
message.IsBodyHtml = true; 
using (var smtp = new SmtpClient()) 
{ 
    smtp.Host = "relay-hosting.secureserver.net"; 
    smtp.EnableSsl = false; 
    smtp.Credentials = CredentialCache.DefaultNetworkCredentials; 
    await smtp.SendMailAsync(message); 
} 
0

Для тех, кто хочет знать, что должно быть C# код в дополнение к принятому ответу, ниже код работал для меня. Обратите внимание, что адрес «from» уже указан в web.config в принятом ответе, поэтому не нужно упоминать его в коде C#.

public static void SendMail(string emailid, string subject, string body) 
    { 
     System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient(); 

     System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage(); 

     msg.To.Add(new MailAddress(emailid)); 

     msg.Subject = subject; 
     msg.IsBodyHtml = true; 
     msg.Body = body; 

     client.Send(msg); 
    } 
Смежные вопросы