windows 8上使用SmtpClient.Send()发送邮件失败的原因分析。

更新内容。

最终的问题还是SMTP服务器不正确引起的,而非telnet。

另外,不在同一个domain的两个机器相互沟通需要使用全名,可以通过ping -4 <hostname>获得。

-----------------------------------------------------------------------

最近在写一个应用程序,但是stuck在发送邮件的地方。

提示错误信息是unable to connect remove server。

一开始以为是smtp的服务器地址写错了,上网搜索了很多内容,各种方法都尝试,却也没有解决我的问题。

 

不过还好,在某某论坛上看到了用telnet进行验证是否smtp服务器依旧工作良好。

方知晓,默认状态下windows 8和windows 7是一样的,默认为关闭状态。

所以,最终在我这里是因为win8上没有开启telnet服务引起的。

打开的办法是turn on windows feature,并且只能通过这种方式。(至少我没有发现可以通过开启服务的方式实现)

具体操作如下:

控制面板->Programs and Features->Turn on windows features.

找到telnet,勾选“telnet client”;这个是允许你连接到其他电脑的上,注意是通过tcp方式建立连接。

回到Visual Studio 11编辑器里面,重新编译运行,邮件顺利发出去了。

using System;
using System.Net;
using System.Net.Mail;

namespace EmailTestApp
{
class Program
{
static void Main(string[] args)
{
SmtpClient smtp = new SmtpClient();
MailMessage mailMsg = new MailMessage();
smtp.DeliveryMethod = SmtpDeliveryMethod.Network;

string username = "<your user name>";
string password = "<your password";

// initialize smtp
smtp.Host = "smtp.163.com";
smtp.Port = 25;
smtp.Credentials = new NetworkCredential(username, password);

// initialize mail
mailMsg.From = new MailAddress("<your-account>@163.com");
mailMsg.To.Add(new MailAddress("your-account@163.com"));
mailMsg.Subject = "Test Email";

// we want send html code so that we can see the rich text, i.e css style
mailMsg.IsBodyHtml = true;

mailMsg.Body = @"<tb>
<tr>
<td>Column #1</td>
<td>Column #2</td>
</tr>
<tr>
<td>Lucas Luo</td>
<td>Bill Gates</td>
</tr>
";

// here we send the email, you can also use SendAsync to give contro back to your caller
smtp.Send(mailMsg);

Console.WriteLine("Finish email sending......");
Console.ReadLine();
}
}
}

 

posted @ 2012-03-06 01:38  Lucas Luo  阅读(4239)  评论(0编辑  收藏  举报