青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Javen-Studio 咖啡小屋

http://javenstudio.org - C++ Java 分布式 搜索引擎
Naven's Research Laboratory - Thinking of Life, Imagination of Future

  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
  24 隨筆 :: 57 文章 :: 170 評論 :: 4 Trackbacks
 

1           Hello World!

以下是一個郵件解析庫的簡單程序,說明使用面向對象設計的API解析郵件的方法:

void main() {
    
char *emaildata = loademailfile("helloworld.eml"); 
    MimeMessage email(emaildata); 
    String subject, from, bodytext; 
    InternetAddress addr; 
    email.getSubject(subject); 
    email.getFrom(addr);  addr.toString(from); 
    email.getTextPlain(bodytext); 
    printf(
"Subject: %s\nFrom: %s\nBody: %s\n"
        subject.c_str(), from.c_str(), bodytext.c_str()); 
    free(emaildata); 
}

 

2           解析郵件

下面的例子詳細說明如何用郵件解析庫API解析一封郵件:

/**
 * 郵件源文數(shù)據(jù)通過參數(shù)傳遞
 * @param msg   指向郵件源文的字符串指針
 * @param len   郵件源文的長度
 
*/

void parseMessage(const char *msg, const int len) 
{
    
// 定義一個MimeMessage郵件對象用于解析
    
// 郵件對象使用指向郵件源文的字符串指針和長度的參數(shù)構造
    
// 也可使用 MimeMessage email(msg)構造,傳入len參數(shù)的目的是為了節(jié)省再做一次
    
// strlen()的時間,因為有些郵件源文比較大。
    
// 備注:如果只獲取郵件頭,MimeMessage就只解析郵件頭數(shù)據(jù),不會解析郵件正文。
    MimeMessage email(msg, len); 

    
// 獲取發(fā)信時間,此時間UTC時間
    
// Coordinated Universal Time (UTC, formerly referred to as "Greenwich Mean Time")
    time_t  senttm = email.getSentDate(); 

    
// 定義存儲郵件主題的字符串變量,郵件解析庫均使用String做為字符串處理
    String subject; 

    
// 調用MimeMessage類的getSubject()方法獲取郵件主題,內容放進subject變量里
    email.getSubject(subject); 

    
// 打印輸出主題,c_str()方法是標準的獲取字符串內容指針的方法
    printf("Subject: %s\n", subject.c_str()); 

    
// 定義存儲發(fā)信人地址的變量,這里InternetAddress是處理郵件地址的類
    InternetAddress from; 

    
// 調用MimeMessage類的getFrom()方法獲取郵件發(fā)信人地址
    email.getFrom(from); 

    
// 輸出地址發(fā)信人地址,personal是郵件地址的名字,address是地址
    printf("From: \"%s\" <%s>\n", from.personal(), from.address()); 

    
// 定義存儲發(fā)信人地址的變量,這里用InternetAddressArray是因為收件人可能有多個
    InternetAddressArray toAddrs; 

    
// 調用MimeMessage類的getTo()方法獲取所有的收件人地址信息
    
// 獲取其他地址如 抄送者用getCc() 密送者用getBcc() 參考后面的MimeMessage方法列表
    email.getTo(toAddrs); 

    
// 由于InternetAddressArray是一個FastArray數(shù)組類,所以采用以下方式逐個輸出
    
// 定義遍歷數(shù)組的迭代器(這是面向對象的設計,類似STL庫容器的迭代器用法)
    InternetAddressArrayIterator it(toAddrs);

    
// 判斷迭代器是否走到數(shù)組的末尾,否則進入循環(huán)
    while!it.done() ) {
        
// 輸出郵件地址,迭代器相當于指向InternetAddress的指針
        printf("To: \"%s\" <%s>\n", it->personal(), it->address()); 

        
// 跌打器向前移動一位
        it.advance();
    }


    
// 數(shù)組的遍歷也可采用如下傳統(tǒng)方式
    forint i = 0; i < toAddrs.size(); i ++ ) {
        
// 由于[]操作符不計算數(shù)組范圍,所以不建議如此使用。盡量使用迭代器,
        
// 除非是想直接取得第n個地址
        printf("To: \"%s\" <%s>\n", toAddrs[i].personal(),toAddrs[i].address()); 
    }

    
