Не удается отправить электронную почту в ASP.NET через серверы Godaddy - PullRequest
6 голосов
/ 01 сентября 2009

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

msg = new MailMessage("accounts@greektools.net", 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="accounts@greektools.net">
    <network host="relay-hosting.secureserver.net" port="25" userName="********" password="*********" />
  </smtp>
</mailSettings>

Ответы [ 11 ]

19 голосов
/ 04 января 2011

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

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

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

Размещено на GoDaddy

    <system.net>
      <mailSettings>
       <smtp from="abc@xyz.net">
        <network host="relay-hosting.secureserver.net"/>
       </smtp>
      </mailSettings>
    </system.net>

Внешняя

  <system.net>
    <mailSettings>
      <smtp from="abc@xyz.net">
        <network host="smtpout.secureserver.net" 
           userName="abc@xyz.net" password="your_password_here" 
           port="25" />
      </smtp>
    </mailSettings>
  </system.net>
2 голосов
/ 22 марта 2010

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

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="myname@mydomain.com">
            <network host="relay-hosting.secureserver.net" />
        </smtp>
    </mailSettings>
</system.net>

Для меня ключом были «message.From = From» и «message.ReplyTo = from». GoDaddy, похоже, хочет, чтобы сообщение пришло с адреса в вашем домене. Поэтому для страниц контактов используйте свой адрес электронной почты по умолчанию в качестве Откуда и укажите отправителя в качестве Ответа. После этого электронная почта проходит нормально.

0 голосов
/ 13 сентября 2018

Попробуйте код ниже:

smtp.Host = "relay-hosting.secureserver.net";
smtp.Port = 25;
smtp.Credentials = new System.Net.NetworkCredential("test@yourwebsitedomain.com", "*******");

Это сработало для меня.

0 голосов
/ 26 августа 2017

Для тех, кто хочет знать, каким должен быть код C # в дополнение к принятому ответу, у меня работал приведенный ниже код. Обратите внимание, что адрес «от» уже упоминается в 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);
    }
0 голосов
/ 05 марта 2016
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 голосов
/ 22 марта 2010

Какой почтовый сервер или сервер ретрансляции я должен использовать в своем коде ASP.NET 3.5?

Вам не нужно указывать имя пользователя и пароль для этого сервера ретрансляции.

0 голосов
/ 04 ноября 2009

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

0 голосов
/ 01 сентября 2009

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

Тогда в вашем кодовом наборе

//call this line, before you call .Send
client.Credentials = CredentialCache.DefaultNetworkCredentials; 
client.Send(msg)
0 голосов
/ 01 сентября 2009

комплект

defaultCredentials="false"

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

     <network host="relay-hosting.secureserver.net" port="25" userName="********" password="*********" defaultCredentials="false" />
0 голосов
/ 01 сентября 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...