我发现这个网站对我之前遇到的所有问题非常有用,但我无法获得以下帮助。
我开发了一个能够发送电子邮件的网站。在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>
请帮忙。我通过预编译网站上传到我的服务器并上传文件。
答案 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积极参与! :)