// 獲取其他郵件Header行的內容
    String xline; 
    email.getHeader(
"X-Priority", xline); 
    Printf(
"X-Priority: %s\n", xline.c_str()); 

    
// 獲取郵件純文本正文。由于每一封郵件都可能同時包含一個純文本正文體和一個
    
// HTML正文體,所以它們單獨獲取
    String textplain; 
    email.getTextPlain(textplain); 
    printf(
"BodyTextPlain: %s\n", textplain.c_str()); 

    
// 也可以這樣同時獲取純文本正文的字符集編碼方式,以供調用者根據(jù)它來
    
// 選擇不同的字符集顯示給用戶。getTextHtml()也類似。
    String charset; 
    email.getTextPlain(textplain, charset); 

    
// 獲取郵件HTML正文內容。
    String texthtml; 
    email.getTextHtml(texthtml); 
    printf(
"BodyTextHtml: %s\n", texthtml.c_str()); 

    
// 獲取郵件所有附件的名字。
    StringArray filenames; 
    email.getAllAttachmentFilenames(filenames); 

    
// 遍歷查找名字跟其他Array用法一樣
    
// 獲取指定附件文件名的附件內容,如果有重復的名字的附件將只返回第一個相同
    
// 名字的附件數(shù)據(jù)。要獲取其他所有附件,請參考下面的方法。
    String filename("attr1.jpg"), content; 
    email.getAttachment(filename, content); 

    
// 獲取郵件所有附件。
    AttachmentPtrArray attachments; 
    email. getAllAttachments(attachments); 

    
// 附件總數(shù)
    int attnum = attachments.size(); 

    
// 遍歷所有附件
    for( size_t i = 0; i < attachments.size(); i ++ ) 
    
{
        
// 獲得此附件PART的指針,注意:不能free或其他直接修改指針內容的操作。
        MimeBodyPart *part = attachments[i]; 
        
if( part == NULL ) 
            
continue;

        String filename, content; 

        
// 獲取此附件文件名
        part->getFileName(filename); 

        
// 獲取此附件內容,已解碼
        part->getContent(content); 
    }


    
// 獲取郵件的內聯(lián)資源附件的名字及內容
    
// 方法與獲取普通附件一樣,只不過調用getRelatedAttachment()等。
    
// filename參數(shù)換成cid (Content-ID)
    
// 獲取郵件所有內聯(lián)資源附件的名字。
    StringArray cids; 
    email.getAllRelatedAttachmentCIDs(cids); 

    
// 遍歷查找名字跟其他Array用法一樣
    
// 獲取指定內聯(lián)資源附件文件名的附件內容,如果有重復的名字的附件將只返回第一個相同
    
// 名字的附件數(shù)據(jù)。要獲取其他所有附件,請參考下面的方法。
    String cid("3334776372$1097735850$0600030@local"), content; 
    email.getRelatedAttachment(cid, content); 

    
// 獲取郵件所有內聯(lián)資源附件。

    AttachmentPtrArray attachments; 
    email. getAllRelatedAttachments(attachments); 

    
// 內聯(lián)資源附件總數(shù)
    int attnum = attachments.size(); 

    
// 遍歷所有內聯(lián)資源附件
    for( size_t i = 0; i < attachments.size(); i ++ ) 
    
{
        
// 獲得此附件PART的指針,注意:不能free或其他直接修改指針內容的操作。
        MimeBodyPart *part = attachments[i]; 
        
if( part == NULL ) 
            
continue;

        String filename, cid, content; 

        
// 獲取此內聯(lián)資源附件CID
        Part->getContentID(cid); 

        
// 獲取此內聯(lián)資源附件文件名
        part->getFileName(filename); 

        
// 獲取此內聯(lián)資源附件內容,已解碼
        part->getContent(content); 
    }

}


3           組裝郵件

下面的例子詳細說明如何用郵件解析庫API組裝一封郵件:

/**
 * 郵件源文數(shù)據(jù)通過參數(shù)傳遞
 * @param emaildata 存儲組裝好的郵件源文的字符串
 
*/

