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

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 閱讀(401) 評論(0)  編輯 收藏 引用

只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            日韩视频免费观看高清在线视频| 亚洲免费电影在线观看| 欧美日韩伦理在线| 免费成人黄色片| 国产日韩专区| 在线一区二区三区四区五区| 亚洲美女视频网| 欧美1区2区| 免费在线亚洲| 在线观看一区二区视频| 性欧美18~19sex高清播放| 亚洲欧美日韩视频一区| 欧美视频一二三区| 亚洲作爱视频| 亚洲一品av免费观看| 欧美日韩久久不卡| 亚洲免费不卡| 一区二区三区黄色| 欧美人体xx| 日韩亚洲国产精品| 一区二区三区久久网| 欧美日韩亚洲一区在线观看| 亚洲三级视频在线观看| 99国产精品视频免费观看一公开| 欧美成人午夜| 最新日韩精品| 亚洲亚洲精品在线观看| 国产精品福利影院| 亚洲在线中文字幕| 久久久久国产精品厨房| 精品99一区二区| 久久久噜噜噜久久中文字免| 男女视频一区二区| 91久久在线播放| 欧美破处大片在线视频| 一本久道久久综合中文字幕| 亚洲女性裸体视频| 国产日韩在线一区| 久久婷婷人人澡人人喊人人爽| 女人天堂亚洲aⅴ在线观看| 亚洲国产欧美日韩另类综合| 欧美精品在线网站| 中文在线不卡视频| 久久久免费观看视频| 亚洲二区三区四区| 欧美日韩国产综合新一区| 亚洲视频在线播放| 久久免费高清视频| 日韩亚洲国产精品| 国产日韩精品综合网站| 久久在线精品| 一区二区三区|亚洲午夜| 欧美在线黄色| 亚洲人体偷拍| 国产欧美高清| 免费在线欧美黄色| 亚洲视频在线观看三级| 米奇777在线欧美播放| 99在线热播精品免费| 国产亚洲欧美日韩在线一区| 欧美www视频在线观看| 国产精品99久久久久久久vr| 欧美日韩在线免费| 亚洲午夜一级| 欧美成人午夜| 午夜在线一区二区| 亚洲娇小video精品| 国产精品区一区二区三| 久久综合影视| 亚洲伊人色欲综合网| 亚洲电影在线| 久久精品理论片| 亚洲视屏一区| 亚洲激情视频在线观看| 国产午夜一区二区三区| 欧美日韩成人在线观看| 久久亚洲欧美| 亚洲无毛电影| 日韩午夜电影av| 欧美大片在线看免费观看| 欧美一区二区三区视频在线| 一本色道久久综合精品竹菊| 一区免费观看| 国产一区二区三区直播精品电影| 欧美色欧美亚洲另类二区| 麻豆91精品| 久久久精品午夜少妇| 亚洲直播在线一区| 妖精视频成人观看www| 亚洲国产小视频在线观看| 久久婷婷久久| 久久久久国产成人精品亚洲午夜| 亚洲欧美日韩中文播放| 中文av字幕一区| 日韩亚洲精品电影| 亚洲精品午夜| 亚洲欧洲在线一区| 亚洲国产欧美久久| 亚洲国产精品v| 影音先锋久久| 影音先锋亚洲视频| 国内外成人免费激情在线视频网站| 国产精品欧美久久| 国产精品久久久久国产a级| 欧美日韩在线不卡一区| 欧美破处大片在线视频| 欧美激情无毛| 欧美日韩1080p| 欧美日韩一区二区欧美激情| 欧美精品一区二区三区四区 | 欧美国产日韩一区| 欧美77777| 欧美大片va欧美在线播放| 美女主播一区| 欧美激情精品久久久久久免费印度| 美国三级日本三级久久99| 久久五月婷婷丁香社区| 美女网站久久| 亚洲欧洲一区二区在线播放| 亚洲人体一区| 亚洲一区二区精品在线观看| 亚洲欧美日产图| 欧美伊人精品成人久久综合97| 久久精品综合一区| 欧美成人免费一级人片100| 欧美国产日韩二区| 欧美亚洲第一区| 国产日韩欧美在线看| 影音先锋中文字幕一区| 日韩亚洲欧美综合| 午夜免费电影一区在线观看| 久久久久久九九九九| 欧美不卡视频| 在线视频你懂得一区二区三区| 欧美一区二区三区视频免费播放| 久久久久在线观看| 欧美日韩三级视频| 国产一区二区三区四区老人| 亚洲精品欧美一区二区三区| 亚洲一区二区在线看| 老司机午夜精品视频| 亚洲免费观看高清完整版在线观看熊| 亚洲午夜在线视频| 麻豆国产精品一区二区三区| 欧美日韩在线精品| 激情欧美日韩| 亚洲一区精品电影| 免费在线观看成人av| 一区二区三区四区五区视频 | 久久精品国产第一区二区三区| 欧美gay视频| 国产欧美二区| 亚洲第一二三四五区| 亚洲在线观看免费视频| 亚洲无线视频| 蜜臀久久99精品久久久画质超高清| 国产精品ⅴa在线观看h| 尹人成人综合网| 午夜精品福利在线| 亚洲电影一级黄| 欧美伊人精品成人久久综合97| 欧美精品成人一区二区在线观看| 国产亚洲精品aa午夜观看| 一区二区三区日韩精品视频| 噜噜噜噜噜久久久久久91| 一区二区三区免费网站| 蜜臀va亚洲va欧美va天堂| 国产视频一区二区三区在线观看| 夜久久久久久| 欧美黄污视频| 浪潮色综合久久天堂| 国产视频一区三区| 午夜精品久久久久久久久久久久久| 亚洲福利小视频| 久久午夜精品一区二区| 国产亚洲成av人片在线观看桃 | 亚洲视频在线免费观看| 欧美国产综合视频| 久久狠狠婷婷| 国产一区二区三区电影在线观看 | 亚洲国产综合91精品麻豆| 久久超碰97中文字幕| 国产精品一页| 欧美一区二区精美| 亚洲午夜成aⅴ人片| 欧美视频在线免费| 国产精品99久久久久久人| 亚洲精品久久久久久久久久久久久 | 国产精品视频免费一区| 一区二区动漫| 亚洲精品你懂的| 欧美日韩国产精品一区二区亚洲| 精品999久久久| 久久久国产成人精品| 欧美在线free| 一色屋精品视频在线看| 美女任你摸久久| 免费成人性网站| 亚洲精品国产系列| 亚洲精选视频免费看|