<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 70,comments - 408,trackbacks - 0

    ??? 我干軟件開(kāi)發(fā)也有一點(diǎn)的年頭了,回頭想想,也經(jīng)歷了不少的酸甜苦辣,為解決了復(fù)雜的問(wèn)題快樂(lè)過(guò).也為不分晝夜的加班趕工程郁悶過(guò).不過(guò)這些都沒(méi)能減少我對(duì)計(jì)算機(jī)的熱情,我對(duì)程序的喜好.以前對(duì)JavaMail也有一些學(xué)習(xí)性的認(rèn)識(shí),不過(guò)一直沒(méi)在實(shí)際的項(xiàng)目中應(yīng)用過(guò).直到最近的一個(gè)項(xiàng)目,需要JavaMail所以我打算認(rèn)真的學(xué)習(xí)一下這種技術(shù),因?yàn)槲夷壳吧瞄L(zhǎng)的是Struts,而Struts又不具備郵件發(fā)送的功能,所以我要深刻的學(xué)習(xí)一下JavaMailAPI.所以在我學(xué)會(huì)了JavaMail的基本操作的同時(shí)也將這篇文章獻(xiàn)給大家,雖然技術(shù)含量不高,但是希望能對(duì)一些剛剛接觸JavaMail的同道中人有所幫助.好了閑話少說(shuō)進(jìn)入正題,首先介紹幾個(gè)郵件傳輸協(xié)議,雖然說(shuō)不了解這些協(xié)議也可以實(shí)用JavaMailAPI,但是我始終認(rèn)為,如果不透徹的了解一種技術(shù)的本質(zhì),即使會(huì)用了也是照葫蘆畫(huà)瓢,換一種模式也許就玩不轉(zhuǎn)了.

    ??? SMTP:簡(jiǎn)單郵件傳輸協(xié)議(Simple Mail Transfer Protocol,SMTP)由RFC821定義,它定義了發(fā)送郵件的機(jī)制,在JavaMail環(huán)境中,基于JavaMail的程序?qū)⒑鸵蛱鼐W(wǎng)服務(wù)供應(yīng)商ISP(internet Service Provider s)SMTP服務(wù)器通信.SMTP服務(wù)器會(huì)中轉(zhuǎn)消息給接收方SMTP服務(wù)器以便最終讓用戶(hù)經(jīng)由POP或者IMAP獲得.

    ??? POP:代表郵局協(xié)議(Post Office Protocol).目前的版本是3.所以一般都稱(chēng)之為POP3.這個(gè)協(xié)議是由RFC1939定義的.POP是一種機(jī)制,因特網(wǎng)上多大數(shù)用戶(hù)用它得到郵件.它規(guī)定每個(gè)用戶(hù)一個(gè)郵箱的支持.使用POP協(xié)議的時(shí)候,用戶(hù)的許多性能并不是由POP協(xié)議支持的,如查看幾封新郵件消息這個(gè)功能,這些功能內(nèi)建在如Eudora或MicrosoftOutlook之類(lèi)的程序中,它們記住一些事.所以在用JavaMail的時(shí)候,如果你想要這些信息,你就必須自己算了.

    ??? IMAP:是更高級(jí)的用戶(hù)接收消息的協(xié)議,被定義在RFC2060中,IMAP代表因特網(wǎng)消息訪問(wèn)協(xié)議(Internet Message Access Protocol),目前用的版本是4,所以也叫做IMAP4.在用到IMAP的時(shí)候,郵件服務(wù)器必須支持這個(gè)協(xié)議,不能僅僅把使用POP的程序用于IMAP,并指望它支持IMAP所有性能.

    ??? MIME:是因特網(wǎng)郵件擴(kuò)展標(biāo)準(zhǔn)(Multipurpose Internet Mail Extensions).它不是郵件傳輸協(xié)議,但是對(duì)于傳輸?shù)膬?nèi)容的消息,附件以及其他的內(nèi)容定義了格式.可以理解成一個(gè)定義合適的標(biāo)準(zhǔn).

    ??? NNTP:因?yàn)镴avaMail將供應(yīng)商和所有其它的東西分開(kāi)了,您就能輕松添加額外的協(xié)議支持.NNTP 就是網(wǎng)絡(luò)新聞傳輸協(xié)議.

    ??? JavaMailAPI可以到 http://java.sun.com/products/javamail/index.html 進(jìn)行下載,并將mail.jar添加到classpath即可.

    ??? JAF框架可以到 http://java.sun.com/products/javabeans/glasgow/jaf.html 進(jìn)行下載,并將activation.jar添加到classpath即可.

    ??? 如果實(shí)用J2EE就沒(méi)由什么特定非要用基本的JavaMailAPI了.J2EE的類(lèi)就能處理了.只要確保j2ee.jar文件在classpath中就Ok了.

    下面我用一個(gè)最簡(jiǎn)單的例子還演示第一條消息的發(fā)送.

    1,獲取系統(tǒng)Properties.

    Properties props = System.getProperties();

    2,將您的SMTP服務(wù)器名添加到mail.smtp.host關(guān)鍵字的屬性中.

    Props.pout( mail.smtp.host ,host);

    3,獲取基于Properties Session對(duì)象.

    Session session = Session.getDefaultInstance(props,null);

    4,從Session創(chuàng)建一個(gè)MimeMessage.

    MimeMessage message = new MimeMessage(session);

    5,設(shè)置消息from域.

    Message.setForm(new InternetAddress(from));

    6,設(shè)置to域.

    Message.addRecipient(Message.RecipientType.TO,new InternetAddress(to));

    7,設(shè)置消息主題.

    message.setSubject( HelloJavaMail );

    8,設(shè)置消息內(nèi)容.

    Message.setText( Welcome to JavaMail );

    9發(fā)送消息.

    Transport.send(message);

    10,在編譯用運(yùn)的時(shí)候傳遞MSTP服務(wù)器,from地址,to地址.

    ??? 通過(guò)簡(jiǎn)單的接觸了JavaMail相信大家多郵件發(fā)送也有了簡(jiǎn)單的了解和認(rèn)識(shí),下面我主要研究一下它的具體功能,也就是說(shuō)具體的接口或類(lèi)的含義.

    ??? Session類(lèi)定義了一個(gè)基本的郵件會(huì)話,所有的其他類(lèi)都是由這個(gè)session才得意生效的,Session對(duì)象用java.util.Properties對(duì)象獲取信息,如郵件服務(wù)器,用戶(hù)名,密碼及整個(gè)應(yīng)用程序中共享的其他信息.類(lèi)的構(gòu)造器是此有的,private.它能用getDefaultInstance()方法來(lái)共享.獲取Session對(duì)象的方方法如下:

    Properties props = new Properties();

    Session session = Session.getDefaultInstance(props,null);

    Null參數(shù)都是Authenticator對(duì)象,在這里沒(méi)有使用.

    對(duì)于大多數(shù)情況,共享的session已經(jīng)足夠用了.

    ??? Message消息類(lèi),在獲得了Session對(duì)象后,就可以繼續(xù)創(chuàng)建要發(fā)送的消息.因?yàn)镸essage是個(gè)抽象類(lèi),您必須用一個(gè)子類(lèi),多數(shù)情況下為java.mail.internet.MimeMessage.這個(gè)能理解成MIME類(lèi)型和頭的電子郵件消息.正如不同的RFC中定義的,雖然在某些頭部域非ASCII字符也能被編譯,但是Message頭只能被限制用US-ASCII字符.要?jiǎng)?chuàng)建一個(gè)Message請(qǐng)將Session對(duì)象傳遞給MimeMessage的構(gòu)造器.

    MimeMessage message = newMimeMessage(session);

    一旦獲得消息,就可以設(shè)置各個(gè)部分了.最基本的就是setContent()方法,例如/

    message.setContent( Hello , text/plain );

    如果知道在實(shí)用MimeMessage,而且消息是純文本格式,就可以用setText()方法,它只需要代表實(shí)際內(nèi)容的參數(shù).(Mime類(lèi)型缺省為text/plain)

    setSubject()方法設(shè)置subject(主題);

    message.setSubject( 主題 );

    ??? Address地址類(lèi),和Message一樣也是一個(gè)抽象類(lèi),一旦創(chuàng)建了Session和Message并將內(nèi)容填入消息后,就可以用Address確定信件的地址了,用javax.mail.internet.

    InternetAddress類(lèi).若創(chuàng)建的地址只包含電子郵件地址,只要傳遞電子郵件地址給構(gòu)造器就可以了.例如:Address address = new InternetAddress( it5719@163.com );

    若希望名字挨著電子郵件現(xiàn)實(shí),就可以把它傳遞給構(gòu)造器,如下:

    Address address = new InternetAddress( it5719@163.com , 我心依舊 );

    需要為消息的from域和to域創(chuàng)建地址對(duì)象,除非郵件服務(wù)器阻止,沒(méi)有什么能阻止你發(fā)送一段看上去是任何人的消息了呵呵.一旦創(chuàng)建address將他們域消息連接方法有兩種,如要要識(shí)別發(fā)件人的就可以用setFrom()和setReplyTo方法.然后message.setFrom(address);

    需要實(shí)用多個(gè)from地址的就用addFrom()方法.例子如下:

    Address[] address = ,.,. ;??? message.addFrom(address);

    若要識(shí)別消息recipient收件人,就要實(shí)用addRecipient()方法了.例如:

    message.addRecipient(type,address)

    ??? Authenticator與java.net類(lèi)一樣,JavaMailAPI也可以利用Authentcator通過(guò)用戶(hù)名密碼訪問(wèn)受保護(hù)的資源.對(duì)于JavaMail來(lái)說(shuō),這些資源就是郵件服務(wù)器,Authentcator類(lèi)在javax.mail包中.要使用Authenticator,首先創(chuàng)建一個(gè)抽象的子類(lèi),并從

    GetPasswordAuthentication方法中返回passwordAuthentication實(shí)例,創(chuàng)建完成后,您必須向session注冊(cè)Authenticator,然后在需要認(rèn)證的時(shí)候會(huì)通知它,其實(shí)說(shuō)白了就是把配置的用戶(hù)名和密碼返回給調(diào)用它的程序.例如:

    Properties props = new properties();

    Authenticator auth = new MailAuthenticator()//接口聲明,創(chuàng)建自己新類(lèi)的實(shí)例.

    Session session = Session.getDefauItInstance(props,auth);

    ??? Transport消息發(fā)送傳輸類(lèi),這個(gè)類(lèi)用協(xié)議指定的語(yǔ)言發(fā)送消息,通常是SMTP,它是抽象類(lèi),它的工作方式與Session有些類(lèi)似,盡調(diào)用靜態(tài)方法send()方法,就OK了.例如:

    Transport.send(message);

    或者也可以從針對(duì)協(xié)議的會(huì)話中獲取一個(gè)特定的實(shí)例,傳遞用戶(hù)名和密碼.發(fā)送消息,然后關(guān)閉連接,例如:

    message.saveChanges();

    transport transport = session.getTreansport( smtp );//指定的協(xié)議

    transport.connect(host,username,password);

    transport.sendMessage(message,message.getAllRecipients());

    transport.close();

    如果要觀察傳到郵件服務(wù)器上的郵件命令,請(qǐng)用session.setDubug(true)設(shè)置調(diào)試標(biāo)志.

    ??? Store和folder用session獲取消息,與發(fā)送消息開(kāi)始很相似,但是在session得到后,很可能實(shí)用用戶(hù)名和密碼或?qū)嵱肁uthenticator連接到一個(gè)Store.類(lèi)似于Transport,也是一樣要告訴store用什么協(xié)議.例如

    Store store = session.getStore( pop3 );

    Store.connect(host,username,password);

    連接到Store之后,接下來(lái),獲得一個(gè)folder,必須打開(kāi)它就可以讀取里邊的消息了.

    Folder folder = store.getFolder("INBOX");

    folder.open(Folder.READ_ONLY);

    Message[] message = folder.getMessages();

    POP3唯一可用的文件夾就是INBOX,如果實(shí)用IMAP,還可以用其他的文件夾.

    當(dāng)讀到了具體的message以后,就可以用getContent來(lái)獲取內(nèi)容,或者用writeTo()將內(nèi)容寫(xiě)入流,getContent()方法只能得到消息內(nèi)容,而writeTo()的輸出卻包含消息頭.

    System.out.println(((MimeMessage)message).getConntent());

    一旦讀取完畢郵件,要關(guān)閉store和folder的連接.

    folder.colse(boolean);

    store.colse();

    傳遞給folder的close()方法的boolean參數(shù)表示是否清楚已刪除的消息從而更新folder.

    ??? 上面就是JavaMail郵件操作的基本的常用類(lèi),我覺(jué)得理解了這幾個(gè)類(lèi)的機(jī)制,基本就可以處理一般的郵件操作了.下面是一個(gè)我寫(xiě)的JavaMail實(shí)現(xiàn)郵件發(fā)送的代碼.

    首先是一個(gè)Authenticator類(lèi)的實(shí)現(xiàn):記錄用戶(hù)名和密碼:

    import javax.mail.*;

    ?

    ?

    public class MailAuthenticator extends Authenticator

    {

    ??? //******************************

    ??? //由于發(fā)送郵件的地方比較多,

    ??? //下面統(tǒng)一定義用戶(hù)名,口令.

    ??? //******************************

    ??? public static String HUAWEI_MAIL_USER = "it5719@163.com";

    ??? public static String HUAWEI_MAIL_PASSWORD = "密碼";

    ?

    ?

    ??? public MailAuthenticator()

    ??? {

    ??? }

    ?

    ??? protected PasswordAuthentication getPasswordAuthentication()

    ??? {

    ??? ??? return new PasswordAuthentication(HUAWEI_MAIL_USER, HUAWEI_MAIL_PASSWORD);

    ??? }

    ?

    }

    ?

    這個(gè)類(lèi)是發(fā)送郵件的類(lèi).

    ?

    ?

    package com.deepdo.common.mail;

    ?

    /**

    ?* 此處插入類(lèi)型說(shuō)明。

    ?* 創(chuàng)建日期:(2006-4-21 14:57:16)

    ?* @author:張宏亮

    ?*/

    ?

    import java.util.*;

    import java.io.*;

    import javax.mail.*;

    import javax.mail.internet.*;

    import javax.activation.*;

    ?

    ?

    public class SendMail {

    ?

    ??? //要發(fā)送Mail地址

    ??? private String mailTo = null;

    ??? //Mail發(fā)送的起始地址

    ??? private String mailFrom = null;

    ??? //SMTP主機(jī)地址

    ??? private String smtpHost = null;

    ??? //是否采用調(diào)試方式

    ??? private boolean debug = false;

    ?

    ?? ?private String messageBasePath = null;

    ??? //Mail主題

    ??? private String subject;

    ??? //Mail內(nèi)容

    ??? private String msgContent;

    ?

    ??? private Vector attachedFileList;

    ??? private String mailAccount = null;

    ??? private String mailPass = null;

    ??? private String messageContentMimeType ="text/html; charset=gb2312";

    ?

    ??? private String mailbccTo = null;

    ??? private String mailccTo = null;

    ??? /**

    ??? ?* SendMailService 構(gòu)造子注解。

    ??? ?*/

    ??? public SendMail() {

    ??? ??? super();

    ???

    ??? }

    ?

    ??? private void fillMail(Session session,MimeMessage msg) throws IOException, MessagingException{

    ???

    ??? ??? String fileName = null;

    ??? ??? Multipart mPart = new MimeMultipart();

    ??? ??? if (mailFrom != null) {

    ??? ??????? msg.setFrom(new InternetAddress(mailFrom));

    ??? ??????? System.out.println("發(fā)送人Mail地址:"+mailFrom);

    ??? ?? ?} else {

    ??? ??????? System.out.println("沒(méi)有指定發(fā)送人郵件地址!");

    ??? ??????? return;

    ??? ??? }

    ??? ??? if (mailTo != null) {

    ??? ??????? InternetAddress[] address = InternetAddress.parse(mailTo);

    ??? ??????? msg.setRecipients(Message.RecipientType.TO, address);

    ??? ??????? System.out.println("收件人Mail地址:"+mailTo);

    ??? ??? } else {

    ??? ??????? System.out.println("沒(méi)有指定收件人郵件地址!");

    ??? ??????? return;

    ??? ??? }

    ???

    ??? ??? if (mailccTo != null) {

    ??? ??????? InternetAddress[] ccaddress = InternetAddress.parse(mailccTo);

    ??? ??????? System.out.println("CCMail地址:"+mailccTo);

    ??? ??????? msg.setRecipients(Message.RecipientType.CC, ccaddress);

    ??? ??? }

    ??? ??? if (mailbccTo != null) {

    ??? ??????? InternetAddress[] bccaddress = InternetAddress.parse(mailbccTo);

    ??? ??????? System.out.println("BCCMail地址:"+mailbccTo);

    ??? ??????? msg.setRecipients(Message.RecipientType.BCC, bccaddress);

    ??? ??? }

    ??? ??? msg.setSubject(subject);

    ??? ??? InternetAddress[] replyAddress = { new InternetAddress(mailFrom)};

    ??? ??? msg.setReplyTo(replyAddress);

    ??? ??? // create and fill the first message part

    ??? ??? MimeBodyPart mBodyContent = new MimeBodyPart();

    ??? ??? if (msgContent != null)

    ??? ??????? mBodyContent.setContent(msgContent, messageContentMimeType);

    ??? ??? else

    ??? ??????? mBodyContent.setContent("", messageContentMimeType);

    ??? ??? mPart.addBodyPart(mBodyContent);

    ??? ??? // attach the file to the message

    ??? ??? if (attachedFileList != null) {

    ??? ??????? for (Enumeration fileList = attachedFileList.elements(); fileList.hasMoreElements();) {

    ??? ??????????? fileName = (String) fileList.nextElement();

    ??? ??????????? MimeBodyPart mBodyPart = new MimeBodyPart();

    ???

    ??? ??????????? // attach the file to the message

    ??? ??????????? FileDataSource fds = new FileDataSource(messageBasePath + fileName);

    ??? ??????????? System.out.println("Mail發(fā)送的附件為:"+messageBasePath + fileName);

    ??? ??????????? mBodyPart.setDataHandler(new DataHandler(fds));

    ??? ??????????? mBodyPart.setFileName(fileName);

    ??? ??????????? mPart.addBodyPart(mBodyPart);

    ??? ??????? }

    ??? ??? }

    ??? ??? msg.setContent(mPart);

    ??? ??? msg.setSentDate(new Date());

    ??? }

    ??? /**

    ??? ?* 此處插入方法說(shuō)明。

    ??? ?*/

    ??? public void init()

    ??? {

    ???

    ??? }

    ??? /**

    ??? ?* 發(fā)送e_mail,返回類(lèi)型為int

    ??? ?* 當(dāng)返回值為0時(shí),說(shuō)明郵件發(fā)送成功

    ??? ?* 當(dāng)返回值為3時(shí),說(shuō)明郵件發(fā)送失敗

    ??? ?*/

    ??? public int sendMail() throws IOException, MessagingException {

    ???

    ??? ??? int loopCount;

    ??? ??? Properties props = System.getProperties();

    ??? ??? props.put("mail.smtp.host", smtpHost);

    ??? ??? props.put("mail.smtp.auth", "true");

    ???

    ??? ??? MailAuthenticator auth = new MailAuthenticator();

    ???

    ??? ??? Session session = Session.getInstance(props, auth);

    ??? ?? ?session.setDebug(debug);

    ??? ??? MimeMessage msg = new MimeMessage(session);

    ??? ??? Transport trans = null;

    ??? ??? try {

    ???

    ??? ??????? fillMail(session,msg);

    ??? ??????? // send the message

    ??? ??????? trans = session.getTransport("smtp");

    ??? ??????? try {

    ??? ??????????? trans.connect(smtpHost, MailAuthenticator.HUAWEI_MAIL_USER, MailAuthenticator.HUAWEI_MAIL_PASSWORD);//, HUAWEI_MAIL_PASSWORD);

    ??? ??????? } catch (AuthenticationFailedException e) {

    ??????????? ??? e.printStackTrace();

    ??? ??????????? System.out.println("連接郵件服務(wù)器錯(cuò)誤:");

    ??? ????? ??????return 3;

    ??? ??????? } catch (MessagingException e) {

    ??? ??????????? System.out.println("連接郵件服務(wù)器錯(cuò)誤:");

    ??? ??????????? return 3;

    ??? ??????? }

    ???

    ??? ??????? trans.send(msg);

    ??? ??????? trans.close();

    ???

    ??? ??? } catch (MessagingException mex) {

    ??? ??????? System.out.println("發(fā)送郵件失敗:");

    ??? ??????? mex.printStackTrace();

    ??? ??????? Exception ex = null;

    ??? ??????? if ((ex = mex.getNextException()) != null) {

    ??? ??????????? System.out.println(ex.toString());

    ??? ??????????? ex.printStackTrace();

    ??? ??????? }

    ??? ??????? return 3;

    ??? ??? } finally {

    ??? ??????? try {

    ??? ??????????? if (trans != null && trans.isConnected())

    ??? ??????????????? trans.close();

    ??? ??????? } catch (Exception e) {

    ??? ??????? ??? System.out.println(e.toString());

    ??? ??????? }

    ??? ??? }

    ??? ??? System.out.println("發(fā)送郵件成功!");

    ??? ??? return 0;

    ??? }

    ??? public void setAttachedFileList(java.util.Vector filelist)

    ??? {

    ??? ??? attachedFileList = filelist;

    ??? }

    ??? public void setDebug(boolean debugFlag)

    ??? {

    ??? ??? debug=debugFlag;

    ??? }

    ??? public void setMailAccount(String strAccount) {

    ??? ??? mailAccount = strAccount;

    ??? }

    ??? public void setMailbccTo(String bccto) {

    ??? ??? mailbccTo = bccto;

    ??? }

    ??? public void setMailccTo(String ccto) {

    ??? ??? mailccTo = ccto;

    ??? }

    ??? public void setMailFrom(String from)

    ??? {

    ??? ??? mailFrom=from;

    ??? }

    ??? public void setMailPass(String strMailPass) {

    ??? ??? mailPass = strMailPass;

    ??? }

    ??? public void setMailTo(String to)

    ??? {

    ??? ??? mailTo=to;

    ??? }

    ??? public void setMessageBasePath(String basePath)

    ??? {

    ??? ??? messageBasePath=basePath;

    ??? }

    ??? public void setMessageContentMimeType(String mimeType)

    ??? {

    ??? ??? messageContentMimeType = mimeType;

    ??? }

    ??? public void setMsgContent(String content)

    ??? {

    ??? ??? msgContent=content;

    ??? }

    ??? public void setSMTPHost(String host)

    ??? {

    ??? ??? smtpHost=host;

    ??? }

    ??? public void setSubject(String sub)

    ??? {

    ??? ??? subject=sub;

    ??? }

    ???

    ??? public static void main(String[] argv) throws Exception

    ??? {

    ??? ??? for(int i = 0;i<10;i++) {

    ??? ??? SendMail sm = new SendMail();

    ??? ??? sm.setSMTPHost("SMTP地址");

    ??? ??? sm.setMailFrom("發(fā)送地址");

    ??? ??? sm.setMailTo("目標(biāo)地址");

    ??? ??? sm.setMsgContent("內(nèi)容");

    ??? ??? sm.setSubject("標(biāo)題");

    ??? ??? sm.sendMail();

    ??????? }

    ??? }

    }

    posted on 2006-04-24 11:05 我心依舊 閱讀(30057) 評(píng)論(28)  編輯  收藏

    FeedBack:
    # re: JavaMail 深入淺出
    2006-04-24 12:50 | 成長(zhǎng)的心
    總結(jié)得不錯(cuò),我在用JavaMail編程時(shí),只是對(duì)其中一些重要的類(lèi)有點(diǎn)膚淺的認(rèn)識(shí),換句話說(shuō),只知其然(好使就行:-)),而不知其所以然。讀了你的文章,感覺(jué)對(duì)其中的內(nèi)幕有了一定的認(rèn)識(shí),謝謝你!  回復(fù)  更多評(píng)論
      
    # re: JavaMail 深入淺出
    2006-04-24 19:00 | 吳某人-不斷地學(xué)習(xí)
    是不錯(cuò)。。最近也在研究javamail
    ...
      回復(fù)  更多評(píng)論
      
    # re: JavaMail 深入淺出
    2006-08-20 15:28 | xcvxc
    好人啊...........................................  回復(fù)  更多評(píng)論
      
    # re: JavaMail 深入淺出
    2006-10-30 11:04 | han
    用JAVAMAIL做完程序,想打包成JAR,但是出錯(cuò),郁悶,你們碰見(jiàn)過(guò)嗎?  回復(fù)  更多評(píng)論
      
    # re: JavaMail 深入淺出
    2006-11-21 10:00 | wangf
    接收郵件正文出現(xiàn)亂碼怎么解決,諸位有什么好辦法?  回復(fù)  更多評(píng)論
      
    # re: JavaMail 深入淺出
    2006-11-21 10:00 | wangf
    接收郵件正文出現(xiàn)亂碼怎么解決,諸位有什么好辦法?  回復(fù)  更多評(píng)論
      
    # re: JavaMail 深入淺出
    2007-04-18 11:18 | want to know
    如果做郵件服務(wù)器 不是客戶(hù)端怎么辦? 接收郵件該怎么去實(shí)現(xiàn)呢?  回復(fù)  更多評(píng)論
      
    # re: JavaMail 深入淺出
    2007-05-08 13:56 | zdw
    真是不錯(cuò)啊,謝謝大俠!  回復(fù)  更多評(píng)論
      
    # re: JavaMail 深入淺出[未登錄](méi)
    2007-10-25 21:39 | wlh
    非常好的講解,樓主辛苦了,謝謝!  回復(fù)  更多評(píng)論
      
    # re: JavaMail 深入淺出
    2007-11-29 09:57 | /**帥輝祥
    愛(ài)死你了,  回復(fù)  更多評(píng)論
      
    # re: JavaMail 深入淺出
    2007-12-17 07:07 | copdips
    被同學(xué)點(diǎn)名過(guò)來(lái)看 謝謝了 學(xué)了不少  回復(fù)  更多評(píng)論
      
    # re: JavaMail 深入淺出
    2007-12-20 22:12 | javaone
    很好,受益非淺  回復(fù)  更多評(píng)論
      
    # re: JavaMail 深入淺出[未登錄](méi)
    2009-06-19 14:53 | hello java
    學(xué)習(xí)一下。。。。

    http://www.dwww.cn  回復(fù)  更多評(píng)論
      
    # re: JavaMail 深入淺出
    2009-07-20 09:42 | 林賓
    謝謝,你總結(jié)的很不錯(cuò)阿。我最近一在學(xué)習(xí)這個(gè),看了你這個(gè),大致的框架都清楚了阿。  回復(fù)  更多評(píng)論
      
    # re: JavaMail 深入淺出
    2009-08-07 14:44 | mingjian
    @wangf
    不是亂碼,是被加密了的!可以根據(jù)加密方法,進(jìn)行解密的!  回復(fù)  更多評(píng)論
      
    # re: JavaMail 深入淺出
    # re: JavaMail 深入淺出
    # re: JavaMail 深入淺出
    2009-09-11 15:03 | wailintoJava
    我想請(qǐng)教下
    stmpHost應(yīng)該怎么寫(xiě)的  回復(fù)  更多評(píng)論
      
    # re: JavaMail 深入淺出
    2009-12-15 10:34 | 劉德義
    最近也在學(xué)習(xí)Javamail,感覺(jué)樓主總結(jié)的不錯(cuò),謝了啊。  回復(fù)  更多評(píng)論
      
    # re: JavaMail 深入淺出
    2010-07-15 09:14 | mr_mo
    你們放在tomcat中web項(xiàng)目中發(fā)生過(guò)沒(méi)有?為什么我直接用main方法可以發(fā)送,放在web中用action調(diào)用就出問(wèn)題了。java.lang.UnsupportedOperationException: Method not yet implemented
    調(diào)試發(fā)現(xiàn)時(shí)在創(chuàng)建MimeMessage對(duì)象時(shí)出錯(cuò),有沒(méi)有高人幫幫忙啊。
    QQ:595755330  回復(fù)  更多評(píng)論
      
    # re: JavaMail 深入淺出
    2010-10-11 20:44 | luguo
    @wailintoJava
    好!  回復(fù)  更多評(píng)論
      
    # re: JavaMail 深入淺出
    2010-12-20 09:51 | hxy
    寫(xiě)的很詳細(xì),謝謝!  回復(fù)  更多評(píng)論
      
    # re: JavaMail 深入淺出
    2011-03-12 22:08 | tongchuanwei
    很好 不錯(cuò)  回復(fù)  更多評(píng)論
      
    # re: JavaMail 深入淺出
    2011-03-25 13:22 | Amos Tse
    不錯(cuò),學(xué)習(xí)了!  回復(fù)  更多評(píng)論
      
    # re: JavaMail 深入淺出
    2011-08-29 11:57 | 1987lpx
    您好,關(guān)于JAVAMAIL,小弟有一些疑問(wèn),希望您能夠幫助我一下。我的QQ是109345300.您能加我指導(dǎo)一下我嘛?  回復(fù)  更多評(píng)論
      
    # re: JavaMail 深入淺出
    2011-09-13 16:33 | jungle
    javax.mail.AuthenticationFailedException: 535 authentication failed
    這是什么原因?  回復(fù)  更多評(píng)論
      

    只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲一区在线免费观看| yellow视频免费在线观看| 国产99视频精品免费专区| 国产精品深夜福利免费观看 | 91免费福利视频| 暖暖日本免费在线视频 | 成人啪精品视频免费网站| 亚洲av永久无码精品漫画| 黄色一级毛片免费| 歪歪漫画在线观看官网免费阅读 | 亚洲AV无码一区二三区 | 18禁超污无遮挡无码免费网站| 国产男女猛烈无遮挡免费网站| 亚洲成年人免费网站| 免费在线黄色电影| 亚洲日本va午夜中文字幕久久| 亚洲日韩一区二区一无码| 18禁黄网站禁片免费观看不卡| 亚洲人成在线播放网站| 日本激情猛烈在线看免费观看| 免费毛片在线看片免费丝瓜视频| 99亚洲精品高清一二区| 任你躁在线精品免费| 国产AV无码专区亚洲AV漫画 | 久草视频免费在线观看| 久久久久亚洲AV片无码| 两个人看的www视频免费完整版| 夜色阁亚洲一区二区三区| 亚洲AV无码专区亚洲AV桃| 成年在线观看网站免费| 亚洲精品日韩中文字幕久久久| 免费在线中文日本| 在线亚洲人成电影网站色www| 黄色一级视频免费| 亚洲av高清在线观看一区二区 | 久久精品国产亚洲精品| 无遮挡a级毛片免费看| 国产一级特黄高清免费大片| 亚洲日韩精品无码专区| 免费人成视频在线| 亚洲精品无码一区二区|