Welcome

首页 / 软件开发 / C# / 使用C#发送电子邮件

使用C#发送电子邮件2011-01-29前几天学生问怎样用C#发送电子邮件,网上文章很多,随手找了一篇,给学生,让他自己去看下。结果,搞了一天没有搞定,只好来仔细看一下。用C#发送电子邮件,网上介绍的很多文章都是使用SmtpClient,也有System.Web.Mail ,但是,System.Web.Mail 已经是不推荐使用的了。以下是在网上常见的一种发送电子邮件的代码:

1 MailMessage MyEmilMessage=new MailMessage();
2 string attachFile; //用于构造附件的字符串变量
3
4 MyEmailMessage.From="Writer@sadf.com";
5 MyEmailMessage.To="Geter@dff.com;tome@asd.com";
6 MyEmailMessage.Subject="邮件发送的一个简单例子";
7 MyEmailMessage.body="猫王呼叫耗子,收到请回答!!!";
8 MyEmailMessage.BodyFormat=MailFormat.Text;
9 MyEmailMessage.Priority=MailPriority.High;
10
11 //构造添加附件
12 attachFile=@"D: est est.txt";
13 MailAttachment mailAttach=new MailAttachment(attachFile);
14 MyEmailMessage.Attachments.Add(mailAttach);
15
16 //发送电子邮件
17 SmtpMail.SmtpServer="发送电子邮件的SMTP地址或者IP";// 指定smtp服务器
18 SmtpMail.Send(MyEmailMessage);//发送电子邮件
19

这些代码基本上都没有任何错误,编译也都会通过,但是,如果使用这种方式发送,基本上可以保证,你的电子邮件发送不成功。然后,这里是缺少身份验证,而且比较麻烦就是这个身份验证。下面是我给学生写的一个示例:

1 string mailContent="邮件内容"; 2 3MailMessage msg = new System.Net.Mail.MailMessage(); 4msg.To.Add("******@gmail.com"); //收件人 5 6//发件人信息 7msg.From = new MailAddress("*****@gmail.com", "发送人姓名", System.Text.Encoding.UTF8); 8msg.Subject = "这是测试邮件"; //邮件标题 9msg.SubjectEncoding = System.Text.Encoding.UTF8;//标题编码10msg.Body = mailContent; //邮件主体11msg.BodyEncoding = System.Text.Encoding.UTF8;12msg.IsBodyHtml = true;//是否HTML13msg.Priority = MailPriority.High; //优先级1415SmtpClient client = new SmtpClient();16//设置GMail邮箱和密码 17client.Credentials = new System.Net.NetworkCredential("帐号@gmail.com", "密码");18client.Port = 587;19client.Host = "smtp.gmail.com";20client.EnableSsl = true;21object userState = msg;22try23{24client.Send(msg);25MessageBox.Show("发送成功");26}27catch (Exception ex)28{29MessageBox.Show(ex.Message, "发送邮件出错");30} 31