日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java mail 收 附件_使用 JavaMail 收发邮件,解决中文附件问题

發布時間:2024/3/7 java 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java mail 收 附件_使用 JavaMail 收发邮件,解决中文附件问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

幾天來一直在開發一個項目,其中一部分需要用 JavaMail

收發郵件,于是就在網上找了一些相關的源代碼,最后經過整理和修改,終于好使了,希望能夠給使用 JavaMail 收發郵件的朋友提供一個參考 J

使用 JavaMail 收發郵件只需要下載兩個開源的 jar 文件, mail.jar 和 activation.jar, 這兩個 jar

包可以很容易的在網上找到,這里就不提供下載鏈接了。

下面是發送郵件SendMail.java(含附件)代碼:

Java代碼 ?

//SendMail.java

importjavax.mail.*;

importjavax.mail.internet.*;

importjava.util.*;

importjavax.activation.*;

publicclassSendMail?...{

publicstaticvoidsend(String?customMailBoxAddress,String?username,String?password,String?serverMailBoxAddress,String?subject,String?attachmentPath,String?attachmentName)?...{

//這里面使用新浪作為發送郵件的郵件服務器,其他的smtp服務器可以到相關網站上查到。

String?host?="smtp.sina.com.cn";

//發送方郵箱地址(如BlogJava2006@blog.com.cn.)

String?from?=?customMailBoxAddress;

//收件人郵箱地址

String?to?=?serverMailBoxAddress;

//發送者的郵箱用戶名

String?user?=?username;

//發送者的郵箱密碼

String?ps?=?password;

Properties?props?=newProperties();

//設置發送郵件的郵件服務器的屬性(這里使用新浪的smtp服務器)

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

//需要經過授權,也就是有戶名和密碼的校驗,這樣才能通過驗證(一定要有//這一條)

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

//用剛剛設置好的props對象構建一個session

Session?session?=?Session.getDefaultInstance(props);

//有了這句便可以在發送郵件的過程中在console處顯示過程信息,供調試使

//用(有的時候網絡連通性不夠好,發送郵件可能會有延遲,在這里面會有所//提示,所以最好是加上這句,避免盲目的等待)

session.setDebug(true);

//定義消息對象

MimeMessage?message?=newMimeMessage(session);

try...{

message.setFrom(newInternetAddress(from));

message.addRecipient(Message.RecipientType.TO,newInternetAddress(to));

message.setSubject(subject);

//?向multipart對象中添加郵件的各個部分內容,包括文本內容和附件

Multipart?multipart?=newMimeMultipart();

//設置郵件的文本內容

BodyPart?contentPart?=newMimeBodyPart();

contentPart.setText("郵件的具體內容在此");

multipart.?addBodyPart(contentPart);

//添加附件

BodyPart?attachmentPart=newMimeBodyPart();

DataSource?source?=newFileDataSource(attachmentPath);

attachmentPart.setDataHandler(newDataHandler(source));

//注意:下面定義的enc對象用來處理中文附件名,否則名稱是中文的附//件在郵箱里面顯示的會是亂碼,

sun.misc.BASE64Encoder?enc?=newsun.misc.BASE64Encoder();

messageBodyPart.setFileName("=?GBK?B?"+enc.encode(attachmentName.getBytes())+"?=");

multipart.addBodyPart(messageBodyPart);

//將multipart對象放到message中

message.setContent(multipart);

//發送郵件

message.saveChanges();

Transport?transport?=?session.getTransport("smtp");

transport.connect(host,?username,?password);

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

transport.close();

}catch(Exception?e)...{

e.printStackTrace();

}

}

}//SendMail.java

import javax.mail.*;

import javax.mail.internet.*;

import java.util.*;

import javax.activation.*;

