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

歡迎訪問 生活随笔!

生活随笔

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

java

java attachment_Java 接收邮件(接收多附件)

發(fā)布時間:2023/12/16 java 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java attachment_Java 接收邮件(接收多附件) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

//Java接收郵件主程序:

import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.File;

import java.io.FileOutputStream;

import java.io.InputStream;

import java.text.SimpleDateFormat;

import java.util.ArrayList;

import java.util.Date;

import java.util.List;

import java.util.Properties;

import javax.mail.BodyPart;

import javax.mail.Flags;

import javax.mail.Folder;

import javax.mail.Message;

import javax.mail.MessagingException;

import javax.mail.Multipart;

import javax.mail.Part;

import javax.mail.Session;

import javax.mail.Store;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeMessage;

import javax.mail.internet.MimeUtility;

/**

* @author Administrator

*

*/

public class PraseMimeMessage {

private MimeMessage mimeMessage = null;

private String saveAttachPath = "d:\\";// 附件下載后的存放目錄

private StringBuffer bodytext = new StringBuffer();

// 存放郵件內容的StringBuffer對象

private String dateformat = "yy-MM-dd HH:mm";// 默認的日前顯示格式

/**

* 構造函數(shù),初始化一個MimeMessage對象

*/

public PraseMimeMessage() {

}

public PraseMimeMessage(MimeMessage mimeMessage) {

this.mimeMessage = mimeMessage;

//?? ??? ?System.out.println("create a PraseMimeMessage object........");

}

public void setMimeMessage(MimeMessage mimeMessage) {

this.mimeMessage = mimeMessage;

}

/**

*

* 獲取發(fā)件人的姓名和密碼

*

* @return

*/

public String getFrom() throws Exception {

InternetAddress address[] = (InternetAddress[]) mimeMessage.getFrom();

String from = address[0].getAddress();

if (from == null)

from = "";

String personal = address[0].getPersonal();

if (personal == null)

personal = "";

String fromaddr = personal + "";

return fromaddr;

}

/**

* 獲得郵件的收件人,抄送,和密送的地址和姓名,根據(jù)所傳遞的參數(shù)的不同 "to"----收件人 "cc"---抄送人地址 "bcc"---密送人地址

*/

public String getMailAddress(String type) throws Exception {

String mailaddr = "";

String addtype = type.toUpperCase();

InternetAddress[] address = null;

if (addtype.equals("TO") || addtype.equals("CC")

|| addtype.equals("BCC"))

{

if (addtype.equals("TO")) {

address = (InternetAddress[]) mimeMessage

.getRecipients(Message.RecipientType.TO);

} else if (addtype.equals("CC")) {

address = (InternetAddress[]) mimeMessage

.getRecipients(Message.RecipientType.CC);

} else {

address = (InternetAddress[]) mimeMessage

.getRecipients(Message.RecipientType.BCC);

}

if (address != null) {

for (int i = 0; i < address.length; i++) {

String email = address[i].getAddress();

if (email == null)

email = "";

else {

email = MimeUtility.decodeText(email);

}

String personal = address[i].getPersonal();

if (personal == null)

personal = "";

else {

personal = MimeUtility.decodeText(personal);

}

String compositeto = personal + "";

mailaddr += "," + compositeto;

}

mailaddr = mailaddr.substring(1);

}

} else {

throw new Exception("Error emailaddr type!");

}

return mailaddr;

}

/**

*

* 獲取郵件主題

*/

public String getSubject() throws MessagingException {

String subject = "";

try {

subject = MimeUtility.decodeText(mimeMessage.getSubject());

if (subject == null)

subject = "";

} catch (Exception exce) {

}

return subject;

}

/*

* 獲取郵件發(fā)送日期

*

*/

public java.util.Date getSentDate() throws Exception {

Date sentdate = mimeMessage.getSentDate();

SimpleDateFormat format = new SimpleDateFormat(dateformat);

return sentdate;

}

/**

* 獲取郵件正文

*

* @return

*

*/

public String getBodyText() {

return bodytext.toString();

}

/**

* 解析郵件,把得到的郵件內容保存到一個StringBuffer對象中,解析郵件 主要是根據(jù)MimeType類型的不同執(zhí)行不同的操作,一步一步的解析

*

*

*/

public void getMailContent(Part part) throws Exception {

String contenttype = part.getContentType();

int nameindex = contenttype.indexOf("name");

boolean conname = false;

if (nameindex != -1)

conname = true;

//?? ??? ?System.out.println("CONTENTTYPE: " + contenttype);

if (part.isMimeType("text/plain") && !conname) {

bodytext.append((String) part.getContent());

} else if (part.isMimeType("text/html") && !conname) {

bodytext.append((String) part.getContent());

} else if (part.isMimeType("multipart/*")) {

Multipart multipart = (Multipart) part.getContent();

int counts = multipart.getCount();

for (int i = 0; i < counts; i++) {

getMailContent(multipart.getBodyPart(i));

}

} else if (part.isMimeType("message/rfc822")) {

getMailContent((Part) part.getContent());

} else {

}

}

/**

*

* 判斷此郵件是否需要回執(zhí),如果需要回執(zhí)返回"true",否則返回"false"

*

*/

public boolean getReplySign() throws MessagingException {

boolean replysign = false;

String needreply[] = mimeMessage

.getHeader("Disposition-Notification-To");

if (needreply != null) {

replysign = true;

}

return replysign;

}

/*

* 獲得此郵件的Message-ID

*

*/

public String getMessageId() throws MessagingException {

return mimeMessage.getMessageID();

}

/*

* 【判斷此郵件是否已讀,如果未讀返回返回false,反之返回true】

*

*/

public boolean isNew() throws MessagingException {

boolean isnew = false;

Flags flags = ((Message) mimeMessage).getFlags();

Flags.Flag[] flag = flags.getSystemFlags();

//?? ??? ?System.out.println("flags's length: " + flag.length);

for (int i = 0; i < flag.length; i++) {

if (flag[i] == Flags.Flag.SEEN) {

isnew = true;

//?? ??? ??? ??? ?System.out.println("seen Message.......");

break;

}

}

return isnew;

}

/**

*

* 判斷此郵件是否包含附件

*

*/

public boolean isContainAttach(Part part) throws Exception {

boolean attachflag = false;

String contentType = part.getContentType();

if (part.isMimeType("multipart/*")) {

Multipart mp = (Multipart) part.getContent();

for (int i = 0; i < mp.getCount(); i++) {

BodyPart mpart = mp.getBodyPart(i);

String disposition = mpart.getDisposition();

if ((disposition != null)

&& ((disposition.equals(Part.ATTACHMENT)) || (disposition

.equals(Part.INLINE))))

attachflag = true;

else if (mpart.isMimeType("multipart/*")) {

attachflag = isContainAttach((Part) mpart);

} else {

String contype = mpart.getContentType();

if (contype.toLowerCase().indexOf("application") != -1)

attachflag = true;

if (contype.toLowerCase().indexOf("name") != -1)

attachflag = true;

}

}

} else if (part.isMimeType("message/rfc822")) {

attachflag = isContainAttach((Part) part.getContent());

}

return attachflag;

}

//base64解碼

private static String base64Decoder(String s) throws Exception {

sun.misc.BASE64Decoder decoder = new sun.misc.BASE64Decoder();

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

return (new String(b));

}

/*

* 保存附件

*

*/

public String saveAttachMent(Part part) throws Exception {

String fileName = "";

StringBuffer stb=new StringBuffer();

if (part.isMimeType("multipart/*")) {

Multipart mp = (Multipart) part.getContent();

for (int i = 0; i < mp.getCount(); i++) {

BodyPart mpart = mp.getBodyPart(i);

String disposition = mpart.getDisposition();

if ((disposition != null)

&& ((disposition.equals(Part.ATTACHMENT)) || (disposition

.equals(Part.INLINE)))) {

fileName = mpart.getFileName();

/*System.out.println(fileName);

fileName=fileName.substring(fileName.indexOf("=?GBK?B?"));

System.out.println(fileName);

fileName=fileName.substring(0, fileName.length()-2);

System.out.println(fileName);*/

//?? ??? ??? ??? ??? ? .substring(fileName.lastIndexOf("=?GBK?B?"), fileName.indexOf("?="));

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

fileName = base64Decoder(s);

stb.append(fileName);

stb.append(",");

if (fileName.toLowerCase().indexOf("gb2312") != -1) {

fileName = MimeUtility.decodeText(fileName);

stb.append(fileName);

stb.append(",");

}

// saveFile(fileName,mpart.getInputStream());

saveFile(fileName, mpart.getInputStream());

} else if (mpart.isMimeType("multipart/*")) {

saveAttachMent(mpart);

} else {

fileName = mpart.getFileName();

if ((fileName != null)

&& (fileName.toLowerCase().indexOf("GB2312") != -1)) {

fileName = MimeUtility.decodeText(fileName);

stb.append(fileName);

stb.append(",");

saveFile(fileName, mpart.getInputStream());

}

}

}

} else if (part.isMimeType("message/rfc822")) {

saveAttachMent((Part) part.getContent());

}

return stb.toString();

}

/**

* 【設置附件存放路徑】

*/

public void setAttachPath(String attachpath) {

this.saveAttachPath = attachpath;

}

/**

*

* 設置日期顯示本格式

*/

public void setDateFormat(String format) throws Exception {

this.dateformat = format;

}

/**

* 【獲得附件存放路徑】

*/

public String getAttachPath() {

return saveAttachPath;

}

/**

* 【真正的保存附件到指定目錄里】

*/

private void saveFile(String fileName, InputStream in) throws Exception {

String osName = System.getProperty("os.name");

String storedir = getAttachPath();

String separator = "";

if (osName == null)

osName = "";

if (osName.toLowerCase().indexOf("win") != -1) {

separator = "\\";

if (storedir == null || storedir.equals(""))

storedir = "c:\\tmp";

} else {

separator = "/";

storedir = "/tmp";

}

File storefile = new File(storedir + separator + fileName);

//?? ??? ?System.out.println("storefile's path: " + storefile.toString());

BufferedOutputStream bos = null;

BufferedInputStream bis = null;

try {

bos = new BufferedOutputStream(new FileOutputStream(storefile));

bis = new BufferedInputStream(in);

int c;

while ((c = bis.read()) != -1) {

bos.write(c);

bos.flush();

}

} catch (Exception exception) {

exception.printStackTrace();

throw new Exception("文件保存失敗!");

} finally {

bos.close();

bis.close();

}

}

/**

* PraseMimeMessage類測試

*/

public static void main(String args[]) throws Exception {

String host = "POP3.163.com";// 【POP3.163.com】

String username = "liposter";// 【yuxia2217】

String password = "liisposter";// 【........】

Properties props = new Properties();

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

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

store.connect(host, username, password);

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

folder.open(Folder.READ_ONLY);

Message message[] = folder.getMessages();

System.out.println("Messages's length: " + message.length);

PraseMimeMessage pmm = null;

for (int i = 0; i < message.length; i++) {

pmm = new PraseMimeMessage((MimeMessage) message[i]);

System.out

.println("Message " + i + " subject: " + pmm.getSubject());

System.out.println("Message " + i + " sentdate: "

+ pmm.getSentDate());

System.out.println("Message " + i + " replysign: "

+ pmm.getReplySign());

System.out.println("Message 新的" + i + " hasRead: " + pmm.isNew());

System.out.println("Message 附件" + i + "  containAttachment: "

+ pmm.isContainAttach((Part) message[i]));

System.out.println("Message " + i + " form: " + pmm.getFrom());

System.out.println("Message " + i + " to: "

+ pmm.getMailAddress("to"));

System.out.println("Message " + i + " cc: "

+ pmm.getMailAddress("cc"));

System.out.println("Message " + i + " bcc: "

+ pmm.getMailAddress("bcc"));

pmm.setDateFormat("yy年MM月dd日 HH:mm");

System.out.println("Message" + i + " sentdate: "

+ pmm.getSentDate());

System.out.println("Message " + i + " Message-ID: "

+ pmm.getMessageId());

pmm.getMailContent((Part) message[i]);

System.out.println("Message 正文" + i + " bodycontent: \r\n"

+ pmm.getBodyText());

pmm.setAttachPath("D:\\image");

pmm.saveAttachMent((Part) message[i]);

}

}

public List receive(MailInfo mailInfo)throws Exception{

List list=new ArrayList();

Properties props = new Properties();

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

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

store.connect(mailInfo.getHost(), mailInfo.getUsername(), mailInfo.getPassword());

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

folder.open(Folder.READ_ONLY);

Message message[] = folder.getMessages();

//?? ?System.out.println("Messages's length: " + message.length);

PraseMimeMessage pmm = null;

for (int i = 0; i < message.length; i++) {

MailInfo mail=new MailInfo();

mail.setMailnumber(message.length);

pmm = new PraseMimeMessage((MimeMessage) message[i]);

//?? ??? ??? ?System.out

//?? ??? ??? ??? ??? ?.println("Message " + i + " subject: " + pmm.getSubject());

mail.setSubject(message[i].getSubject());

//?? ??? ??? ?System.out.println("Message " + i + " sentdate: "

//?? ??? ??? ??? ??? ?+ pmm.getSentDate());

mail.setSentdate(pmm.getSentDate());

//?? ??? ??? ?System.out.println("Message " + i + " replysign: "

//?? ??? ??? ??? ??? ?+ pmm.getReplySign());

mail.setReplysign(pmm.getReplySign());

//?? ??? ??? ?System.out.println("Message 新的" + i + " hasRead: " + pmm.isNew());

//?? ??? ??? ?mail.setRead(pmm.isNew());

//?? ??? ??? ?System.out.println("Message 附件" + i + "  containAttachment: "

//?? ??? ??? ??? ??? ?+ pmm.isContainAttach((Part) message[i]));

mail.setExistsFile(pmm.isContainAttach((Part) message[i]));

//?? ??? ??? ?System.out.println("Message " + i + " form: " + pmm.getFrom());

mail.setFromAddress(pmm.getFrom().substring(1, pmm.getFrom().length()).replaceAll(">", ""));

//?? ??? ??? ?System.out.println("Message " + i + " to: "

//?? ??? ??? ??? ??? ?+ pmm.getMailAddress("to"));

mail.setToAddress(pmm.getMailAddress("to").substring(1, pmm.getMailAddress("to").length()).replaceAll(">", ""));

//?? ??? ??? ?System.out.println("Message " + i + " cc: "

//?? ??? ??? ??? ??? ?+ pmm.getMailAddress("cc"));

//?? ??? ??? ?mail.setMailauthor(pmm.getMailAddress("cc"));

//?? ??? ??? ?System.out.println("Message " + i + " bcc: "

//?? ??? ??? ??? ??? ?+ pmm.getMailAddress("bcc"));

pmm.setDateFormat("yy年MM月dd日 HH:mm");

//?? ??? ??? ?System.out.println("Message" + i + " sentdate: "

//?? ??? ??? ??? ??? ?+ pmm.getSentDate());

//?? ??? ??? ?System.out.println("Message " + i + " Message-ID: "

//?? ??? ??? ??? ??? ?+ pmm.getMessageId());

mail.setMessageid(pmm.getMessageId());

pmm.getMailContent((Part) message[i]);

//?? ??? ??? ?System.out.println("Message 正文" + i + " bodycontent: \r\n"

//?? ??? ??? ??? ??? ?+ pmm.getBodyText());

mail.setContent(pmm.getBodyText());

pmm.setAttachPath(mailInfo.getFilepath()[0]);

String fileName=pmm.saveAttachMent((Part) message[i]);

String[] file=new String[]{};

file=fileName.split(",");

String[] receivepath=new String[3];

for(int j=0;j

receivepath[j]=mailInfo.getFilepath()[0]+"\\"+file[j];

}

mail.setReceivepath(receivepath);

list.add(mail);

}

return list;

}

}

