package com.yc.crm.mail.action; import com.sun.mail.imap.IMAPStore; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSenderImpl; import javax.mail.*; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeUtility; import javax.mail.search.FlagTerm; import java.io.IOException; import java.util.HashMap; import java.util.Properties; public class MailDemo { public static void sendEmail(String[] args) { JavaMailSenderImpl mailSender = new JavaMailSenderImpl(); mailSender.setHost("smtp.163.com");//邮箱服务商 mailSender.setProtocol("smtp");//发邮件 mailSender.setUsername("xxxxx@163.com");//账号 mailSender.setPassword("Xxxx");//授权码 mailSender.setDefaultEncoding("utf-8"); SimpleMailMessage message = new SimpleMailMessage(); message.setTo("xxxxx@qq.com"); message.setSubject("测试邮箱"); message.setText("abc"); message.setFrom("xxxxx@163.com");//发件人邮箱 mailSender.send(message); } public static void main(String[] args) throws Exception { ReceiveEmail(); } public static void ReceiveEmail() throws MessagingException, IOException { String imapServer = "imap.qq.com"; String user="xxx@qq.com"; String pwd="xxxx"; HashMap IAM = new HashMap(); //带上IMAP ID信息,由key和value组成,例如name,version,vendor,support-email等。 IAM.put("name","myname"); IAM.put("version","1.0.0"); IAM.put("vendor","myclient"); IAM.put("support-email","testmail@test.com"); //创建会话 Session session = Session.getInstance(new Properties(), new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(user,pwd); } }); //存储对象 IMAPStore store = (IMAPStore) session.getStore("imap"); //连接 store.connect(imapServer,user,pwd); store.id(IAM);//163邮箱需要,不然会报:A3 NO SELECT Unsafe Login. Please contact kefu@188.com for help Folder folder = null; try { // 获得收件箱 folder = store.getFolder("INBOX"); // 以读写模式打开收件箱 folder.open(Folder.READ_WRITE); //false 表示未读 FlagTerm flagTerm = new FlagTerm(new Flags(Flags.Flag.SEEN),true); //获得收件箱的邮件列表 Message[] messages = folder.search(flagTerm); // 打印不同状态的邮件数量 System.out.println("收件箱中共" + messages.length + "封邮件!"); System.out.println("收件箱中共" + folder.getUnreadMessageCount() + "封未读邮件!"); System.out.println("收件箱中共" + folder.getNewMessageCount() + "封新邮件!"); System.out.println("收件箱中共" + folder.getDeletedMessageCount() + "封已删除邮件!"); System.out.println("------------------------开始解析邮件----------------------------------"); for (int i = 0; i < messages.length; i++) { System.out.println("消息:"+messages[i].getSubject()); System.out.println("内容:"+messages[i].getContent()); String from = MimeUtility.decodeText(messages[i].getFrom()[0].toString()); InternetAddress internetAddress = new InternetAddress(from); System.out.println("发件人:" + internetAddress.getPersonal() + '(' + internetAddress.getAddress() + ')'); } } catch (NoSuchProviderException e) { e.printStackTrace(); } catch (MessagingException e) { e.printStackTrace(); } finally { try { if (folder != null) { folder.close(false); } if (store != null) { store.close(); } } catch (MessagingException e) { e.printStackTrace(); } } } }