LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

显示邮件控件详细设计

admin
2012年2月17日 0:33 本文热度 3086
目录
一、 需求设计………………………..2
  1、需求:…………………………….2
  2、设计:…………………………….2
二、 分析发件人…………………….2
三、 分析收件人…………………….3
四、 分析日期………………………..3
五、 分析主题………………………..3
六、 分析附加………………………..3
七、 分析邮件内容…………………4
附1、Quoted-Printable解码…..5

一、需求设计
1、需求:
由于在内容恢复中的SMTP和POP3需要利用OUTLOOK打开查看邮件,导致每次都要弹出新的窗口。如果做成控件或者就是VB程序中的一部分,效果会很好。

2、设计:
根据邮件格式,进行分析,具体需要分析的内容有:
(1).发件人;
(2).收件人;
(3).日期;
(4).主题;
(5).附加;
(6).邮件内容。
由于是做界面效果,所以建议用VB制作,因为VC都需要自画,效果不如VB。可以做成控件,或者就是管理器的一部分代码也可以。如果是控件,则可以把一个MAIL文件给控件,控件负责分析,显示功能。

二、分析发件人
例如:From: =?gb2312?B?wO6+rc2o?= <lijt@neusoft.com>
首先是根据“From:”来找到发件人。
1.没有“From: ”,则显示“未指定发件人”。
2.例如:From: masterlee
   直接显示“masterlee”。
3.例如:From: lijt@neusoft.com
   直接显示“lijt@neusoft.com”。
4.例如:From: masterlee<lijt@neusoft.com>
   直接显示“masterlee”。
5.例如:From: =?gb2312?B?wO6+rc2o?= <lijt@neusoft.com>
   对于这种情况,前面的“?B?”表示是以BASE64编码,需要解码后显示“李经通”。
   有的是“?Q?”表示是Quoted-Printable编码,和BASE64处理方法一样,解码后显示。不显示后面的具体邮件地址。
   (附1:Quoted-Printable解码)
6.例如:
From: =?gb2312?B?wO6+rc2o?= <lijt@neusoft.com>
From: =?gb2312?B?wO6+rc2o?= <lijt@neusoft.com>
有多个“From: ”时,两个都显示“李经通;李经通”。中间用“;”号隔开。
7.第一行没有信息,而在下一行:
From:
 =?gb2312?B?wO6+rc2o?= <lijt@neusoft.com>
第二行显示先是一个空格,后面是具体内容。分析同上(2-6)
8.多行情况:
From: =?gb2312?B?wO6+rc2o?= <lijt@neusoft.com>,
 =?gb2312?B?wO6+rc2o?= <lijt@neusoft.com>
 =?gb2312?B?wO6+rc2o?= <lijt@neusoft.com>
从第二行开始,前面都有个空格。表示是属于“From”的内容。需要全部显示“李经通;李经通;李经通”。
9、 在VB中使用TEXTBOX控件。需要设置成多行。
注:参考RFC2045、RFC2047。

三、分析收件人
收件人是根据“T ”来判断的,如果没有“T ”,则显示“无”。
其他处理见收件人的2-9。

四、分析日期
1.日期是根据“Date: ”来判断的。如果没有“Data: ”,则显示本机日期。
   显示格式“2002年4月14日 15:41”
2.例如“Date: Sun, 14 Apr 2002 12:59:10 +0800”需要转换成“2002年4月14日 12:59”
3.两行的情况
Date:
 Sun, 14 Apr 2002 12:59:10 +0800
第二行,先是一个空格。同2,分析后面的数据。
4.在VB中使用LABEL控件即可。

五、分析主题
1.主题是根据“Subject: ”来判断,如果没有,则显示“(无主题)”。
2.例如:“Subject: test”直接显示“test”。
3.带有编码的主题,需要解码后显示。有两种编码:BASE64和Quoted-Printable。
“Subject: =?gb2312?B?08q8/g==?=”解码后显示为“邮件”。
4.多行情况:
例如1:
Subject: =?UNKNOWN?B?sb7VvszhuanX47LKyO28/sbGveK088irwbS902h0dHA6Ly9yZHp4LnhpbHViYnMuY29t?=
例如2:
Subject: =?gb2312?B?MTAuMS4xLjIzNM/W1NrKx7fAu/DHvbLiytTX6dX91NrKudPDtcRJUCzH6w==?=
 =?gb2312?B?1bzTw7XEys23xdK7z8Iu?=