//實體類

/**

* 發(fā)送郵件的基本信息

* @author dell

*

*/

public class MailInfo implements java.io.Serializable{

private String host;//發(fā)送郵件的主機號

private String port;//發(fā)送郵件的端口號

private String fromAddress;//發(fā)送郵件地址

private String toAddress;//接收郵件地址

private String username;//發(fā)送郵件用戶的用戶名

private String password;//發(fā)送郵件用戶的密碼

private String validate;//是否需要身份的驗證:ture認證,false不認證信息

private String subject;//郵件主題

private String content;//郵件的內容,分為文本,超文本,html等形式

private String[] filepath;//發(fā)送郵件的附件的位置

private String[] sendAddress;//接收郵件地址

private String filename;//發(fā)送郵件的附件顯示的名稱

private String[] receivepath;//接收郵件的時候附件保存的路徑

private java.util.Date sentdate;

private float filesize;

private java.util.Date receivedate;

private String mailauthor;//郵件作者

private boolean read;//是否讀過,true讀過,false沒有閱讀過

private boolean ExistsFile;//是否有附件true有,false沒有

private boolean replysign;//是否有回執(zhí)

private String messageid;//消息ID

private int mailnumber;//郵件數(shù)目,一個用戶的總郵件數(shù)

public String[] getSendAddress() {

return sendAddress;

}

public void setSendAddress(String[] sendAddress) {

this.sendAddress = sendAddress;

}

public int getMailnumber() {

return mailnumber;

}

public void setMailnumber(int mailnumber) {

this.mailnumber = mailnumber;

}

public String getMessageid() {

return messageid;

}

public void setMessageid(String messageid) {

this.messageid = messageid;

}

public boolean isExistsFile() {

return ExistsFile;

}

public boolean isRead() {

return read;

}

public void setExistsFile(boolean existsFile) {

ExistsFile = existsFile;

}

public void setRead(boolean read) {

this.read = read;

}

public boolean isReplysign() {

return replysign;

}

public void setReplysign(boolean replysign) {

this.replysign = replysign;

}

public String getMailauthor() {

return mailauthor;

}

public void setMailauthor(String mailauthor) {

this.mailauthor = mailauthor;

}

public java.util.Date getReceivedate() {

return receivedate;

}

public void setReceivedate(java.util.Date receivedate) {

this.receivedate = receivedate;

}

public java.util.Date getSentdate() {

return sentdate;

}

public void setSentdate(java.util.Date sentdate) {

this.sentdate = sentdate;

}

public String[] getFilepath() {

return filepath;

}

public void setFilepath(String[] filepath) {

this.filepath = filepath;

}

public String getContent() {

return content;

}

public String getFilename() {

return filename;

}

public String getFromAddress() {

return fromAddress;

}

public String getHost() {

return host;

}

public String getPassword() {

return password;

}

public String getPort() {

return port;

}

public String getSubject() {

return subject;

}

public String getToAddress() {

return toAddress;

}

public String getUsername() {

return username;

}

public void setContent(String content) {

this.content = content;

}

public void setFilename(String filename) {

this.filename = filename;

}

public void setFromAddress(String fromAddress) {

this.fromAddress = fromAddress;

}

public void setHost(String host) {

this.host = host;

}

public void setPassword(String password) {

this.password = password;

}

public void setPort(String port) {

this.port = port;

}

public void setSubject(String subject) {

this.subject = subject;

}

public void setToAddress(String toAddress) {

this.toAddress = toAddress;

}

public void setUsername(String username) {

this.username = username;

}

public String getValidate() {

return validate;

}

public void setValidate(String validate) {

this.validate = validate;

}

public String[] getReceivepath() {

return receivepath;

}

public void setReceivepath(String[] receivepath) {

this.receivepath = receivepath;

}

}

