关于利用system.net.mail命名空间发送邮件的一个问题

wodehuajianrui 2008-03-31 03:48:52
毕业设计里面有一个内容,就是利用本地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);
}
}
请教高人这是怎么回事。
...全文
155 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
随风v5 2009-05-08
  • 打赏
  • 举报
回复
路过并支持一下..
wodehuajianrui 2008-03-31
  • 打赏
  • 举报
回复
谢谢ericzhangbo1982111兄,好像只要把client.UseDefaultCredentials = true加上就可以了,这个东西默认是false,下面那行areyou@yeah.net就不用了,没有意义
jingzhao1985 2008-03-31
  • 打赏
  • 举报
回复
如果你肯定两端程序是一模一样的话,163收不到的网址发出的邮件是因为163屏蔽的邮件服务器的地址
wodehuajianrui 2008-03-31
  • 打赏
  • 举报
回复
呃,毕设嘛,我用的都是真的东西,连帐号密码也是真的,那个大家不要乱上去改。。。。
ericzhangbo1982111 2008-03-31
  • 打赏
  • 举报
回复
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;
client.UseDefaultCredentials = true;
client.Credentials = new System.Net.NetworkCredential ("areyou@yeah.net", "areyou");


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);
}
}
wodehuajianrui 2008-03-31
  • 打赏
  • 举报
回复
收件人的设置是在main函数里的,代码是这样的
static void Main(string[] args)
{
html_op ho = new html_op();
Program pr = new Program();
pr.msg.To.Add("blackseven@sse.buaa.edu.cn");
//pr.msg.To.Add("wodehuajianrui@sse.buaa.edu.cn");
//pr.msg.To.Add("jw63@sse.buaa.edu.cn");
pr.msg.From = new MailAddress("buaasoft@buaasoft.cn", "北航软件学院", System.Text.Encoding.UTF8);
/* 上面个参数分别是发件人地址(可以随便写),发件人姓名,编码*/
pr.msg.Subject = "这是测试邮件"; //邮件标题
pr.msg.SubjectEncoding = System.Text.Encoding.UTF8; //邮件标题编码
//pr.msg.Body = ho.Get_Http("http://www.baidu.com", html_op.time);//邮件内容
pr.msg.Body = "How are you?";
pr.msg.BodyEncoding = System.Text.Encoding.UTF8;//邮件内容编码
pr.msg.IsBodyHtml = false;//是否是HTML邮件
pr.msg.Priority = MailPriority.High;//邮件优先级
//pr.SendMailUseYeah(pr.msg);
pr.SendMailLocalhost(pr.msg);
System.Console.Read();
}
jingzhao1985 2008-03-31
  • 打赏
  • 举报
回复
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);
}
}
你这段代码中不是没设置收邮件的地址吗?你没有设置当然收不到啊

111,119

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