sun公司提供的 java mail api能够很好的解决这个问题,下面是具体的思路与代码。
1、发邮件:
主要分为以下四个步骤:
a、创建收发邮件session(创建时可以使用java.util.properties类进行各类参数的写入,并使用Authencator类进行邮箱校验);
b、由session对象创建mimeMessage邮件;
c、由session对象创建邮件发送对象Transport;
d、有发送对象发送邮件并关闭transport;
代码如下:
public class MailInit { /** * 初始化邮件收发Session * @author zhanghao * 20150327 * */ public static Session init(String host,final String username,final String password){ //初始化邮件相关配置信息 Properties properties = new Properties(); properties.setProperty("mail.smtp.auth", "true"); properties.setProperty("mail.smtp.host", host); properties.setProperty("mail.transport.protocol", "smtp"); //校验有关? properties.setProperty("mail.store.protocol", "pop3"); //收邮件 //完成邮箱用户名、密码校验 Authenticator authenticator = new Authenticator() { protected PasswordAuthentication getPasswordAuthentication(){ return new PasswordAuthentication(username, password); } }; //创建收发邮件Session Session session = Session.getInstance(properties, authenticator); return session; } /** * 邮件发送(单人) * */ public void sendSingle(String subject,String contect,String username,String password,InternetAddress address){ String host = MailInit.getHostByUserName(username); Session session =MailInit.init(host, username, password); //创建mime邮件 MimeMessage message = new MimeMessage(session); try { //设置发件人 message.setFrom(new InternetAddress(username)); //设置收件人 message.addRecipient(Message.RecipientType.TO, address); //设置主题 message.setSubject("邮件主题"); //设置内容 message.setContent(contect,"text/html;charset=utf-8"); //发送邮件 Transport.send(message); logger.info("邮件发送成功!!"); } catch (MessagingException e) { String msg = "邮件发送失败!!"; logger.error(msg); throw new RuntimeException(msg); } } /** * 邮件群发 * */ public void sendGroup(String subject,String contect,String username,String password,InternetAddress[] addressGroup){ String host = MailInit.getHostByUserName(username); Session session =MailInit.init(host, username, password); //创建mime邮件 MimeMessage message = new MimeMessage(session); try { //设置发件人 message.setFrom(new InternetAddress(username)); //设置收件人 message.addRecipients(RecipientType.TO, addressGroup); //设置主题 message.setSubject("邮件主题"); //设置内容 message.setContent(contect,"text/html;charset=utf-8"); //发送邮件 Transport.send(message); } catch (MessagingException e) { String msg = "邮件发送失败!!"; logger.error(msg); throw new RuntimeException(msg); } }2、收邮件主要分为以下几个步骤:
a、创建收发邮件session(创建时可以使用java.util.properties类进行各类参数的写入,并使用Authencator类进行邮箱校验);
b、由session对象创建store对象连接邮箱;
c、由store对象创建Folder文件夹(注:此时创建完成之后需要使用open方法打开文件夹);
d、Folder的实例调用getMessage方法 返回Message数组,获取邮件内容。
代码如下:
public void receiveMail(String username,String password){ String host = MailInit.getPop3ByUserName(username); Session session =MailInit.init(host, username, password); //创建store Store store; try { store = session.getStore(); store.connect(host,110,username,password); //连接 完成后打开Folder Folder folder = store.getFolder("INBOX"); //INBOX是POP3唯一可以使用的文件夹。如果使用IMAP,还可以用其它的文件夹。 folder.open(Folder.READ_ONLY); Message[] messages = folder.getMessages(); for (Message message : messages) { System.out.println(message.getSubject()); } logger.info("接收邮件成功!!"); } catch (MessagingException e) { String msg = "接收邮件失败!!"; logger.error(msg); throw new RuntimeException(msg); } }完整代码下载地址:https://github.com/wasapii/JavaMailDemo/