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

Javen-Studio 咖啡小屋

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

  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
  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解析一封郵件:

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

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

    
// 獲取發信時間,此時間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()); 

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

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

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

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

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

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

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

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


    
// 數組的遍歷也可采用如下傳統方式
    forint i = 0; i < toAddrs.size(); i ++ ) {
        
// 由于[]操作符不計算數組范圍,所以不建議如此使用。盡量使用迭代器,
        
// 除非是想直接取得第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()); 

    
// 也可以這樣同時獲取純文本正文的字符集編碼方式,以供調用者根據它來
    
// 選擇不同的字符集顯示給用戶。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用法一樣
    
// 獲取指定附件文件名的附件內容,如果有重復的名字的附件將只返回第一個相同
    
// 名字的附件數據。要獲取其他所有附件,請參考下面的方法。
    String filename("attr1.jpg"), content; 
    email.getAttachment(filename, content); 

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

    
// 附件總數
    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); 
    }


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

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

    
// 獲取郵件所有內聯資源附件。

    AttachmentPtrArray attachments; 
    email. getAllRelatedAttachments(attachments); 

    
// 內聯資源附件總數
    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, cid, content; 

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

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

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

}


3           組裝郵件

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

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

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

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

    
// 設置發件人
    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(環境變量控制,后面會講到如何配置郵件解析環境)
    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"); 

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

    
// 添加內嵌資源附件,與添加普通附件類似。
    
// 注意:必須要先設置郵件的HTML正文后才能添加內嵌資源附件,否則也添不進去 
    
// src是資源附件在HTML正文里的URL,包括路徑和文件名
    
// cid是添加成功后資源附件的CID值
    
// 返回值count是資源附件在HTML里引用的個數
    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修改一封郵件:

/**
 * 郵件源文數據通過參數傳遞
 * @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()獲取的數組中的位置,從0開
    email.removeAttachment(2); 

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

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

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

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


 

4           高級功能

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

 

 

posted on 2008-03-20 00:23 Javen-Studio 閱讀(393) 評論(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>
            欧美日本韩国一区| 久久一区中文字幕| 国产日韩精品在线| 国产模特精品视频久久久久| 国产精品大片免费观看| 久久不射网站| 久久精品成人| 男女精品网站| 亚洲日本中文字幕区| 欧美~级网站不卡| 亚洲激情在线| 亚洲视频一区在线| 久久本道综合色狠狠五月| 久久久久国产精品厨房| 欧美精品色网| 国产偷自视频区视频一区二区| 在线免费观看日本欧美| 一区二区三区久久精品| 久久久91精品国产一区二区精品| 欧美大学生性色视频| 一区二区国产日产| 久久久久国色av免费看影院| 欧美亚洲色图校园春色| 久久精品导航| 亚洲激情一区二区三区| 国产午夜久久久久| 免费亚洲电影在线| 久久一区二区三区超碰国产精品 | 亚洲欧美日韩国产成人精品影院| 欧美一区二区播放| 欧美日本一道本| 亚洲精品视频一区| 欧美成人综合在线| 午夜精品成人在线| 国产精品久久久久av| 亚洲国产岛国毛片在线| 久久久人成影片一区二区三区观看 | 久久久99久久精品女同性| 久久视频国产精品免费视频在线| 国产精品mv在线观看| 亚洲欧美日韩精品久久久久| 亚洲日本无吗高清不卡| 亚洲伦理在线观看| 欧美日韩国产在线| 在线亚洲精品福利网址导航| 日韩视频一区二区三区在线播放免费观看 | 亚洲精品国产拍免费91在线| 欧美国产一区二区三区激情无套| 亚洲激情成人在线| 久久久亚洲精品一区二区三区| 欧美日韩国产123区| 欧美亚洲日本网站| 久久久国产精品一区| 亚洲精品欧洲精品| 亚洲一区二区三区视频| 永久免费视频成人| 性欧美超级视频| 亚洲美女精品一区| 黄色成人在线观看| 亚洲美女在线观看| 国产婷婷成人久久av免费高清| 亚洲黄一区二区三区| 国产色视频一区| 最新高清无码专区| 国产精品电影在线观看| 老司机aⅴ在线精品导航| 欧美成人一区二区三区在线观看| 亚洲欧美日韩精品久久久| 久久精品国产亚洲一区二区| 亚洲高清激情| 免费91麻豆精品国产自产在线观看| 校园春色综合网| 国产精品主播| 日韩一二三区视频| 日韩一区二区免费高清| 美国成人毛片| 欧美大胆人体视频| 亚洲黄网站黄| 欧美韩国日本一区| 亚洲视频在线观看网站| 欧美日韩一区二区三区免费看| 欧美激情综合色| 亚洲人成在线播放| 午夜一区二区三区不卡视频| 国产精品久久久久久一区二区三区 | 狠狠色狠色综合曰曰| 久久不射中文字幕| 亚洲毛片在线看| 欧美一区二区在线| 好吊色欧美一区二区三区视频| 久久精品国产第一区二区三区| 亚洲一区二区三区中文字幕在线| 欧美人成网站| 久久久999成人| 99国产精品99久久久久久粉嫩| 99亚洲伊人久久精品影院红桃| 国产精品国产成人国产三级| 亚洲伊人一本大道中文字幕| 欧美不卡高清| 欧美一区二区视频在线观看2020 | 亚洲一区二区黄色| 亚洲第一主播视频| 亚洲一区国产精品| 一本色道久久综合狠狠躁篇怎么玩| 亚洲一二三区视频在线观看| 玖玖精品视频| 午夜精品久久久久| 精品成人一区二区| 国产精品免费网站| 欧美日韩二区三区| 国产午夜亚洲精品理论片色戒| 欧美日韩成人综合| 欧美四级在线| 欧美日本一区二区视频在线观看| 开心色5月久久精品| 另类天堂视频在线观看| 久久精品夜色噜噜亚洲aⅴ| 亚洲综合好骚| 久久嫩草精品久久久精品一| 久久婷婷国产麻豆91天堂| 久久综合色综合88| 欧美午夜理伦三级在线观看| 欧美日韩一区在线观看视频| 国产精品久久一级| 国内一区二区三区| 一区二区三区国产在线| 欧美一级理论片| 亚洲国产精品成人va在线观看| 亚洲一区二区日本| 午夜日韩电影| 欧美精品不卡| 亚洲影院在线| 欧美人与性动交a欧美精品| 欧美日韩一区三区四区| 国产精品黄色在线观看| 在线精品观看| 欧美伊人久久| 亚洲欧洲日韩综合二区| 亚洲伊人久久综合| 欧美日韩在线综合| 亚洲乱码国产乱码精品精天堂| 欧美在线看片| 99伊人成综合| 欧美体内she精视频| 亚洲国产精品一区制服丝袜| 久久久精品国产99久久精品芒果| 亚洲国语精品自产拍在线观看| 欧美专区18| 亚洲国产一区在线| 免费精品99久久国产综合精品| 久久久久久久久久久成人| 国产欧美日韩亚州综合| 欧美主播一区二区三区美女 久久精品人 | 欧美大片va欧美在线播放| 欧美一级大片在线观看| 国产色产综合色产在线视频 | 噜噜噜91成人网| 国产亚洲视频在线观看| 久久久久在线观看| 亚洲国产成人久久综合一区| 亚洲福利视频网站| 欧美激情性爽国产精品17p| 一本久道久久久| 亚洲视频一区二区免费在线观看| 国产精品你懂的在线欣赏| 久久久久久久91| 麻豆成人在线播放| 国产精品一区二区女厕厕| 欧美综合第一页| 亚洲午夜免费视频| 久久久久久久网站| 亚洲视频在线观看一区| 欧美一级艳片视频免费观看| 亚洲激情中文1区| 午夜亚洲伦理| 一本色道久久99精品综合| 久久爱91午夜羞羞| 亚洲欧美国产77777| 免费短视频成人日韩| 欧美亚洲综合久久| 欧美日韩一本到| 亚洲国产日本| 亚洲国产精品久久91精品| 欧美一进一出视频| 欧美一区二区三区视频免费播放 | 国产精品99久久久久久久vr | 麻豆9191精品国产| 国产酒店精品激情| 亚洲精品资源美女情侣酒店| 在线精品亚洲一区二区| 欧美在线一二三| 欧美在线视频导航| 激情六月婷婷久久| 久久精品一区蜜桃臀影院| 久久激情五月激情| 激情文学一区| 欧美激情国产高清| 欧美激情1区2区3区| 99精品欧美一区二区三区| 欧美 日韩 国产 一区|