为啥不用pop3而用imap,是因为imap能把邮件设置为已读,而pop3不能;
使用javamail mail.imap读取邮箱的邮件,综合网上的例子,贴出自己实际使用的代码供大家参考:
步骤: 1、设置被读取邮箱的安全性,允许我们的系统读取邮件,例如:网易邮箱,当读取邮件的时候,网易的邮箱会受到一封标题为“网易邮箱提醒:阻止了一次不安全的收信请求“的邮件
,
第二部:读取邮件和附件,每次读取未读的邮件,读完后,把邮件设为未读,我的这个需求不会考虑人工登录邮箱,读取邮件的情况,如果需要考虑,请略作修改
package com.ch.service.imp;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.util.Properties;
import javax.annotation.Resource;
import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.Flags;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Part;
import javax.mail.Session;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;
import org.springframework.stereotype.Service;
import com.ch.dao.DocInfoMapper;
import com.ch.dao.EmailInfoMapper;
import com.ch.entity.DocInfo;
import com.ch.entity.EmailInfo;
import com.ch.service.MailInfoService;
import com.ch.util.Constant;
import com.ch.util.RmdeskConfig;
import com.ch.util.TypeCastUtil;
import com.sun.mail.imap.IMAPFolder;
import com.sun.mail.imap.IMAPStore;
@Service("mailInfoService")
public class MailInfoServiceImpl implements MailInfoService{
@Resource
private DocInfoMapper infoMapper;
@Resource
private EmailInfoMapper emailInfoMapper;
@Override
public void readMail(){
try {
Properties prop = System.getProperties();
prop.put("mail.store.protocol", RmdeskConfig.mailstoreprotocol);
prop.put("mail.imap.host", RmdeskConfig.mailimaphost);
Session session = Session.getInstance(prop);
IMAPStore store = (IMAPStore) session.getStore(RmdeskConfig.mailstoreprotocol); // 使用imap会话机制,连接服务器
store.connect(RmdeskConfig.euser, RmdeskConfig.epassword);
IMAPFolder folder = (IMAPFolder) store.getFolder("INBOX"); // 收件箱
folder.open(Folder.READ_WRITE);
//获取未读邮件
Message[] messages = folder.getMessages(folder.getMessageCount()-folder.getUnreadMessageCount