void createMessage(String &emaildata) 
{
    
// 定義一個MimeMessage郵件對象用于組裝
    MimeMessage email; 

    
// 設置標題
    email.setSubject("test mail"); 

    
// 設置發(fā)件人
    email.setSender("test@test.net"); 

    
// 也可以,后面是地址的名字
    email.setSender("test@test.net""測試帳號");

    
// 添加收件人
    email.addTo("test1@test.net"); 
    email.addTo(
"test2@test.net""收件人2"); 

    
// 添加抄送者地址
    email.addCc("test3@test.net"); 
    email.addCc(
"test4@test.net""收件人4"); 

    
// 添加密送者地址
    email.addBcc("test5@test.net"); 
    email.addBcc(
"test6@test.net""收件人6"); 

    
// 設置特殊的郵件頭
    email.addHeader("X-Mailer""jmail 1.0"); 
    
// 設置純文本正文,缺省為gb2312(環(huán)境變量控制,后面會講到如何配置郵件解析環(huán)境)
    email.setTextPlain("This is a test mail created by xmail"); 

    
// 也可以這樣指定編碼方式
    email.setTextPlain("This is a mail encoded by gbk""gbk"); 

    
// 當然也可以這樣
    String bodytext; 
    
// bodytext可以從其他地方讀取
    email.setTextPlain(bodytext); 

    
// 或者這樣
    email.setTextPlain(bodytext, "gbk"); 

    
// 設置HTML正文, 跟純文本正文類似。
    
// 備注:一封郵件可以同時包含一個純文本正文和一個HTML正文供閱讀器選擇顯示
    email.setTextHtml("<HTML><BODY>This is a test mail</BODY></HTML>"); 

    
// 也可以這樣指定編碼方式
    email.setTextHtml("<HTML><BODY>This is a mail encoded by gbk</BODY></HTML>""gbk"); 

    
// 當然也可以這樣
    String bodyhtml; 
    
// bodyhtml可以從其他地方讀取
    email.setTextHtml(bodyhtml); 

    
// 或者這樣
    email.setTextHtml(bodyhtml, "gbk"); 

    
// 添加附件
    String filename("attr1.jpg"), filedata; 
    
//filename 和 filedata 可以從其他地方讀取
    email.addAttachment(filedata, filename, "image/jpeg"); 

    
// 也可以這樣
    email.addAttachment(filedata, "attr1.jpg""image/jpeg"); 

    
// 注意:如果不指定后面第三個參數(shù),即附件的MimeType類型
    
// MimeMessage將根據(jù)filename的擴展名到MimeTypes數(shù)據(jù)映射表中查找。
    
// 備注:MimeTypes映射表可以配置,參考后面的"配置郵件解析環(huán)境"
    
// 所以也可以這樣調用
    email.addAttachment(filedata, filename); 
    email.addAttachment(filedata, 
"attr1.jpg"); 

    
// 添加內嵌資源附件,與添加普通附件類似。
    
// 注意:必須要先設置郵件的HTML正文后才能添加內嵌資源附件,否則也添不進去 
    
// src是資源附件在HTML正文里的URL,包括路徑和文件名
    
// cid是添加成功后資源附件的CID值
    
// 返回值count是資源附件在HTML里引用的個數(shù)
    String src("/images/attr1.jpg"), cid, filedata; 
    
//src 和 filedata 可以從其他地方讀取
    int count = email.addRelatedAttachment(filedata, src, cid, "image/jpeg"); 

    
// 同樣也可以這樣
    count=email.addRelatedAttachment(filedata, "/images/attr1.jpg", cid, "image/jpeg"); 
    count 
= email.addRelatedAttachment(filedata, "/images/attr1.jpg", cid); 
    count 
= email.addRelatedAttachment(filedata, "/images/attr1.jpg", cid); 

    
// 注意:如果重新覆蓋了郵件HTML正文即再次調用setTextHtml(),
    
// MimeMessage將會自動遍歷所有資源附件,刪除沒有再引用的資源附件。

}

 

3           修改郵件

下面的例子詳細說明如何用郵件解析庫API修改一封郵件:

/**
 * 郵件源文數(shù)據(jù)通過參數(shù)傳遞
 * @param emaildata 存儲組裝好的郵件源文的字符串
 
*/

void createMessage(String &emaildata) 
{
    
// 定義一個MimeMessage郵s件對象用于修改
    
// 方法與上面的解析和組裝類似,解析和組裝調用的方法都可以調用
    MimeMessage email(emaildata); 

    
// 下面介紹一下刪除的功能
    
// 清除郵件純文本正文
    email.removeTextPlain(); 

    
// 清楚郵件HTML正文
    email.removeTextHtml(); 

    
// 刪除指定文件名的附件
    String filename("attr1.jpg"); 
    email.removeAttachment(filename); 
    email.removeAttachment(
"attr1.jpg"); 

    
// 刪除指定位置的附件,getAllAttachments()獲取的數(shù)組中的位置,從0開
    email.removeAttachment(2); 

    
// 刪除所有附件
    email.removeAllAttachments(); 

    
// 刪除所有內嵌資源附件
    email.removeAllRelatedAttachments(); 

    
// 還可以調用上面的組裝方法更新指定的數(shù)據(jù)
    
// 更新郵件源文數(shù)據(jù)
    
// 注意:一定這樣重新定義變量存儲新源文數(shù)據(jù)
    String newdata; 
    email.toString(newdata); 

    
// 更新返回值字符串
    emaildata = newdata; 
}


 

4           高級功能

郵件解析引擎庫API還有更復雜更強大的高級功能,可以組裝和解析出任何符合RFC822RFC2045的郵件。請參考解析庫里的測試程序mimeutils.cpp和相關的文檔。

 

 

