利用javamail和POP3、SMPT协议实现邮件的收发(二)

2014-11-24 11:01:10 · 作者: · 浏览: 1
ess
* @return
* @throws AddressException
*/
private static InternetAddress[] getEmailRecipient(ArrayList address) throws AddressException {
int toLen = 0;
if (address != null) {
toLen = address.size();
}
InternetAddress[] addressTo = new InternetAddress[toLen];
if (toLen != 0) {
String m_st_email = "";
for (int i = 0; i < toLen; i++) {
m_st_email = (String) address.get(i);
if (m_st_email != null)
addressTo[i] = new InternetAddress(m_st_email.trim());
}
}
return addressTo;
}
private static Multipart getMultipart(String text, String attachParentDir, ArrayList attachment) throws MessagingException {
// 混合型邮件内容
Multipart multi = new MimeMultipart("mixed");// 混合MIME消息
// 加入文本内容
multi.addBodyPart(createContent(text));
// 加入附件内容
for (int i = 0; i < attachment.size(); i++) {
String attachmentI = (String) attachment.get(i);
// 附件的真是存储名称
String fileRealName = attachmentI.substring(attachmentI.indexOf("<") + 1).trim();
// 附件在邮件中的显示名称
String fileShowName = attachmentI.substring(0, attachmentI.indexOf(">"));
multi.addBodyPart(createAttachment(fileShowName, new File(attachParentDir + fileRealName)));// 嵌入附件
}
return multi;
}
/**
* 邮件附件的处理
*
* @param fileName
* 附件显示名称
* @param file
* 文件
* @return javax.mail.BodyPart(javaMail的邮件内容)
* @throws MessagingException
*/
private static BodyPart createAttachment(String fileName, File file) throws MessagingException {
BodyPart attach = new MimeBodyPart();
DataSource ds = new FileDataSource(file);
attach.setDataHandler(new DataHandler(ds));
try {
// 文件名重新编码,解决乱码问题
attach.setFileName(new String(fileName.getBytes(), "ISO8859-1"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return attach;
}
/**
* 邮件文本内容的处理
*
* @param text
* 文本内容
* @return javax.mail.BodyPart(javaMail的邮件内容)
* @throws MessagingException
*/
private static BodyPart createContent(String text) throws MessagingException {
BodyPart content = new MimeBodyPart();
// 邮件正文也是一种组合消息,可以包含多个MimeBodyPart
Multipart relate = new MimeMultipart("related");
BodyPart html = new MimeBodyPart();
html.setContent(text, "text/html;charset=gbk");
relate.addBodyPart(html);
content.setContent(relate);
return content;
}
}
邮件内容结构图:
三、POP3协议接受邮件
package com.like.email;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Flags;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Store;
import com.sun.mail.pop3.POP3Folder;
/**
* POP3协议虽然相较IMAP协议有明显劣势,但仍然使用广泛,而且并不是所有的邮件服务器都支持IMAP协议。
* @author like
* @E-mail kelee1987@hotmail.com
* @CreateTime 2012-10-26 下午4:25:23
*/
public class OP3Test {
public static void receive(String server, int port, String username, Str