beniao 发表于 2008-3-16 22:49

使用.NET发送E-Mail小程序示例

本文主要是以.NET下怎么实现发送E-Mail作为示例分析讲解,故在示例程序里有许多涉及到.Net.Mail之外的内容都没做.最近比较忙没太多的时候去完善其功能,有兴趣的朋友可以下载源码去完善下.这不是一个什么大的软件,也不是什么很特别的东西,我写这个文章的目的是让大家一起来学习.NET下发送E-mail的实现,希望这篇文章可以帮助到还没搞清楚怎么实现发送邮件的朋友,对于已经会的或是这方面的牛人的前辈们看了本文请留下宝贵的建议.

      本程序是采用.NET框架下的Mail类来完成邮件的发送操作的,里面收件人mail地址我采用的xml来存储,这涉及到了xml的读写操作,在添加附件的时候涉及到对话框的应用.分析于此,首先我门需要引用相宜的名称空间,即:
using System.Net.Mail;
using System.Xml;
using System.IO;

一. 首先来看看最终的运行效果(可以从界面层上理解到程序的结构)
[img]http://www.cnblogs.com/images/cnblogs_com/beniao/sendmail/mail.jpg[/img]
二. 下面来看看实现发送e-mail功能的代码,代码如下所示:
private void btnSend_Click(object sender, EventArgs e)
{
    System.Net.Mail.SmtpClient client = new SmtpClient();
    client.Host = this.tbSmtpServer.Text.ToString();  //发送邮件所使用的Smtp事务的主机名称或IP地址
    client.UseDefaultCredentials = false;
    //NetworkCredential(发送者邮件地址,发送者邮箱密码)
    client.Credentials = new System.Net.NetworkCredential(this.tbSender.Text.ToString(),
                                     this.tbSenderPassWord.Text.ToString());
    client.DeliveryMethod = SmtpDeliveryMethod.Network;  //电子邮件通过网络发送到Smtp服务器

    //MailMessage(发件人地址,收件人地址)
    MailMessage message = new MailMessage(this.tbSender.Text.ToString(),
                             this.lbQuester.SelectedItem.ToString());
    message.Subject = this.tbTitle.Text.ToString();  //邮件主题
    message.Body = this.tbContext.Text.ToString();   //邮件内容
    message.BodyEncoding = System.Text.Encoding.UTF8; //邮件正文的编码方式
    message.IsBodyHtml = true;

    //以下为附件处理过程
    string attahmentName=this.tbAtrrac.Text.Trim().ToString();
    if (!string.Equals(attahmentName, null) && !string.Equals(attahmentName, ""))
    {
        Attachment data = new Attachment(attahmentName, System.Net.Mime.MediaTypeNames.Application.Octet);
        message.Attachments.Add(data);
    }

    发送邮件
    try
    {
         client.Send(message);
         MessageBox.Show("E-Mail sucessfully send to:" + this.lbQuester.SelectedItem.ToString());
    }
    catch (Exception ex)
    {
         MessageBox.Show("E-Mail send fail!" + ex.ToString());
     }
}
三. 设置收件人的邮件地址
     这里我采用XML文件存储,Setting.xml定义如下:
     <?xml version="1.0" encoding="utf-8" ?>
       <mail>
         <list>beniao123@126.com</list>
         <list>beniao277@163.com</list>
         <list>beniao133@126.com</list>
         <list>beniao133@126.com</list>
      </mail>
将Setting.xml里的数据读取到winfrom的界面控件ListBox上进行绑定,这里我定义了一个私有方法DataBindListBox()
然后在窗体form_load()里调用,方法定义如下:
1        private void DataBindListBox()
2        {
3            //清空现有绑定数据
4            this.lbQuester.Items.Clear();
5            //通过ADO.NET的DataSet对象的ReadXml()方法读取联系人邮件地址
6            DataSet ds = new DataSet();
7            ds.ReadXml("http://www.cnblogs.com/Setting.xml");
8            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
9            {
10                object obj = ds.Tables[0].Rows[i][0].ToString() as object;
11                this.lbQuester.Items.Add(obj);
12            }
13        }
本文就写于此,当然文中还有很多地方都不够完善,但是我在开篇之时就说过,本文主要是以解说.NET下怎么实现发送E-Mail,由于时间关系,部分功能就没作详细.........

本文已于2008-03-16日发布于博客园,并提供源码下在,有兴趣的朋友可以下载来看看.
http://www.cnblogs.com/beniao/archive/2008/03/16/1108498.html (博客园地址)

beniao 发表于 2008-3-16 23:36

自己先来个SF

jalonlovesja 发表于 2008-3-17 10:58

好东西,UP

191638141 发表于 2008-3-17 18:47

bump~学习ing

beniao 发表于 2008-3-18 01:09

谢谢支持`````

jalonlovesja 发表于 2008-3-18 14:58

好东西就是要UP!!!

heyufu 发表于 2008-3-18 15:26

学习中

beniao 发表于 2008-3-18 19:06

代码可以去我博客下载
http://www.cnblogs.com/beniao/archive/2008/03/16/1108498.html

beniao 发表于 2008-4-27 19:10

回复 6# 的帖子

好东西确实不应该UP .
应该Down and study.

可以直接到我的博客下载示例程序

huchao0911 发表于 2008-4-27 22:27

高手啊,楼主学多久了,我的作业里也要用到你的这个程序,可以借鉴下了

beniao 发表于 2008-4-28 00:07

回复 10# 的帖子

呵呵.我也没学多久呢.
  三年?四年???

更多文章见我的博客http://beniao.cnblogs.com
欢迎评论指正......

页: [1]

编程论坛