1、而这个功能是微软的Outlook内建的,那么就说明微软Outlook之类的邮件客户端软件是通过查询最近收到的邮件来计算新邮件的数量来实现前面所说的功能。因此在我们使用JavaMail API时需要注意,当需要获得如前面所讲的新邮件数量之类的信息时,我们不得不自己进行计算。IMAP IMAP,即Internet Message Access Protocol(互联网邮件访问协议),您可以通过这种协议从邮件服务器上获取邮件的信息、下载邮件等。IMAP与POP类似,都是一种邮件获取协议。POP和IMAP有什么区别?POP允许电子邮件客户端下载服务器上的邮件,但是您在电子邮件客户端的操作(如:移动邮件
2、、标记已读等),这是不会反馈到服务器上的,比如:您通过电子邮件客户端收取了QQ邮箱中的3封邮件并移动到了其他文件夹,这些移动动作是不会反馈到服务器上的,也就是说,QQ邮箱服务器上的这些邮件是没有同时被移动的 。但是IMAP就不同了,电子邮件客户端的操作都会反馈到服务器上,您对邮件进行的操作(如:移动邮件、标记已读等),服务器上的邮件也会做相应的动作。也就是说,IMAP是“双向”的。同时,IMAP可以只下载邮件的主题,只有当您真正需要的时候,才会下载邮件的所有内容。附:源代码/* * Created on 2013 Feb 4, 2013 11:25:49 AM */package zq.ema
3、il;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import .MalformedURLException;import .URL;import java.util.ArrayList;import java.util.List;import java.util.Properties;import javax.mail.BodyPart;import javax.mail.Flags;import javax.mail.Fol
4、der;import javax.mail.Message;import javax.mail.MessagingException;import javax.mail.Multipart;import javax.mail.Session;import javax.mail.Store;import javax.mail.Transport;import javax.mail.internet.AddressException;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeBodyPart;
5、import javax.mail.internet.MimeMessage;import javax.mail.internet.MimeMultipart;import javax.mail.internet.MimeUtility;import javax.mail.search.OrTerm;import javax.mail.search.SearchTerm;import javax.mail.search.SubjectTerm;import mons.mail.DefaultAuthenticator;import mons.mail.Email;import mons.mai
6、l.EmailAttachment;import mons.mail.EmailException;import mons.mail.MultiPartEmail;import mons.mail.SimpleEmail;import mon.util.LoggerUtils;import mon.email.EmailUtils;import mon.json.JSONUtils;import mon.properties.PropertiesUtils; * Title: 邮件工具类 * * Description: * 调用方法: * 实例化 EmailUtil emailUtil =
7、new EmailUtil(); * 发送简单邮件 emailUtil.sendSimpleEmail(zq, 发送简单邮件,发送简单邮件测试); * Copyright: Copyright (c) 2012p * Company:通易科技有限公司 * 2013 Feb 4, 2013 11:49 AM * * author zq * version 1.0public class EmailUtil /* * 属性配置文件名称 */ private static final String EMAIL_CONFIGURATION_FILE = email.properties; * 服务器名
8、称配置key private static final String EMAIL_HOST_KEY = email.host private static String emailHost; private static final String EMAIL_POP3_KEY = email.pop3 private static String emailPop3; private static final String EMAIL_IMAP_KEY = email.imap private static String emailImap; * 用户名配置key private static
9、final String EMAIL_USERNAME_KEY = email.username private static String emailUsername; * 密码配置key private static final String EMAIL_PASSWORD_KEY = email.password private static String emailPassowrd; * 配置charset private static final String EMAIL_CHARSET_KEY = email.charset private static String emailCh
10、arset; * 发件人配置key private static final String EMAIL_FROM_KEY = email.from private static String emailFrom = * 是否删除邮件 private static boolean IS_DELETE = false; / 简单邮件 private Email email; / 带附件的邮件 private MultiPartEmail mpEmail; private String bakMail; / 备份文件夹路径 private static final String EMAIL_FILE
11、_BAK = c:TEMP / html邮件 htmlemail public EmailUtil() throws Exception super(); init(); * 工具类实例化,配置的邮件信息 * * author Feb 4, 2013 11:34:02 AM ZQ * throws Exception private void init() throws Exception emailHost = PropertiesUtils.getParameter(EMAIL_CONFIGURATION_FILE, EMAIL_HOST_KEY); emailPop3 = Propert
12、iesUtils.getParameter(EMAIL_CONFIGURATION_FILE, EMAIL_POP3_KEY); emailImap = PropertiesUtils.getParameter(EMAIL_CONFIGURATION_FILE, EMAIL_IMAP_KEY); emailFrom = PropertiesUtils.getParameter(EMAIL_CONFIGURATION_FILE, EMAIL_FROM_KEY); emailCharset = PropertiesUtils.getParameter(EMAIL_CONFIGURATION_FIL
13、E, EMAIL_CHARSET_KEY); emailUsername = PropertiesUtils.getParameter(EMAIL_CONFIGURATION_FILE, EMAIL_USERNAME_KEY); emailPassowrd = PropertiesUtils.getParameter(EMAIL_CONFIGURATION_FILE, EMAIL_PASSWORD_KEY); * 发送单个邮件 * author Feb 4, 2013 2:12:10 PM ZQ * param to * 接收人 * param subject * 邮件标题 * param m
14、sg * 邮件信息 * throws EmailException * throws AddressException public void sendSimpleEmail(String to, String subject, String msg) throws EmailException, AddressException createSimpleEmail(null, null); email.setSubject(subject); email.setMsg(msg); email.addTo(to); email.send(); * 发送邮件带附件 * author Feb 4,
15、 2013 4:13:18 PM ZQ * param attachments * 附件集合 附件集合 List 为网络文件;List 为本地文件 * throws MalformedURLException * throws EmailException public void sendEmailAttachment(String to, String subject, String msg, List attachments) throws MalformedURLException, EmailException createEmailAttachment(null, null, att
16、achments); mpEmail.setSubject(subject); mpEmail.setMsg(msg); mpEmail.addTo(to); mpEmail.send(); * 通过pop3协议读取邮件 * author Feb 4, 2013 5:48:15 PM ZQ * throws MalformedURLException * throws MessagingException public void getPop3Email() throws MalformedURLException, EmailException, MessagingException Fol
17、der folder = null; Store store = null; try / 设置java mail属性 Properties props = System.getProperties(); / Setup mail server props.put(mail.smtp.host, emailHost);/ 设置SMTP发件服务器地址mail.smtp.authtrue/ 邮件服务器是否要验证 / Get session Session session = Session.getDefaultInstance(props);/ 获取邮件会话 session.setDebug(fal
18、se); / Define message store = session.getStore(pop3 store.connect(emailPop3, emailUsername, emailPassowrd); folder = store.getFolder(INBOX folder.open(Folder.READ_WRITE); / Message messages = folder.getMessages(); Message messages = searchMessage(folder); getAttachment(session, messages); catch (Exc
19、eption e) LoggerUtils.error(EmailUtils.class, 取邮件出错:, e); finally if (folder != null) folder.close(true); if (store ! store.close(); * 只取指定格式标题的邮件 * 通过邮件标题查找邮件 * author Feb 4, 2013 6:31:45 PM ZQ * param folder * return private Message searchMessage(Folder folder) throws MessagingException / 邮件以CC#开关
20、 SubjectTerm sbujectTerm = new SubjectTerm( SearchTerm st = new OrTerm(sbujectTerm, sbujectTerm); return folder.search(st); * 解析附件05: * param session * param messages * throws IOException private void getAttachment(Session session, Message messages) throws MessagingException, IOException, Exception
21、Object content = null; String subject = null; for (Message message : messages) / 解析邮件内容 / 标题 subject = message.getSubject(); LoggerUtils.developer(EmailUtils.class, 读取邮件: + subject); / 转发邮箱 forwardMail(session, message); / 集装箱报送 content = message.getContent(); if (content instanceof MimeMultipart) /
22、 有附件 MimeMultipart multipart = (MimeMultipart) content; parseMultipart(message, multipart); / 删除邮件 message.setFlag(Flags.Flag.DELETED, IS_DELETE); * 对复杂邮件的解析,读取附件 这里是excel56:36 PM ZQ * param message * param multipart * 邮件消息体 * throws Exception private void parseMultipart(Message message, Multipart m
23、ultipart) throws Exception int count = multipart.getCount(); / System.out.println(couont = + count); for (int idx = 0; idx count; idx+) BodyPart bodyPart = multipart.getBodyPart(idx); / System.out.println(bodyPart.getContentType(); LoggerUtils.developer(EmailUtils.class, JSONUtils .object2JSON(bodyP
24、art); if (bodyPart.isMimeType(text/plain) / System.out.println(plain. / + bodyPart.getContent(); else if (bodyPart.isMimeType(text/htmlhtml.multipart/* Multipart mpart = (Multipart) bodyPart.getContent(); parseMultipart(message, mpart);application/vnd.ms-excel) | bodyPart.isMimeType(application/octet-stream / application/vnd.openxmlforma
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1