posted on 2008-03-20 00:23 Javen-Studio 閱讀(392) 評論(0)  編輯 收藏 引用
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产毛片精品视频| 久久大逼视频| 老司机67194精品线观看| 久久久久久久久久久一区 | 免费在线成人av| 欧美在线播放视频| 黄色日韩在线| 亚洲高清在线观看| 亚洲精品国产精品国自产观看| 在线日韩中文字幕| 日韩亚洲国产精品| 亚洲综合色婷婷| 久久久久久久激情视频| 亚洲电影免费观看高清完整版在线观看 | 91久久精品国产91久久性色| 亚洲精品久久久久久久久| 中日韩在线视频| 久久久久久国产精品一区| 亚洲大胆人体在线| 亚洲一级片在线观看| 久久国产99| 欧美日韩免费视频| 国产区日韩欧美| 亚洲精品一区二区在线观看| 亚洲欧美日韩国产精品| 蜜月aⅴ免费一区二区三区 | 久久精品视频网| 亚洲激情网站免费观看| 亚洲欧美区自拍先锋| 欧美电影免费观看高清| 国产欧美大片| 在线天堂一区av电影| 欧美顶级大胆免费视频| 欧美一区二区精品久久911| 欧美乱妇高清无乱码| 黄网站免费久久| 亚洲欧美激情诱惑| 亚洲国产天堂网精品网站| 欧美一区国产一区| 国产精品高清在线| 99视频精品在线| 亚洲大胆女人| 久久九九全国免费精品观看| 国产精品www| 亚洲精品乱码久久久久久黑人| 久久国产精品99久久久久久老狼| 亚洲欧洲日产国产综合网| 女同一区二区| 亚洲黄一区二区三区| 久久久免费观看视频| 亚洲一区二区成人| 欧美日一区二区在线观看 | 亚洲高清一区二| 久久久九九九九| 国产在线精品一区二区中文| 欧美福利电影在线观看| 久久久久久久999| 国产日韩一区欧美| 香蕉久久精品日日躁夜夜躁| 91久久在线| 欧美精品久久久久久久久老牛影院 | 亚洲少妇一区| 亚洲高清视频中文字幕| 麻豆91精品| 在线观看精品一区| 久久综合伊人77777麻豆| 欧美综合激情网| 国产欧美va欧美va香蕉在| 欧美在线三级| 亚洲欧美一区二区三区极速播放| 国产精品日韩| 性色av一区二区三区| 亚洲一二三区视频在线观看| 国产精品v亚洲精品v日韩精品 | 欧美国产亚洲精品久久久8v| 久久精品道一区二区三区| 国内不卡一区二区三区| 久久久久久久久久久一区| 久久久久久亚洲精品杨幂换脸| 亚洲大胆av| 亚洲国产三级网| 国产精品福利久久久| 欧美中文字幕视频| 久久久www成人免费毛片麻豆| 亚洲国产精品悠悠久久琪琪| 亚洲黄色一区| 国产精品夜夜嗨| 老司机成人网| 欧美日韩一区二区三区免费| 午夜一区二区三区不卡视频| 欧美中文字幕不卡| 91久久在线观看| 亚洲乱码久久| 国内自拍视频一区二区三区| 亚洲黄色片网站| 国产精品男女猛烈高潮激情 | 麻豆成人小视频| 夜夜嗨av一区二区三区四季av | 欧美色中文字幕| 久久国产乱子精品免费女| 久久久国产午夜精品| 一本久道综合久久精品| 亚洲欧美日产图| 亚洲国产视频a| 中日韩美女免费视频网址在线观看| 国产欧美一区二区三区国产幕精品| 裸体一区二区三区| 亚洲一区欧美| 日韩午夜免费| 精品二区视频| 一本久久a久久精品亚洲| 国产精品女同互慰在线看| 免费在线亚洲| 欧美少妇一区二区| 蜜桃精品一区二区三区| 欧美视频福利| 免费在线看一区| 国产日本欧洲亚洲| 亚洲成人在线网| 国产视频精品va久久久久久| 亚洲伦理自拍| 亚洲日本va午夜在线影院| 久久av资源网站| 欧美一区二区三区播放老司机 | 免费一级欧美在线大片| 欧美日韩一区在线视频| 免费人成网站在线观看欧美高清| 欧美视频一区二| 亚洲国产精品尤物yw在线观看 | 亚洲一区二区三| 麻豆av一区二区三区| 麻豆精品91| 精品91久久久久| 欧美在线91| 红桃视频一区| 久久精品论坛| 老司机aⅴ在线精品导航| 国产日本欧美在线观看| 亚洲影视综合| 欧美中文字幕第一页| 国产日韩精品久久久| 亚洲一区二区三区免费视频| 亚洲午夜小视频| 国产精品a久久久久| 99re热这里只有精品免费视频| 亚洲精品一品区二品区三品区| 免费在线观看成人av| 亚洲电影第1页| 亚洲精品四区| 欧美人牲a欧美精品| 亚洲乱码国产乱码精品精天堂| 一本久道久久综合婷婷鲸鱼| 欧美午夜精品久久久| 欧美一区二视频| 狠狠色狠狠色综合日日五| 欧美亚洲视频| 久久综合福利| 亚洲激情视频| 欧美日韩国产小视频| 一区二区三区视频在线| 欧美一区综合| 亚洲激情中文1区| 国产精品高潮呻吟视频| 久久精品国产一区二区三区免费看 | 欧美一区二区三区男人的天堂| 欧美综合国产精品久久丁香| 亚洲激情在线激情| 亚洲第一搞黄网站| 欧美精品激情blacked18| 99国产精品视频免费观看一公开| 亚洲一本视频| 国产一区二区日韩精品| 久久亚洲精品伦理| 亚洲精品欧美在线| 久久爱另类一区二区小说| 在线观看亚洲一区| 欧美日韩一级黄| 欧美伊人久久大香线蕉综合69| 欧美激情一区二区三区高清视频| 亚洲字幕在线观看| 亚洲国产高清自拍| 国产精品免费网站| 每日更新成人在线视频| 亚洲一级网站| 亚洲电影有码| 亚洲一区在线免费观看| 黄色成人在线观看| 欧美日韩系列| 久久久噜噜噜| 亚洲午夜在线观看视频在线| 欧美成年视频| 欧美一区二区在线观看| 日韩视频在线观看一区二区| 精品成人一区二区| 欧美色一级片| 欧美成人免费在线观看| 欧美影视一区| 亚洲一区二区三区四区视频| 亚洲黄一区二区| 女人香蕉久久**毛片精品|