Java的Email的接收和发送
创建连接Store对象
public class JavaMailUtil {
private JavaMailUtil() {}
public static Store createReceiveSession() {
try {
//主机民
String pop3 = "pop.163.com";
//端口号
String port = "995";
//用户名称
String username = "xxxxx@163.com";
//用户授权码
String token = "xxxxxxx";
//创建一个properties对象
Properties props = new Properties();
// 协议名称
props.setProperty("mail.store.protocol", "pop3");
// POP3主机名
props.setProperty("mail.pop3.host", pop3);
// 端口号
props.setProperty("mail.pop3.port", port);
// 启动SSL:
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.socketFactory.port", port);
//拼接连接Store的URL
URLName url = new URLName("pop3", pop3, 995, "", username, token);
//获取Session会话
Session session = Session.getInstance(props, null);
//显示调试信息
session.setDebug(true);
//创建Store对象
Store store = new POP3SSLStore(session, url);
//连接store
store.connect();
return store;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
/**
* 接受邮件
*/
public void receiveMail() {
try {
//创建store
Store store = JavaMailUtil.createReceiveSession();
//获取收件箱
Folder folder = store.getFolder("INBOX");
//用读写的方式打开
folder.open(Folder.READ_WRITE);
//邮件总数
System.out.println("Total message" + folder.getMessageCount());
//新邮件总数
System.out.println("New message" + folder.getNewMessageCount());
//未读邮件数量
System.out.println("Unread message" + folder.getUnreadMessageCount());
//已删除数量
System.out.println("Deleted message" + folder.getDeletedMessageCount());
//获取每一封邮件
Message[] messages = folder.getMessages();
for (Message message : messages) {
printMessage((MimeMessage) message);
}
folder.close(true);
store.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public void printMessage(MimeMessage msg) throws IOException, MessagingException {
// 邮件主题:
System.out.println("Subject: " + MimeUtility.decodeText(msg.getSubject()));
// 发件人:
Address[] froms = msg.getFrom();
InternetAddress address = (InternetAddress) froms[0];
String personal = address.getPersonal();
String from = personal == null ? address.getAddress() : (MimeUtility.decodeText(personal) + " <" + address.getAddress() + ">");
System.out.println("From: " + from);
System.out.println(msg);
// 继续打印收件人:
String body = getBody(msg);
System.out.println(body);
}
public String getBody(Part part) throws MessagingException, IOException {
if (part.isMimeType("text/*")) {
// Part是文本:
return part.getContent().toString();
}
if (part.isMimeType("multipart/*")) {
// Part是一个Multipart对象:
Multipart multipart = (Multipart) part.getContent();
// 循环解析每个子Part:
for (int i = 0; i < multipart.getCount(); i++) {
BodyPart bodyPart = multipart.getBodyPart(i);
String body = getBody(bodyPart);
if (!body.isEmpty()) {
return body;
}
}
}
return "";
}
本文详细介绍了如何在Java中使用JavaMailUtil类连接163邮箱,包括创建Store对象、设置SSL、接收邮件并处理MimeMessage和Multipart内容。
2979

被折叠的 条评论
为什么被折叠?