//測試代碼:

import java.util.List;

import org.junit.After;

import org.junit.Before;

import org.junit.Test;

public class ReceiveTest{

@Before

public void setUp() throws Exception {

}

@After

public void tearDown() throws Exception {

}

@Test

public void ReceiveMailTest()throws Exception{

MailInfo mailInfo=new MailInfo();

mailInfo.setHost("pop.163.com");

mailInfo.setUsername("liposter");

mailInfo.setPassword("********");

String[] fdess=new String[]{"D:\\image"};

mailInfo.setFilepath(fdess);

List list=new PraseMimeMessage().receive(mailInfo);

for(int i=0;i

System.out.println("Mailnumber="+list.get(i).getMailnumber());

System.out.println("Subject="+list.get(i).getSubject());

System.out.println("Content="+list.get(i).getContent());

System.out.println("Filename="+list.get(i).getFilename());

System.out.println("SentDate="+list.get(i).getSentdate());

System.out.println("Messageid="+list.get(i).getMessageid());

System.out.println("ExistsFile="+list.get(i).isExistsFile());

System.out.println("Read="+list.get(i).isRead());

System.out.println("Replysign="+list.get(i).isReplysign());

for(int j=0;j

System.out.println("第"+j+1+"個附件的Receivepath="+list.get(i).getReceivepath()[j]);

}

System.out.println("FromAddress="+list.get(i).getFromAddress());

System.out.println("ToAddress="+list.get(i).getToAddress());

}

}

}

總結

以上是生活随笔為你收集整理的java attachment_Java 接收邮件(接收多附件)的全部內容,希望文章能夠幫你解決所遇到的問題。

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