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

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>
            一区二区视频免费完整版观看| 欧美一乱一性一交一视频| 久久久在线视频| 在线精品福利| 亚洲电影专区| 久久久久久夜精品精品免费| 在线成人激情| 亚洲欧洲三级电影| 国产精品系列在线| 国产一区二区三区四区五区美女| 玖玖玖免费嫩草在线影院一区| 欧美一区在线直播| 亚洲区国产区| 亚洲深夜影院| 精品白丝av| 亚洲理论在线| 国模私拍视频一区| 亚洲清纯自拍| 国产视频在线观看一区二区| 免费欧美在线视频| 欧美婷婷六月丁香综合色| 欧美影院成人| 女人香蕉久久**毛片精品| 妖精成人www高清在线观看| 亚洲一区二区三区在线播放| 亚洲第一视频网站| 亚洲深夜福利在线| 亚洲乱码一区二区| 午夜精品视频一区| 一本色道久久综合狠狠躁篇怎么玩 | 亚洲色图在线视频| 韩国久久久久| 一区二区三区 在线观看视频| 国产一区二区高清| 一区二区冒白浆视频| 在线不卡中文字幕播放| 亚洲一区欧美二区| 99精品国产99久久久久久福利| 欧美一区二区三区精品| 亚洲视频每日更新| 麻豆av一区二区三区| 久久福利影视| 国产精品国产三级国产aⅴ无密码| 欧美成人小视频| 国内成人精品视频| 亚洲资源av| 亚洲自拍偷拍福利| 欧美激情综合网| 欧美成人精品福利| 激情文学一区| 欧美一区=区| 欧美一区二区三区四区夜夜大片| 欧美日韩精品免费观看| 亚洲福利av| 亚洲国产乱码最新视频| 久久岛国电影| 久久久av网站| 国产一区二区三区久久| 亚洲综合国产精品| 午夜视频精品| 国产欧美一区二区在线观看| 亚洲专区国产精品| 欧美一区国产二区| 国产美女高潮久久白浆| 亚洲无限乱码一二三四麻| 亚洲午夜91| 国产精品久久久久久久久搜平片 | 在线日本成人| 久久九九精品| 麻豆精品在线观看| 亚洲大片在线观看| 另类春色校园亚洲| 91久久久精品| 亚洲一区二区精品视频| 欧美视频亚洲视频| 亚洲男人天堂2024| 久久久久久久久久看片| 一区二区自拍| 欧美激情亚洲| 亚洲特黄一级片| 久久九九全国免费精品观看| 极品尤物一区二区三区| 欧美成人免费在线观看| 亚洲免费观看视频| 欧美亚洲视频一区二区| 黄色一区三区| 欧美成人激情视频| 一卡二卡3卡四卡高清精品视频| 亚洲欧美国产高清| 激情文学一区| 欧美午夜一区二区| 久久大逼视频| 日韩一本二本av| 久久久精品性| 一区二区日韩精品| 国产亚洲福利| 欧美精品午夜视频| 午夜精品免费| 亚洲破处大片| 久久综合一区二区三区| 一区二区三区视频在线| 国产在线拍揄自揄视频不卡99| 欧美二区视频| 欧美一区二区三区四区视频| 亚洲国产成人久久综合| 性色av一区二区三区| 亚洲精品美女在线观看播放| 国产精品一区二区男女羞羞无遮挡| 久久久www成人免费无遮挡大片| 亚洲麻豆国产自偷在线| 久久免费观看视频| 亚洲女优在线| 亚洲精选中文字幕| 激情综合色综合久久| 国产精品xxxav免费视频| 蜜臀99久久精品久久久久久软件| 亚洲特级片在线| 亚洲国产日日夜夜| 久久综合九色综合欧美狠狠| 亚洲综合欧美| 99综合在线| 亚洲国产精品久久久久婷婷884| 国产欧美日韩一区| 国产精品激情| 欧美日韩三级一区二区| 久久综合影音| 久久久久久成人| 欧美亚洲三区| 亚洲欧美国产毛片在线| 99精品视频免费观看| 亚洲国产美女| 欧美www在线| 蜜桃av噜噜一区| 久久亚洲欧洲| 久久九九国产| 久久久久国产精品www| 亚洲欧美中文在线视频| 亚洲一二区在线| 亚洲自拍高清| 国产精品视频999| 亚洲无毛电影| 亚洲欧美日韩综合国产aⅴ| 中文欧美在线视频| 亚洲图片欧美日产| 亚洲在线视频观看| 亚洲一区二区三区精品动漫| 亚洲视频 欧洲视频| 亚洲欧美一级二级三级| 亚洲一区二区成人在线观看| 亚洲午夜一区| 欧美一二三区在线观看| 香蕉久久国产| 久久久亚洲高清| 欧美顶级大胆免费视频| 欧美日韩三级一区二区| 国产精品视频精品| 韩国女主播一区| 亚洲激情视频在线播放| 日韩午夜在线播放| 亚洲欧美成人综合| 久久久久欧美精品| 欧美电影在线播放| 日韩西西人体444www| 亚洲一区二区三区视频| 久久成人在线| 欧美另类视频| 国产日韩精品久久久| 在线免费观看日本欧美| 日韩一级片网址| 欧美在线视频免费播放| 麻豆亚洲精品| 一区二区精品在线观看| 性色av一区二区三区在线观看 | 亚洲另类自拍| 亚洲欧美一区二区视频| 玖玖精品视频| 国产精品v日韩精品v欧美精品网站| 国产午夜精品一区二区三区欧美| 亚洲成人资源| 性高湖久久久久久久久| 欧美二区不卡| 亚洲欧美日韩国产精品| 免费在线观看一区二区| 国产精品系列在线| 日韩午夜高潮| 美女主播视频一区| 亚洲一区图片| 欧美日韩国产一区二区| 韩国av一区二区三区| 亚洲一二三四久久| 欧美激情亚洲自拍| 亚洲字幕一区二区| 欧美国产精品一区| 一区二区三区亚洲| 亚洲欧美在线免费观看| 亚洲国产高清视频| 久久九九免费| 国产日韩在线一区| 亚洲欧美视频一区| 日韩午夜高潮|