public class SendMail ...{

public static void send(String customMailBoxAddress,String username,String password,String serverMailBoxAddress,String subject,String attachmentPath,String attachmentName) ...{

//這里面使用新浪作為發送郵件的郵件服務器,其他的smtp服務器可以到相關網站上查到。

String host = "smtp.sina.com.cn";

//發送方郵箱地址(如BlogJava2006@blog.com.cn.)

String from = customMailBoxAddress;

//收件人郵箱地址

String to = serverMailBoxAddress;

//發送者的郵箱用戶名

String user = username;

//發送者的郵箱密碼

String ps = password;

Properties props = new Properties();

//設置發送郵件的郵件服務器的屬性(這里使用新浪的smtp服務器)

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

//需要經過授權,也就是有戶名和密碼的校驗,這樣才能通過驗證(一定要有//這一條)

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

//用剛剛設置好的props對象構建一個session

Session session = Session.getDefaultInstance(props);

//有了這句便可以在發送郵件的過程中在console處顯示過程信息,供調試使

//用(有的時候網絡連通性不夠好,發送郵件可能會有延遲,在這里面會有所//提示,所以最好是加上這句,避免盲目的等待)

session.setDebug(true);

//定義消息對象

MimeMessage message = new MimeMessage(session);

try...{

message.setFrom(new InternetAddress(from));

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

message.setSubject(subject);

// 向multipart對象中添加郵件的各個部分內容,包括文本內容和附件

Multipart multipart = new MimeMultipart();

//設置郵件的文本內容

BodyPart contentPart = new MimeBodyPart();

contentPart.setText("郵件的具體內容在此");

multipart. addBodyPart(contentPart);

//添加附件

BodyPart attachmentPart= new MimeBodyPart();

DataSource source = new FileDataSource(attachmentPath);

attachmentPart.setDataHandler(new DataHandler(source));

//注意:下面定義的enc對象用來處理中文附件名,否則名稱是中文的附//件在郵箱里面顯示的會是亂碼,

sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();

messageBodyPart.setFileName("=?GBK?B?"+enc.encode(attachmentName.getBytes())+"?=");

multipart.addBodyPart(messageBodyPart);

//將multipart對象放到message中

message.setContent(multipart);

//發送郵件

message.saveChanges();

Transport transport = session.getTransport("smtp");

transport.connect(host, username, password);

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

transport.close();

}catch(Exception e)...{

e.printStackTrace();

}

}

}

ReceiveMail.java代碼如下:

Java代碼 ?

importjavax.mail.*;

importjava.util.*;

importjava.io.*;

