net如何建立企业或个人邮箱

来源:互联网 发布:ubuntu eclipse ndk 编辑:程序博客网 时间:2024/03/29 20:50

******************************************
系统设计语言:ASP.NET(C#)
系统所需框架:Jmail(企业版:JMail44_pro)
功能:实现发送和接收邮件
日期:2007年3月8日
来源:http://blog.163.com/xiaohui_liu0406
说明:163邮件端口 110(POP3), 25(SMTP)
******************************************

在.NET FRAMEWORK 2.0 中自带有邮件发送的功能,但不能实现邮件的接收,而且该功能局限于个人用户,所以有必要借助第三方来实现邮件的接发。由于发送比较简单,这里就不说了。

先来认识一下Jmail。W3 JMail v4.4 Professional 是一个 COM 的组件,在免费版只能实现发送功能。具体的说明在BAIDU搜索。

private void ReciveEMailByJmail()
{

首先建立收邮件对象,有两种方式,分别为POP3和SMTP。在程序中根据自己的需求任意选一,具体方法如下:
    jmail.POP3Class popMail = new POP3Class();
    jmail.SMTPClass smtpMail = new SMTPClass();

其次,建立邮件信息接口,该接口实现邮件的通讯,用它来获得邮件的所有信息,同时,建立附件集接口和附件接口,用来接收多个附件。

jmail.Message mailMessage;
jmail.Attachments atts;
jmail.Attachment att;

下面是主体部分。

try{
    连接那个邮箱的参数,本文以163为例。该对象的Connect方法有4个参数,没有重载。分别为绑定邮箱的地址、密码、服务器名称、端口。用户可以退换进行赋值。
        popMail.Connect("xiaohui_liu0406@163.com", "psd", "pop3.163.com", 110);

连接上后,下面来判断是否如果收到邮件。popMail.Count属性指邮件的数量。

if (0 < popMail.Count)
    {
    根据取到的邮件数量依次取得每封邮件
        for (int i = 1; i <= popMail.Count; i++)
        {
    通过循环取得每一条邮件信息
            mailMessage = popMail.Messages[i];
    取得该邮件的附件集合
            atts = mailMessage.Attachments;
    设置邮件的编码方式
            mailMessage.Charset = "GB2312";
    设置邮件的附件编码方式
            mailMessage.Encoding = "Base64";
    是否将信头编码成iso-8859-1字符集
            mailMessage.ISOEncodeHeaders = false;
    邮件的优先级,这里txtpriority.Text要求用户自己设置。
    +++++++++++++++++++++++++++++++++++++++
    优先级.   范围在1-5之间   
    1   高优先级.   有些邮件程序称之为紧急   
    2   也是高优先级   
    3   普通优先级   
    4   低优先级   
    5   最低的优先级   
    如:JMail.Priority = 3
    +++++++++++++++++++++++++++++++++++++++++
            txtpriority.Text = mailMessage.Priority.ToString();

邮件的发送人的信箱地址,txtSendMail.Text 为用户自己输入。以下类似。->>
            txtSendMail.Text = mailMessage.From;

        邮件的发送人

        txtSender.Text = mailMessage.FromName;

        邮件主题

        txtSubject.Text = mailMessage.Subject;

        邮件内容

        txtBody.Text = mailMessage.Body;

        邮件大小

        txtSize.Text = mailMessage.Size.ToString();

        取所有附件。进行循环分别获取。   

        for (int j = 0; j < atts.Count; j++)
            {

              取得附件

              att = atts[j];

              附件名称

              string attname = att.Name;

               保存路径。这里是保存在本机。

               att.SaveToFile("d://AtlasStudy//" + attname);
             }
          }

      清除缓存
          att = null;
          atts = null;

  }

  else

  {
           Response.Write("没有新邮件!");

  }

  销毁对象,断开连接。
      popMail.DeleteMessages();

  popMail.Disconnect();

  popMail = null;

}

catch

{

     Response.Write("Warning!请检查邮件服务器的设置是否正确!");

}
}

以上程序在互联网上比较流行,明显有好多的不足,譬如:不知道邮件是否是最新的,每次连接都要把所有的邮件都下载到本地,没有实现与数据库的交互等等,那么这些就需要用户自己进行二次开发,我相信看了以上的解释说明,建立企业邮箱不远了。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    如何只接收没接收过的邮件。

接收所有邮件是能接收的。现在有几种思路:
    一种思路是:记录最后下载时间,查看pop3.Messages(i).Date(发送时间)是否比现有时间新,如果新就下载。可是每次都要下载下来读,和下载整个邮件时间差不多。
    一种思路是:用 pop3.GetLastUnreadMessage ,可是有些服务器不支持。
 

原创粉丝点击