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();
|
}
|
}
|
|
}
|
}
|