MailMessage message = new MailMessage(); message.Subject = "test"; message.Body = "test"; message.To.Add("[email protected]"); message.From = new MailAddress("[email protected]"); SmtpClient smtp = new SmtpClient(); smtp.DeliveryMethod = SmtpDeliveryMethod.Network; smtp.UseDefaultCredentials = false; smtp.Host = 172.22.0.20; smtp.Port = 25; smtp.Send(message);
远程名称无法parsing。
由于我已经指定了一个IP地址,所以显然不需要parsing。 我可以ping通IP,甚至在端口25上telnet,并成功发送电子邮件。 但是,我不能发送电子邮件。
我跑了一个wireshark跟踪,它看起来没有任何stream量正在发送到172.22.0.20
基本的正则expression式为16位数字
如何使用Windows应用程序在第三方网站上填写和提交Web表单?
HttpWebRequest似乎没有发送客户端SSL证书
创build窗口句柄时出错
性能监视器.NET CLR Networking 4.0.0.0实例命名
ShowDialog问题,同时打开表单
如何使用visual basic.net express版本安装Windows服务?
从IntPtr句柄获取Control / Form对象
限制在MS脚本引擎中使用名称空间
我使用这个代码,并在我的最后工作正常确保您使用正确的IP地址和端口号。 我认为你的端口号是不正确的。 (打开您的电子邮件ID并检查邮件配置)
MailMessage mail = new MailMessage("[email protected]","[email protected]"); mail.Subject = "Subject"; mail.IsBodyHtml = true; mail.Body = "this is email body"; SmtpClient client = new SmtpClient("172.22.0.20"); client.DeliveryMethod = SmtpDeliveryMethod.Network; client.UseDefaultCredentials = false; client.Credentials = new System.Net.NetworkCredential("[email protected]","password"); client.Port = 25; client.Send(mail);
下面的代码工作正常,在我的结束…..
MailMessage mailMessage = new MailMessage("[email protected]","[email protected]"); mailMessage.Priority = System.Net.Mail.MailPriority.High; mailMessage.Body = "message"; mailMessage.IsBodyHtml = true; SmtpClient smtpClient = new SmtpClient("host/IP",25); NetworkCredential credentials = new NetworkCredential("[email protected]","password"); smtpClient.Credentials = credentials; smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network; smtpClient.Credentials = credentials; smtpClient.Send(mailMessage);
我测试了你的代码:
static void Main(string[] args) { try { MailMessage message = new MailMessage(); message.Subject = "test"; message.Body = "test"; message.To.Add("[email protected]"); message.From = new MailAddress("[email protected]"); SmtpClient smtp = new SmtpClient(); smtp.DeliveryMethod = SmtpDeliveryMethod.Network; smtp.UseDefaultCredentials = false; smtp.Host = "127.0.0.1"; smtp.Port = 25; smtp.Send(message); } catch (Exception ex) { Console.WriteLine(ex); Console.ReadLine(); } }
这似乎很好。 我用smtp4dev工具,它truks这个:
220 localhost smtp4dev ready EHLO Aepro 250-Nice to meet you. 250-8BITMIME 250-STARTTLS 250-AUTH=CRAM-MD5 PLAIN LOGIN ANONYMOUS 250-AUTH CRAM-MD5 PLAIN LOGIN ANONYMOUS 250 SIZE MAIL FROM:<[email protected]> 250 Okey dokey RCPT TO:<[email protected]> 250 Recipient accepted RSET 250 Rset completed RSET 250 Rset completed MAIL FROM:<[email protected]> 250 Okey dokey RCPT TO:<[email protected]> 250 Recipient accepted DATA 354 End message with period MIME-Version: 1.0
我认为你的IP是不好的,或者你必须有一个防火墙的问题
如果您的代码正在服务应用程序池中运行,则需要将Process Model中的Advanced Settings下的Identity设置为“Network Service”,而不是默认的“ApplicationPoolIdentity”。 如果你这样做,它会每次都有效。 如果你不这样做,一些电子邮件工作,有些则不。 这是一个奇怪的许可的事情。
在这里弹出一个类似的问题: System.Net.WebException:远程名称无法解析:
正如你所看到的,围绕try-catch语句的一个简单的轮询机制可以让你有机会多次尝试你的方法块(偶尔会失败),然后再报告给用户。
您的IP地址不正确,或者您可能正在防火墙下工作。 同时检查你的DNS设置。
也许反向名称是强制性的,你有没有试图在主机文件中注册这个IP的名字? (或者在你的DNS当然)
尝试添加:
172.22.0.20 my-smtp.example
我看到的问题是这一行:
smtp.Host = 172.22.0.20;
smtp.Host希望字符串。 所以,应该是smtp.Host = "172.22.0.20"; 除此之外,请添加下面的代码,以便我们可以看到错误
try { smtp.Send(mail); } catch (Exception e) { Debug.WriteLine("Exception Message: " + e.Message); }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。