ASP.NET发送邮件,本地测试通过,放到服务器上却出现" 由于目标机器积极拒绝,无法连接",请高手解答
我放在本机IIS运行没有问题,但是放到服务器上后就出现了"System.Net.Sockets.SocketException: 由于目标机器积极拒绝,无法连接。"
百思不得其解...
望高手帮忙指点下..感激不尽..
邮件发送的代码如下:
- C# code
protected void sendMail(string receiveMail,string sendMail,string mailServer,string UserName,string PassWord,string Subject,string Content){ //发送邮件,直接发送带有用户名,密码的邮件,因为密码没有加密。 System.Net.Mail.SmtpClient client = new SmtpClient(mailServer); client.UseDefaultCredentials = false; //下面的用户名密码填写自己在163的用户名密码,也可以修改上面的SMTP服务器 client.Credentials = new System.Net.NetworkCredential(UserName, PassWord); client.DeliveryMethod = SmtpDeliveryMethod.Network; //创建MailMessage对象,参数分别为发件人地址,信件标题,信件正文 System.Net.Mail.MailMessage message = new MailMessage(sendMail, receiveMail,Subject,Content); message.BodyEncoding = System.Text.Encoding.UTF8; //编码 message.IsBodyHtml = true; //是否是HTML代码 client.Send(message); //发送 }[解决办法]
这个是因为对方将你这个视为垃圾邮件给屏蔽了
[解决办法]
给你篇文章参考一下:
发邮件由于目标机器积极拒绝,无法连接
重要说明:本文向您介绍如何在计算机上降低安全设置或关闭安全功能。您可以通过这些更改来解决特定的问题。我们建议您在进行更改之前,充分考虑在您的特定环境中实施这种替代方法可能带来的风险。如果实施该替代方法,请采取任何适当的附加措施来保护您的系统。
警告:此替代方法可能导致您的计算机或网络更易于受到恶意用户或恶意软件(如病毒)的攻击。我们不建议您采用这种替代方法,此信息仅供参考,您应自行决定是否实施此替代方法。使用此替代方法需要您自担风险。
注意:设计防病毒程序是为了帮助保护您的计算机不受病毒侵害。一定不要从您不信任的来源下载或打开文件,也不要访问不信任的网站或者在禁用防病毒程序时打开电子邮件附件。
有关计算机病毒的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
129972 (http://support.microsoft.com/kb/129972/) 计算机病毒:说明、预防和恢复
症状
当您尝试使用 Outlook Express 或 Outlook 发送或接收邮件时,可能会收到错误信息。当您尝试将邮件发送到简单邮件传输协议 (SMTP) 服务器时,可能会收到以下错误信息:
The connection to the server has failed.Account:''your_account'',
Server:''your_SMTP_server'', Protocol:SMTP, Port:25, Secure(SSL):NO,
Socket error:10061, Error Number:0x800ccc0e
同样,当您启动电子邮件客户端或尝试从邮局协议版本 3 (POP3) 服务器接收邮件时,可能会收到以下错误:
The connection to the server has failed.Account:''your_account'',
Server:''your_POP3_server'', Protocol:POP3, Port:110, Secure(SSL):NO,
Socket error:10061, Error Number:0x800ccc0e
原因
客户端连接到的邮件服务器上的端口被阻止或不可用。如果客户端尝试发送邮件,阻止的端口是 25;如果客户端尝试检索邮件,则阻止的端口是 110。请参考错误信息中的协议和端口号。
替代方法
要解决此问题,请使端口 110 和 25 可用。默认情况下,当 Exchange Server 服务启动时,端口 110 和 25 可用。当信息存储服务启动时,端口 110(用于 POP3)、端口 119(用于网络新闻传输协议 (NNTP))和端口 143(用于 Internet 邮件访问协议 (IMAP))在 Exchange Server 计算机上自动打开并变得可用。当 Internet 邮件服务启动时,端口 25 自动变得可用。如果这些服务不启动,这些端口就不可用。
如果这些服务正在运行,您可以使用 Windows NT Server 中包含的 Netstat 实用工具来验证服务器上的这些端口是否正在侦听(打开): 1. 在 Exchange Server 计算机上打开一个命令提示符。由于数据滚出了屏幕,因此您必须修改命令提示符属性。打开命令提示符,右键单击窗口左上角,然后单击属性。单击布局选项卡,然后将屏幕缓冲区大小改为 1,000。应用此更改。系统会提示您修改当前窗口或修改用于启动命令提示符的快捷方式。为了将来方便,您可以修改快捷方式。
2. 在命令提示符处,键入 netstat -an。回滚到数据输出的开始位置,查找以下项。
Proto Local Address Foreign Address State
TCP 0.0.0.0:25 0.0.0.0:0 LISTENING
TCP 0.0.0.0:110 0.0.0.0:0 LISTENING
如果这些项存在,说明 Exchange Server 正在所有接口的端口 110 和 25 上侦听。这是典型行为。如果这些端口不可用,可能需要进一步解决以下服务或系统问题。以下这些一般的原因可能“占据”这些端口,或使它们不可用: ? Exchange Server 信息存储服务没有运行,或者 POP3 协议未启用并且没有侦听端口 110。请验证信息存储服务是否正在运行。 有关 POP3 协议疑难解答的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
161118 (http://support.microsoft.com/kb/161118/) XCLN:Exchange Server 的 POP3 连接疑难解答
? Internet 邮件服务未运行或者没有在端口 25 上侦听。请验证 Internet 邮件服务是否正在运行。 有关测试 Internet 邮件服务和端口 25 的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
153119 (http://support.microsoft.com/kb/153119/) XFOR:Telnet 到端口 25 以测试 SMTP 通信
? 位于客户端和服务器之间的代理服务器可能阻止访问 Exchange Server 计算机上的这些端口。 有关通过代理服务器配置 Exchange Server 的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
176466 (http://support.microsoft.com/kb/176466/) XGEN:TCP 端口和 Microsoft Exchange:深入讨论
? 另一个程序(如病毒扫描软件)已经将端口 25 重新分配到另一个端口。禁用所有不必要的服务(包括防病毒软件),然后重新启动服务器。
更多信息
当您在计算机上启用了防病毒电子邮件保护或个人防火墙软件时,也可能收到上述错误信息。
[解决办法]
1,EMAIL服务器问题
2,贴个我做的代码
- C# code
private void SendEmail() { string strTo = this.GetAddress(); try { MailAddress EmFrom = new MailAddress( "发送邮件地址 ", "发送人 "); MailAddress EmTo = new MailAddress(strTo); MailMessage EMail = new MailMessage(EmFrom, EmTo); EMail.Subject = "你的标题 "; EMail.Priority = MailPriority.High; EMail.Body = "你的信笺内容 "; Attachment kk = new Attachment( "d:\\photo\\photo\\CapturePhoto.jpg "); Attachment ll = new Attachment( "d:\\photo\\photo\\CapturePhotoAll.jpg "); EMail.Attachments.Add(kk); EMail.Attachments.Add(ll); EMail.BodyEncoding = System.Text.Encoding.Default; EMail.IsBodyHtml = true; SmtpClient kkk = new SmtpClient(); kkk.Host = "你的邮件服务器地址或者域名 "; try { kkk.Send(EMail); MessageBox.Show( "邮件发送到 " + EMail.To.ToString() + " "); this.Close(); } catch (Exception ee) { MessageBox.Show(ee.Message + " <br > "); } } catch (Exception ex) { MessageBox.Show( "发送失败,原因: " + ex.Message + " "); } }
[解决办法]
UP
[解决办法]
就个人感觉来说,使用邮件发送功能
有已下问题
1:如果接受者的油箱不存在,如何进行判定是否收到!(你使用的油箱比如163会发一封出错邮件到发送油箱!)
2:一般来说出现错误的原因为:所使用邮件的邮件服务器的用户名和密码不匹配,或者说端口不正确!
3:写的时候经常犯的错误是:把收信方和接受方搞反了!
suyiming 的为winForm发送功能
给出asp.net发信代码如下:
- C# code
public void Email()//发送邮件 { string UserEmail = Request.QueryString["Email"].ToString().Trim().Replace("\'", "\'\'"); System.Net.Mail.MailMessage myMail = new System.Net.Mail.MailMessage(); myMail = new System.Net.Mail.MailMessage("XXXXX@163.com", UserEmail);//这里使用的163油箱 myMail.Subject = "yoiio网络开发公司!";//邮件发送标题 myMail.Body = "您在我们公司注册了一个帐户!";//邮件发送内容 System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient("smtp.163.com", 25); client.Credentials = new System.Net.NetworkCredential("XXXXX", "密码");//这里的XXXXX是用户名 client.Send(myMail); }