Jmail 介绍 及其 利用Jmail接收邮件 (C#)

来源:互联网 发布:好看的古装剧 知乎 编辑:程序博客网 时间:2024/05/24 03:23

 

jmail是一种服务器端的邮件发送组件,和个人用的客户端邮件软件不一样的。jmail是在服务器上给程序用来发邮件用的,除了软件编程人员,其他人一般平常用不上。

jmail是一个第三方邮件操作组件,通常位于web服务器端,和站点程序紧密配合来接收及提交邮件到邮件服务器的控件,让网站用有发送邮件既接收邮件的功能
与此相同的还有CDONTS.NewMail,Persits.MailSender,IISmail.Iismail等等,他们唯一区别就是jmail只需要注册一个dll组件即可被调用,而其他则需要在iis上设置发布smtp服务器
(1)Body(信件正文) : 字符串  
如:JMail.Body = "这里可以是用户填写的表单内容,可以取自From。"  
(2)Charset(字符集,缺省为"US-ASCII") : 字符串  
如:JMail.Charset = "US-ASCII"  
(3)ContentTransferEncoding : 字符串  
指定内容传送时的编码方式,缺省是"Quoted-Printable"  
如:JMail.ContentTransferEncoding = "base64"  
(4)ContentType(信件的contentype. 缺省是"text/plain") : 字符串
如果你以HTML格式发送邮件, 改为"text/html"即可。  
如:JMail.ContentType = "text/html"  
(5)Encoding : 字符串  
设置附件编码方式(缺省是"base64)。 可以选择使用的是"base64", "uuencode" or "quoted-printable"   如:JMail.Encoding = "base64"  
(6)Log(Jmail创建的日志,前提loging属性设置为true,见下面) : 字符串  
如:使用Response.Write( JMail.Log )语句列出日志信息。  
(7)Logging(是否使用日志) : 布尔型  
如:JMail.Logging = true  
(8)Recipients : 字符串  
只读属性,返回所有收件人  
如:Response.Write( "" + JMail.Recipients + "" );  
(9)ReplyTo(指定别的回信地址) : 字符串  
如:JMail.ReplyTo = "qiao198@hotmail.com"  
(10)Sender( 发件人的邮件地址) : 字符串  
如:JMail.Sender = "qiao198@21cn.com"  
(11)SenderName(发件人的姓名) : 字符串  
如:JMail.SenderName = "一克"  
(12)ServerAddress(邮件服务器的地址) : 字符串  
你可以指定多个服务器,用分号点开。可以指定端口号。  
如果serverAddress保持空白,JMail会尝试远程邮件服务器,然后直接发送到服务器上去。  
如:JMail.ServerAddress = "mail.21cn.net.cn"  
(13)Subject(设定邮件的标题,可以取自From。):字符串  
如:JMail.Subject = "客户反馈表单"  
(14)添加文件附件到邮件  
如:JMail.AddAttachment( "c:anyfile.zip" )  
(15)AddCustomAttachment( FileName, Data )  
添加自定义附件.  
如:JMail.AddCustomAttachment( "anyfile.txt", "Contents of file" );  
(16)AddHeader( Header, Value )  
添加用户定义的信件标头。  
如:JMail.AddHeader( "Originating-IP","192.158.1.10" );  
(17)AddRecipient(收件人):字符串  
如:JMail.AddRecipient( "qiao198@hotmail.com" );  
(18)AddRecipientBCC( Email ),密件收件人:  
如:JMail.AddRecipientBCC( "qiao198@hotmail.com" );  
(19)AddRecipientCC( Email ) ,抄送收件人:  
如:JMail.AddRecipientCC( "" )  
(20)AddURLAttachment( URL, 文档名)  
下载并添加一个来自url的附件. 第二个参数"文档名", 用来指定信件收到后的文件名。  
如:JMail.AddURLAttachment( "http://www.chinabs.net/jmail.zip", "jmail" )  
(21)AppendBodyFromFile( 文件名) ,将文件作为信件正文:  
如:JMail.AppendBodyFromFile( "c:anyfile.txt" )  
(22)AppendText( Text )  
追加信件的正文内容,比如增加问候语或者其它信息。  
如:JMail.AppendText( "欢迎访问本站!" )  
(23)Close() ,强制JMail关闭缓冲的与邮件服务器的连接:  
如:JMail.Close()  
(24)Execute() ,执行邮件的发送  
如:JMail.Execute(

Jmail具有以下特点:
(1)可以发送附件;
(2)详细日志能力,便于你查看问题所在;
(3)设置邮件发送的优先级;
(4)支持多种格式的邮件发送,比如说以HTML或者TXT的方式发送邮件。这是个免费的组件。
(5)密件发送/(CC)抄送/紧急信件发送能力;
(6)最关键的就是--免费的组件,不必发钱,所以非常值得使用。
 

 

 

 

 

W3 JMail 邮件组件是Dimac公司开发的用来完成邮件的发送、接收、加密和集群传输等工作的。w3 Jmail组件是国际最为流行的邮件组件之一,当今世界上绝大部分ASP程序员都在使用w3 Jmail组件构建邮件发送系统,那是因为w3 Jmail组件使用了新的内核技术,使其更加可靠和稳定。

一、下面向读者介绍w3 Jmail4.3组件的新特性:

1、   w3 Jmail4.3组件重新设计了其内部结构——使用Message对象代替原来的单一对象Jmail.smtpmail发送邮件;

2、   w3 Jmail4.3组件一共有十多个对象(后面将详细介绍)——这些对象中,绝大多数是针对Jmail.Message对象操作的;

3、   支持从POP3邮件服务器收取邮件;

4、   支持加密邮件的传输;

5、   快速发送,一次会话就完成邮件发送;

6、   还有一个特性就是可以使用w3 Jmail4.3组件的集群发送功能一次发送成千上万个邮件,还可以通过邮件合并(mailmerge)对象来个性化邮件。

二、Jmail邮件组件的安装及卸载:

1、   安装

跟使用别个组件一样,在使用Jmail邮件组件之前要先安装或注册该组件Jmail.dll。具体注册方法,是先把Jmail.dll文件拷贝到硬盘的某一目录下(如C:/Jmail/Jmail.dll),然后执行命令Regsvr32 C:/Jmail/Jmail.dll即可。

2、   卸载

卸载组件是安装组件的相反动作,可以使用参数/U来卸载已安装的组件,执行命令Regsvr32 /U  Jmail.dll即可。

三、详细介绍W3 Jmail组件的对象(12个):

1、.POP3对象

属性(或方法)
 说明
 
Connect(Username,Password,Server,Port)
 连接POP3服务器,断口可选,默认110。
 
DeleteMessages()
 从邮件服务器上删除所有邮件。
 
DeleteSingleMessage(MessageID)
 从邮件服务器上删除由MessageID指定的邮件。
 
Disconnect()
 关闭跟邮件服务器的连接。
 
DownloadHeaders()
 从邮件服务器上读取所有的邮件头并传递给Messages集合。
 
DownloadMessages()
 从邮件服务器读取所有邮件。
 
DownloadSingleHeader(MessageID)
 从邮件服务器读取指定的邮件头并传递给Messages集合。
 
DownloadUnreadMessages()
 从邮件服务器上读取所有未读邮件。
 

 

2、.Messages对象

属性(或方法)
 说明
 
Clear()
 清除集合中的所有内容,并不会删除邮件服务器上的任何邮件。
 
Count():Integer
 返回集合中记录的数目:I=Messages.Count
 
Item(Index):Pointer
 返回一个Message对象。Set oMsg=Messages.Item(0)
 

 

3、.Message对象

属性(或方法)
 说明
 
AddAttachment(FileName,isInline,ContentType):String
 给邮件添加一个文件型的附件。isInline设置为True时,添加的这个附件就是一个可嵌入的附件。
 
AddCustomAttachment(FileName,Data,isInline):String
 给邮件添加一个自定义类型的附件。
 
AddHeader(Xheader,Value)
 给邮件添加一个自定义邮件头X-Header。
 
AddNativeHeader(Header,Value)
 给邮件添加一个邮件头。
 
AddRecipient(emailAddress,recipientName,PGPKey)
 给邮件添加一个收件人。RecipientName和PGPKey是可选项,RecipientName为收件人姓名,PGPKey给邮件加密。
 
AddRecipientBCC(emailAddress,PGPKey)
 添加一个邮件暗送人(BCC)地址。
 
AddRecipientCC(emailAddress,recipientName,PGPKey)
 给邮件添加一个邮件抄送人(CC)地址。
 
AddURLAttachment(bstrURL,bstrAttachAs,isInline,bstrAuth):String
 从指定的URL下载文件并添加为邮件附件。参数bstrAttachAs是用来更改添加为邮件附件的文件名。
 
AppendBodyFromFile(FileName)
 清除邮件正文,并把指定文件的内容作为邮件正文。
 
AppendHTML(Text)
 从邮件追加HTML格式正文,如例所示:Message. AppendHTML(“<H3>Hello Word</H3>”)
 
AppendText(Text)
 向邮件添加文本正文。
 
Clear()
 清除所有邮件消息,是成为一个空对象。
 
ClearAttachments()
 清除附件列表。如:Message.ClearAttachments
 
ClearCustomHeaders()
 清除所有自定义的邮件头。
 
ClearRecipients()
 清除所有收件人地址列表。
 
Close()
 释放Jmail与邮件服务器连接而使用的缓存(Cache)。
 
DecodeHeader(Header):String
 输出一个邮件头消息。
 
ExtractEmailAddressesFromURL(bstrURL,bstrAuth)
 从指定的网制(URL)读取并添加邮件列表。
 
GetMessageBodyFromURL(同上)
 删除邮件正文并用指定的URL的内容代替。
 
KeyInformation(keyIdentifier):pointer
 返回一个PGPKey对象。
 
LoadFromStream(Stream)
 从数据库流读取数据,该数据库流必须符合RFC822标准。
 
LogCustomMessage(Message)
 给Jmail日志文件添加自定义日志。此函数只有在logging属性被设置为True时有效。
 
Nq()
 将邮件追加到发送队列等待发送。
 
ParseMessage(MessageSource)
 解析一个邮件,数据流必须符合RFC822格式标准。
 
SaveToStream(Stream)
 保存邮件到数据流,数据流必须符合RFC822格式标准。
 
Send(MailServer,enque):Boolean
 发送邮件。邮件服务器是一个描述邮件服务器名称或地址的字符串,用户名和密码是可选项。当要发送认证邮件时使用格式为:用户名:密码@邮件服务器
 
SendToNewsGroup(ServerName,NewsGroup)
 使用指定的NNTP服务器发送邮件到新闻组,多个邮件用“,”隔开。
 
About():string
 设置一些附加信息。
 
Attachments():Pointer
 返回邮件的附件集合。Set Attachments=Message.Attachments
 
Body():String
 

 

 1/// <summary>
 2  /// 利用JMAIl接收邮件
 3  /// </summary>
 4  /// <param name="mailname">油箱用户名称</param>
 5  /// <param name="mailpwd">油箱密码</param>
 6  /// <param name="poptity">等级</param>
 7  /// <param name="senders">发送者</param>
 8  /// <param name="sendmail">发件人地址</param>
 9  /// <param name="subject">主题</param>
10  /// <param name="body">内容</param>
11  /// <param name="path">路径</param>
12  /// <param name="data">数据</param>
13  /// <param name="num1">输出参数</param>

14  public static void ReciveMail(string mailname,string mailpwd,ref string poptity,ref string senders,ref string sendmail,ref string subject,ref string body,ref string path,ref string data,out int num1,string paths)
15  {
16   num1=1;
17   jmail.POP3Class popMail = new jmail.POP3Class();
18   jmail.Message mailMessage; 
19   jmail.Attachments atts;
20   jmail.Attachment att;
21   string pop="pop."+mailname.Substring(mailname.IndexOf("@")+1);
22   popMail.Connect(mailname,mailpwd,pop,110);
23   if(0<popMail.Count)
24   {
25    for(int i=1;i<=popMail.Count;i++)
26    {
27     mailMessage=popMail.Messages[i];
28     atts=mailMessage.Attachments;
29     mailMessage.Charset = "GB2312";    
30     mailMessage.Encoding = "Base64"
31     mailMessage.ISOEncodeHeaders = false
32     poptity = mailMessage.Priority.ToString();
33     senders = mailMessage.FromName; 
34     sendmail = mailMessage.From; 
35     subject =mailMessage.Subject;
36     body = mailMessage.Body;  
37     data=mailMessage.Date.ToString();
38     string size = mailMessage.Size.ToString(); 
39     for(int j=0;j<atts.Count;j++)
40     {
41      if(j == 0)
42      {
43       //取得附件名称
44       att = atts[j];  
45       /**////附件名称  
46                           
47       string attname = att.Name;  
48//       int k = attname.LastIndexOf(".");
49//       string time = DateTime.Now.ToString();
50//       time = time.Replace("-",""); 
51//       time = time.Replace(" ","");
52//       time = time.Replace(":","");
53//       attname = attname.Insert(attname.LastIndexOf("."),"-"+time);  
54//       /**////上传到服务器
55       //path="D://Mail//mailre//"+attname;
56       string all=paths+"//Mail//MailReceive//";
57                             path=all+attname;
58       DirectoryInfo dir=new DirectoryInfo(all);
59       
60       if(dir.Exists)
61       {
62        att.SaveToFile(path);  
63       }

64       else
65       {
66        dir.Create();
67        att.SaveToFile(path);  
68       }

69      }

70      
71       
72     }

73     popMail.DeleteSingleMessage(i);//删除邮件
74    }

75    att = null;
76    atts = null;
77    popMail.Disconnect();        
78    popMail = null;
79   }

80   else
81   {
82   
83    num1=0;
84    att = null;
85    atts = null;
86    popMail.Disconnect();        
87    popMail = null;
88   }

89                    
90   
91  }

92     
93
原创粉丝点击