JavaMail简单收发邮件
首先准备 javax.mail.jar,将jar包导入java工程,开始编写代码
邮件参数类,定义好邮件需要的一些参数字段
/**
* @Title: MailParam.java
* @desc: 邮件参数bean
* @author mengchuan.li
*/
public class MailParam {
private int port;// 端口
private String host;// 服务器
private String user;// 登录名
private String password;// 密码
private String from;// 发送邮箱
private String to;// 接受邮箱
private boolean isSSL;// SSL加密
private String agreement;// 协议类型
private String contant;//正文
private String subject;//标题
/****get set****/
..............
}
邮件发送
/**
*
* @Title: sendMessage
* @Desc: 发送邮件 stmp
* @param mail
*/
public void sendMessage(MailParam mail) {
System.out.println("开始发送邮件");
Properties props = new Properties();
props.put("mail.transport.protocol", mail.getAgreement());
props.put("mail.smtp.host", mail.getHost());
props.put("mail.smtp.port", mail.getPort());
//邮件服务器ssl加密
// if (mail.isSSL()) {
// props.put("mail.smtp.starttls.enable", "true");
// MailSSLSocketFactory sf = null;
// try {
// sf = new MailSSLSocketFactory();
// } catch (Exception e) {
// e.printStackTrace();
// }
// sf.setTrustAllHosts(true);//跳过证书认证
// props.put("mail.smtp.ssl.enable", "true");
// props.put("mail.smtp.ssl.socketFactory", sf);
// }
Session mailSession = Session.getInstance(props);
Message msg = new MimeMessage(mailSession);
Transport transport = null;
try {
msg.setSubject(mail.getSubject());
msg.setFrom(new InternetAddress(mail.getFrom()));
msg.setContent(mail.getContant(), "text/html;charset=UTF-8");
InternetAddress to = new InternetAddress(mail.getTo());
msg.setRecipient(RecipientType.TO, to);
transport = mailSession.getTransport();
transport.connect(mail.getUser(), mail.getPassword());
transport.sendMessage(msg, msg.getAllRecipients());
} catch (Exception e) {
System.out.println("邮件发送失败" + " subject:" + mail.getSubject());
e.printStackTrace();
} finally {
try {
transport.close();
} catch (MessagingException e) {
e.printStackTrace();
}
}
System.out.println("邮件发送成功");
}
邮件接收,和邮件发送类似
/**
*
* @Title: receiveMessage
* @Desc: 接收邮件 pop3
* @param mail
*/
public void receiveMessage(MailParam mail) {
Properties props = new Properties();
props.put("mail.transport.protocol", mail.getAgreement());
props.put("mail.pop3.host", mail.getHost());
props.put("mail.pop3.port", mail.getPort());
// if (mail.isSSL()) {
// props.put("mail.pop3.starttls.enable", "true");
// MailSSLSocketFactory sf = null;
// try {
// sf = new MailSSLSocketFactory();
// } catch (Exception e) {
// e.printStackTrace();
// }
// sf.setTrustAllHosts(true);
// props.put("mail.pop3.ssl.enable", "true");
// props.put("mail.pop3.ssl.socketFactory", sf);
//
// }
Session session = Session.getDefaultInstance(props);
Folder folder = null;
Store store = null;
try {
store = session.getStore(mail.getAgreement());
store.connect(mail.getUser(), mail.getPassword());
folder = store.getFolder("INBOX");
folder.open(Folder.READ_ONLY);
Message[] msgs = folder.getMessages();
//遍历邮件,简单打印邮件信息
for (Message msg : msgs) {
System.out.println("***************************************");
System.out.println("from: " + msg.getFrom()[0]);
System.out.println("sub: " + msg.getSubject());
System.out.println("content:" + msg.getContent().toString());
System.out.println("***************************************");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
folder.close(false);
store.close();
} catch (MessagingException e) {
e.printStackTrace();
}
}
}