后面的行有一个空格,处理的时候,如果有编码就解码,没有就连在一起直接显示。
5.在VB中使用TEXTBOX控件。

六、分析附加
1. 判断附件:
如果在邮件里有这些信息,那么就可以判断是否有附件了。
格式一:
Content-Type: text/plain
Content-Disposition: inline(附件)
Content-Description: text-part-1

Some text goes here

格式二:
–outer

Content-Type: multipart/mixed; boundary=inner(说明是有多部分组成)
Content-Disposition: attachment(有附件)
Content-Description: multipart-2(附件是多个)

–inner

Content-Type: text/plain
Content-Disposition: inline(附件一)
Content-Description: text-part-2

Some more text here.

–inner

Content-Type: image/jpeg
Content-Disposition: attachment(附件二)
Content-Description: jpeg-1

–inner–

–outer–

这里需要进行字符串匹配。

附件的判断是根据:
Content-Disposition: attachment;
Content-Disposition: inline;

注:参考RFC1806、RFC2183。

2.处理方法:
a) 确定编码格式(RFC1555)
Content-transfer-encoding: BASE64 | Quoted-Printable
b) 确定文件名
Content-Disposition: attachment;filename="example.txt"
或:(有的文件名进行了编码)
Content-Disposition: attachment;
filename="=?gb2312?B?TmV0RXllzfjC58q1yrG84L/Yz7XNszEuZXhl?="
然后按照编码把附加的内容解码,并按照文件名保存在临时目录中。

3. 在VB中,可以使用FILELISTBOX控件或者是LISTVIEW控件。这里需要增加右键菜单功能,实现:打开、另存为、全部保存。如果没有附件,就不显示这个控件。

七、分析邮件内容
1、例如:
From: Nathaniel Borenstein <nsb@bellcore.com>
TNed Freed <ned@innosoft.com>
Subject: Formatted text mail
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary=boundary42

–boundary42

Content-Type: text/plain; charset=us-ascii

…plain text version of message goes here….

–boundary42

Content-Type: text/richtext

…. richtext version of same message goes here …

–boundary42

Content-Type: text/x-whatever

…. fanciest formatted version of same message goes here



–boundary42–

处理方法:
a) 编码方法
Content-Transfer-Encoding := "BASE64" / "QUOTED-PRINTABLE"
b) 文件类型
Content-type: text/plain; charset=us-ascii
Content-Type: text/richtext
Content-Type: text/x-whatever
Content-Type: text/html;
等等。

根据编码,先解码,然后保存成相应的文件,一般两种,*.txt和*.html。
c) 对于alternative,即相同的内容,不同的文件格式,如果有HTML,则以HTML显示,如果没有,则以TXT或其他显示。

2、邮件的内容格式是多样的,有的附件,有的没有。有的进行了编码,有的没有。有的邮件是简单的一快内容,有的是多个组合的。所以进行分析时要考虑到所有的情况。根据RFC文档进行详细分析。

3、VB中使用WebBrowser控件,把临时文件打开即刻。

附1、Quoted-Printable解码
int quoted_to_str(const char *src, char *target, int targsize)
{
  int srclen;
  int i, j;
  char ch, ch1, ch2;
  unsigned char hz;
  srclen = strlen(src);
  for(i = 0, j = 0; i < srclen || j < targsize ; i++, j++)
  {
    ch = src;
    if (ch == ‘=’)
    {ch1 = src[++i];
      ch2 = src[++i];
      hz = (ch1>’9′?ch1-’A'+10:ch1-’0′)*16+(ch2>’9′?ch2-’A'+10:ch2-’0′);
      target[j] = hz;}
     else target[j] = ch;
  }
  return j;
}

该文章在 2012/2/17 0:33:14 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved