关于利用system.net.mail命名空间发送邮件的一个问题
毕业设计里面有一个内容,就是利用本地smtp服务向外部邮箱发送邮件,我是用VS2005编写的程序,语言为C#。
前提:本地SMTP服务已经安装,并且可以通过outlook express向163邮件发送邮件,outlook express设置的邮箱帐号并不存在,为abcd@abcd.com
我的代码如下:
/// <summary>
/// 利用localhost发送消息
/// </summary>
/// <param name="m">所要发送的消息对象</param>
public void SendMailLocalhost(MailMessage m)
{
System.Net.Mail.MailMessage mm = new System.Net.Mail.MailMessage();
mm = m;
SmtpClient client = new SmtpClient();
client.Host = "192.168.30.54";
client.Port = 25;
object userState = m;
try
{
client.Send(mm);
System.Console.WriteLine("发送成功");
//client.SendAsync(msg, userState);
}
catch (System.Net.Mail.SmtpException ex)
{
System.Console.WriteLine(ex.Message);
}
}
编译通过,控制台显示“发送成功”,但是邮箱就是无法收到邮件。但是同样的设置用outlook express就可以发出去并且收到。
另外,如果我用了企业邮箱,比如yeah.net的,就可以发,而且收得到。代码如下:
public void SendMailUseYeah(MailMessage m)
{
System.Net.Mail.MailMessage mm = new System.Net.Mail.MailMessage();
SmtpClient client = new SmtpClient("smtp.yeah.net", 25);
client.UseDefaultCredentials = true;
client.Credentials = new System.Net.NetworkCredential ("areyou@yeah.net", "areyou");
//client.Port = 25; //邮箱使用的端口
//client.Host = "smtp.yeah.net ";
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.EnableSsl = false; //是否经过ssl加密
object userState = m;
mm = m;
try
{
//client.SendAsync(mm, userState);
//client.Send(mm);
//System.Console.WriteLine("发送成功");
for (int i = 0; i < 100; i++)
{
client.Send(mm);
System.Console.WriteLine("第"+i.ToString()+"次,发送成功");
}
}
catch (System.Net.Mail.SmtpException ex)
{
System.Console.WriteLine(ex.Message);
}
}
请教高人这是怎么回事。