publicclassReceiveMail?...{

//處理任何一種郵件都需要的方法

privatevoidhandle(Message?msg)throwsException?...{

System.out.println("郵件主題:"+?msg.getSubject());

System.out.println("郵件作者:"+?msg.getFrom()[0].toString());

System.out.println("發送日期:"+?msg.getSentDate());

}

//處理文本郵件

privatevoidhandleText(Message?msg)throwsException?...{

this.handle(msg);

System.out.println("郵件內容:"+msg.getContent());

}

//處理Multipart郵件,包括了保存附件的功能

privatestaticvoidhandleMultipart(Message?msg)throwsException?...{

String?disposition;

BodyPart?part;

Multipart?mp?=?(Multipart)?msg.getContent();

//Miltipart的數量,用于除了多個part,比如多個附件

intmpCount?=?mp.getCount();

for(intm?=0;?m?

this.handle(msg);

part?=?mp.getBodyPart(m);

disposition?=?part.getDisposition();

//判斷是否有附件

if(disposition?!=null&&?disposition.equals(Part.ATTACHMENT))

...{

//這個方法負責保存附件

saveAttach(part);

}else...{

//不是附件,就只顯示文本內容

System.out.println(part.getContent());

}

}

}

privatestaticvoidsaveAttach(BodyPart?part)throwsException?...{

//得到未經處理的附件名字

String?temp?=?part.getFileName();

//除去發送郵件時,對中文附件名編碼的頭和尾,得到正確的附件名

//(請參考發送郵件程序SendMail的附件名編碼部分)

String?s?=?temp.substring(8,?temp.indexOf("?="));

//文件名經過了base64編碼,下面是解碼

String?fileName?=?base64Decoder(s);

System.out.println("有附件:"+?fileName);

InputStream?in?=?part.getInputStream();

FileOutputStream?writer?=newFileOutputStream(newFile(

"保存附件的本地路徑"+"\"+fileName));

byte[]?content?=newbyte[255];

intread?=0;

while((read?=?in.read(content))?!=?-1)?...{

writer.write(content);

}

writer.close();

in.close();

}

//base64解碼

privatestaticString?base64Decoder(String?s)throwsException?...{

sun.misc.BASE64Decoder?decoder?=newsun.misc.BASE64Decoder();

byte[]?b?=?decoder.decodeBuffer(s);

return(newString(b));

}

publicstaticvoidreceive(String?receiverMailBoxAddress,?String?username,String?password)?...{

//本人用的是yahoo郵箱,故接受郵件使用yahoo的pop3郵件服務器

String?host?="pop.mail.yahoo.com.cn";

try...{

//連接到郵件服務器并獲得郵件

Properties?prop?=newProperties();

prop.put("mail.pop3.host",?host);

Session?session?=?Session.getDefaultInstance(prop);

Store?store?=?session.getStore("pop3");

store.connect(host,?username,?password);

Folder?inbox?=?store.getDefaultFolder().getFolder("INBOX");

//設置inbox對象屬性為可讀寫,這樣可以控制在讀完郵件后直接刪除該附件

inbox.open(Folder.READ_WRITE);

Message[]?msg?=?inbox.getMessages();

FetchProfile?profile?=newFetchProfile();

profile.add(FetchProfile.Item.ENVELOPE);

inbox.fetch(msg,?profile);

for(inti?=0;?i?

//標記此郵件的flag標志對象的DELETED位為true,可以在讀完郵件后直接刪除該附件,具體執行時間是在調用

//inbox.close()方法的時候

msg[i].setFlag(Flags.Flag.DELETED,true);

handleMultipart(msg[i]);

System.out.println("****************************");

}

if(inbox?!=null)?...{

//參數為true表明閱讀完此郵件后將其刪除,更多的屬性請參考mail.jar的API

inbox.close(true);

}

if(store?!=null)?...{

store.close();

}

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

e.printStackTrace();

}

}

}

總結

以上是生活随笔為你收集整理的java mail 收 附件_使用 JavaMail 收发邮件,解决中文附件问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 成人免费在线视频网站 | 欧美日本精品 | 日韩欧美一区二区三区免费观看 | 神马午夜一区二区 | 精品乱码一区二区三四区视频 | 日韩一级片免费观看 | 99久久精品免费看国产免费软件 | 欧美日韩一卡二卡三卡 | 色婷婷成人 | 啪啪免费视频网站 | 欧美激情视频网 | 新婚之夜玷污岳丰满少妇在线观看 | 成人毛片18女人毛片 | 色呦呦视频 | 国产精品骚 | 亚洲人xxx | 欧美日韩激情一区二区 | 人妻体内射精一区二区 | 久久久久亚洲av无码麻豆 | 女人的天堂网站 | 少妇久久久 | 精品一区二区三区视频日产 | 午夜成年视频 | 激情免费av | 99久久精品一区二区 | 欧美黄色激情视频 | 日韩欧美国产三级 | 少妇精品高潮欲妇又嫩中文字幕 | 波多野结衣视频一区 | 福利在线视频观看 | 久久性感美女视频 | 欧美一级在线视频 | 香港三日本8a三级少妇三级99 | 欧美浪妇xxxx高跟鞋交 | 午夜成人鲁丝片午夜精品 | 成人性做爰aaa片免费 | 中文字幕在线视频一区 | 久久久久久久久久一区二区三区 | 日本免费毛片 | 色接久久| 精品国产一区二区三区噜噜噜 | 亚洲天堂av线 | 免费一级片视频 | 欧美 日韩 国产 在线观看 | 闫嫩的18sex少妇hd | 国产精品视频久久久久久 | 精品一区二区三区视频 | 色婷婷伊人 | 免费午夜视频 | 女性裸体瑜伽无遮挡 | 免费日韩视频 | 国产亚洲精品成人 | 成人av免费观看 | 一区二区三区在线观看av | 欧美三级久久久 | 欧美在线一二三 | 污网站在线免费 | 欧美日韩在线一区二区三区 | 一级黄色在线播放 | 欧美日韩在线二区 | 米奇av | 91视频88av | 欧洲在线观看 | 96久久精品 | 中日韩在线 | 性生活一区 | 国产一级二级在线观看 | 视频在线观看91 | 国产1区在线观看 | av午夜天堂| 亚洲黄在线观看 | www九九热 | 国产一级视频在线观看 | 青娱乐欧美| 人人狠狠综合久久亚洲 | 噼里啪啦动漫高清在线观看 | 欧美日本一区二区 | 精品美女久久 | 黄色国产视频网站 | chinese hd av | 韩国一区二区在线播放 | 最新中文字幕免费 | 神马久久香蕉 | 少妇人妻一级a毛片 | 亚洲第一精品在线观看 | 成人亚洲精品 | 99热精品在线 | 国产日皮视频 | 久久靠逼视频 | 国产精品www | 国产免费av观看 | 亚洲欧美网站 | 久久综合影视 | 欧美老女人视频 | 91社区福利 | 久久国产精品无码网站 | 黄页网站免费在线观看 | 成人永久免费视频 | www.jizzjizz.com|