ASP电子邮件发送错误

时间:2011-02-07 02:49:38

标签: asp.net

我发现这个网站对我之前遇到的所有问题非常有用,但我无法获得以下帮助。

我开发了一个能够发送电子邮件的网站。在localhost上,这个工作非常好。当我说localhost时,我能够收到发送的电子邮件,但当我上传到服务器时,我在开始发送电子邮件的过程中遇到此错误。

“连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立的连接失败,因为连接的主机未能响应IPADDRESS:PORT”

在端口的地址上尝试ping并且ping正在运行。

这是代码

string strFrm = ConfigurationManager.AppSettings["FromAddress3"].ToString();

string[] receive = {"emailaddress1","emailaddress2","emailaddress3","emailaddress4"};

string subject = "New registration";

string body = "<html><head><title>Registered Candidates</title></head><body>bla bla bla</body></html>";

//I however have put reg exp validator on the form

if(txtEmail.Text.Contains("@") && txtEmail.Text.Contains("."))
{
    for (int i = 0; i <= receive.Length - 1; i++)
    {
        MailMessage msg = new MailMessage(strFrm, receive[i], subject, body);
        msg.IsBodyHtml = true;

        SmtpClient client = new SmtpClient();

        client.Send(msg);
     }

     Response.Redirect("Thankyou.html");

的Web.config

<mailSettings>
  <smtp from="from address">
    <network host="server" port="25"
userName="username" password="password"  />
  </smtp>
</mailSettings>

请帮忙。我通过预编译网站上传到我的服务器并上传文件。

2 个答案:

答案 0 :(得分:1)

确保您指向生产服务器上的SMTP服务,它可能无法像在开发计算机上那样在“localhost”上运行。并且ping服务器并不能真正告诉您它是否启用了SMTP。

我通常更喜欢在web.config中为我的网站设置SMTP:

<system.net>
  <mailSettings>
    <smtp deliveryMethod="Network" from="you@yourdomain.com">
      <network host="localhost" port="25" userName="user" password="pass" />
    </smtp>
  </mailSettings>
</system.net>

更新:

如果您的代码在开发计算机上运行,​​并且在具有相同配置的服务器上失败,那么可能存在阻塞问题。我建议尝试使用一个简单的实现,除了测试服务器SMTP配置之外什么都不做。您可能想尝试<smtp deliveryMethod="SpecifiedPickupDirectory">,在测试发送电子邮件的代码时非常有帮助。请参阅MSDN上的SmtpDeliveryMethod Enumeration

答案 1 :(得分:0)

解决了..:D

我的托管服务器是godaddy,我的托管计划仅支持年龄较大的system.web.mail,即CDOSYS概念。

这是代码。

using System.Web.Mail;

private void SendEmail()
{
const string SERVER = "relay-hosting.secureserver.net";
MailMessage oMail = new System.Web.Mail.MailMessage();
oMail.From = "emailaddress@domainname";
oMail.To = "emailaddress@domainname";
oMail.Subject = "Test email subject";
oMail.BodyFormat = MailFormat.Html; // enumeration
oMail.Priority = MailPriority.High; // enumeration
oMail.Body = "Sent at: " + DateTime.Now;
SmtpMail.SmtpServer = SERVER;
SmtpMail.Send(oMail);
oMail = null; // free up resources
}

感谢Jakob积极参与! :)