public static voidmain(String args[]) {
Properties props= new Properties(); //參數配置
props.setProperty("mail.transport.protocol", "smtp"); //使用的協議(JavaMail規范要求)
props.setProperty("mail.smtp.host", "smtp.exmail.qq.com"); //發件人的郵箱的SMTP服務器地址
props.setProperty("mail.smtp.auth", "true"); //需要請求認證//PS:某些郵箱服務器要求SMTP連接需要使用SSL安全認證(為了提高安全性,郵箱支持SSL連接,也可以自己開啟),//如果無法連接郵件服務器,仔細查看控制臺打印的 log,如果有有類似"連接失敗,要求 SSL安全連接"等錯誤,//開啟 SSL安全連接//SMTP服務器的端口(非 SSL連接的端口一般默認為 25,可以不添加,如果開啟了SSL連接,//需要改為對應郵箱的SMTP服務器的端口,具體可查看對應郵箱服務的幫助,//QQ郵箱的SMTP(SLL)端口為465或587
final String smtpPort = "465";
props.setProperty("mail.smtp.port", smtpPort);
props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.setProperty("mail.smtp.socketFactory.fallback", "false");
props.setProperty("mail.smtp.socketFactory.port", smtpPort);
Session session=Session.getDefaultInstance(props);
session.setDebug(false);try{
Store store= session.getStore("imap");
store.connect("imap.exmail.qq.com", "it01@tofba.com", "*****");//change the user and password accordingly
Folder folder = store.getFolder("inbox");if (!folder.exists()) {
System.out.println("inbox not found");
System.exit(0);
}
folder.open(Folder.READ_ONLY);
Message[] messages=folder.getMessages();if (messages == null || messages.length <= 0) {
System.out.println("this inbox no messages");
System.exit(0);
}for(Message message : messages) {
String subject=message.getSubject();if(StringUtils.isNotBlank(subject)) {
System.out.println("subject:" +subject);
}/** 解析郵件內容*/Object content=message.getContent();if (null !=content) {if (content instanceofMimeMultipart) {
MimeMultipart multipart=(MimeMultipart)content;
parseMultipart(multipart);
}
}
}
}catch(Exception e) {
e.printStackTrace();
}
}/*** 對復雜郵件的解析
*
*@parammultipart
*@throwsMessagingException
*@throwsIOException*/
public static void parseMultipart(Multipart multipart) throwsMessagingException, IOException {int count =multipart.getCount();for (int idx = 0; idx < count; idx++) {
BodyPart bodyPart=multipart.getBodyPart(idx);
System.out.println(bodyPart.getContentType());if (bodyPart.isMimeType("text/plain")) {
System.out.println(bodyPart.getContent());
}else if (bodyPart.isMimeType("text/html")) {
System.out.println(bodyPart.getContent());
}else if (bodyPart.isMimeType("multipart/*")) {
Multipart mpart=(Multipart)bodyPart.getContent();
parseMultipart(mpart);
}else if (bodyPart.isMimeType("application/octet-stream")) {
String disposition=bodyPart.getDisposition();
System.out.println(disposition);if (StringUtils.isNotBlank(disposition) &&disposition.equalsIgnoreCase(BodyPart.ATTACHMENT)) {
String fileName=bodyPart.getFileName();
InputStream is=bodyPart.getInputStream();
copy(is,new FileOutputStream("D:\\tofba\\email\\" +fileName));
}
}
}
}/*** 文件拷貝,在用戶進行附件下載的時候,可以把附件的InputStream傳給用戶進行下載
*
*@paramis
*@paramos
*@throwsIOException*/
public static voidcopy(InputStream is, OutputStream os)throwsIOException {byte[] bytes = new byte[1024];int len = 0;while ((len = is.read(bytes)) != -1) {
os.write(bytes,0, len);
}if (os != null)
os.close();if (is != null)
is.close();
}