6

我有一个托管在 Godaddy 上的 ASP.NET 应用程序,我想从中发送电子邮件。当它运行时,我得到:邮箱名称不允许。服务器响应是:抱歉,从您的位置转发被拒绝。代码和 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>

4

12 回答 12

22

1- 如果您的网站托管在 godaddy 上,您可以使用“relay-hosting.secureserver.net”而无需凭据。

2- 如果您的网站托管在 Godaddy 之外,您可以使用“smtpout.secureserver.net”和您的电子邮件帐户凭据。

PS:25有问题请换3535端口

托管在 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>
于 2011-01-04T13:51:37.743 回答
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="myname@mydomain.com">
            <network host="relay-hosting.secureserver.net" />
        </smtp>
    </mailSettings>
</system.net>

对我来说,关键是“message.From = From”和“message.ReplyTo = from”。GoDaddy 似乎希望消息来自您域中的地址。因此,对于联系页面,使用您的默认电子邮件地址作为 From 并将发件人设置为 ReplyTo。在那之后,电子邮件就可以正常通过了。

于 2010-03-21T21:41:41.170 回答
0

这很可能是来自 SMTP 服务器的回复,因为尝试发送电子邮件的机器尚未被列入白名单(或被列入垃圾邮件黑名单)。relay-hosting.secureserver.net 是 GoDaddy 服务器,还是在不同的网络上?您可能希望找到一个能够中继电子邮件的 GoDaddy 服务器。我想今天很多共享托管服务提供商都有限制。

我会找出您使用的是什么类型的 SMTP 服务器以及采取了哪些反垃圾邮件措施。管理员可能能够将 GoDaddy 服务器添加到允许主机的白名单中。您需要非常小心,并确保您的应用程序不能用作垃圾邮件发送者的代理。确保验证所有输入以确保其安全。

于 2009-09-01T02:07:34.877 回答
0

检查您的主机名。您确定您的帐户未配置为使用 mail.greektools.net 吗?这是 GoDaddy 虚拟主机的默认格式。

于 2009-09-01T04:07:03.103 回答
0

defaultCredentials="false"

在您的网络元素中

     <network host="relay-hosting.secureserver.net" port="25" userName="********" password="*********" defaultCredentials="false" />
于 2009-09-01T13:26:00.510 回答
0

只是为了测试。从 web.config 中删除用户名和密码值。

然后,在您的代码集中

//call this line, before you call .Send
client.Credentials = CredentialCache.DefaultNetworkCredentials; 
client.Send(msg)
于 2009-09-01T13:32:13.513 回答
0

我刚问过 GoDaddy,如何设置 SMTP 表单邮件程序,他们告诉我需要使用中继服务器,没有用户名、密码和端口。要使用的服务器名称与您使用的名称相同。

于 2009-11-03T21:31:30.223 回答
0

我应该在我的 ASP.NET 3.5 代码中使用什么电子邮件或中继服务器?

您无需为此中继服务器提供用户名和密码。

于 2010-03-21T21:50:50.353 回答
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);
}
于 2016-03-05T03:48:01.907 回答
0

对于那些想知道除了接受的答案之外应该是什么 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);
    }
于 2017-08-26T15:59:54.107 回答
0

试试下面的代码:

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

它对我有用。

于 2018-09-13T16:10:35.793 回答
0

为我工作的 Go Daddy 电子邮件代码从 c# 代码发送

var smtp = new SmtpClient
{
  Host = "smtpout.secureserver.net",
  Port = 25,
  UseDefaultCredentials = false,
  Credentials = new NetworkCredential("domain.xyz.com", "password...")
};
using (var message = new MailMessage("domain.xyz.com", "domain.xyz.com")
 {
    IsBodyHtml = false,
    Subject = modal.Subject,
    Body = modal.Body
 })
  {
   smtp.Send(message);
  }
于 2020-08-17T21:05:31.660 回答