- 浏览: 1480112 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (523)
- JAVA (334)
- J2EE (18)
- JSP (21)
- JavaScript (14)
- it life (2)
- mobile develop (4)
- UBUNTU (14)
- Algorithm (14)
- DataBase (56)
- Browser/Server (1)
- linux (6)
- fedora (2)
- CSS (1)
- AjAX (3)
- HTML5 (1)
- EJB (1)
- osworkflow (2)
- Java face (5)
- spring (4)
- ICE (1)
- webService (2)
- MongoDB (1)
- JavaThread (4)
- JavaCollections (3)
- Hibernate (2)
- JavaMail (1)
- JavaBasic (1)
- Cache (1)
- https (4)
- DOM4J (1)
- JDOM (0)
- Mybatis (1)
- JUNIT (1)
- eclipse (1)
- easyMock (2)
最新评论
-
yadongliang:
...
自己认为的一些技术点 -
yadongliang:
每次看你头像都看的荷尔蒙分泌失调
WebService的两种方式SOAP和REST比较 (转) -
yadongliang:
hollo 写道一直有这种感觉,盲目的跟风,确实有一些人为了潮 ...
WebService的两种方式SOAP和REST比较 (转) -
welss:
博主,JNative怎么调用dll中的这种方法: int ...
JNative调用DLL -
Java_Antelope:
session.setAttribute和session.getAttribute(
最近在做邮件提醒系统,无论是pop3还是imap都没有一个好的方法只接收新邮件
我们只能拿到邮件列表后自几判断,大多是通过邮件的UID进行判断
注意UID与MessageID并非一个东西,UID是邮箱用来标识你这个账户的每一封邮件的东西,而MessageID是发送邮件的时候生成的唯一ID,也有可能发送没有你的接收邮箱自己生成,或者是javamail生成的,总是取messageid需要下载邮件的头,这样有联网操作会很慢的,所以我们只需要存储下来uid就好了,记得保存的时候按照邮箱存储,因为不同的邮箱uid会重复的,至于规律最好别去参考有增的就有减的,所以还是安心的遍历吧,反正很快
拷贝我刚写的部分代码作为参考
Store store = session.getStore(type);
store.connect(host, port, email, password);
logger.info(“login email:{} server:”, emailAccountBean.toString(),
serverBean.toString());
Folder folder = store.getFolder(“INBOX”);
folder.open(Folder.READ_ONLY);
try {
if (folder instanceof POP3Folder) {
POP3Folder inbox = (POP3Folder) folder;
Message[] messages = inbox.getMessages();
for (int i = 0; i < messages.length; i++) {
MimeMessage mimeMessage = (MimeMessage) messages[i];
String uid = inbox.getUID(mimeMessage);
if (!emailUidDB.get(userSession.getUserId(), uid)) {
receive(mimeMessage, uid);
}
}
} else if (folder instanceof IMAPFolder) {
IMAPFolder inbox = (IMAPFolder) folder;
Message[] messages = inbox.getMessages();
for (int i = 0; i < messages.length; i++) {
MimeMessage mimeMessage = (MimeMessage) messages[i];
String uid = Long.toString(inbox.getUID(mimeMessage));
if (!emailUidDB.get(userSession.getUserId(), uid)) {
receive(mimeMessage, uid);
}
}
} else {
logger.error(“no have this folder {}”, folder);
}
emailAccountBean.setTime(System.currentTimeMillis());
} finally {
folder.close(false);
store.close();
}
大家注意这个方法
String uid = inbox.getUID(mimeMessage);
要先强制转换
IMAPFolder inbox = (IMAPFolder) folder;
和
POP3Folder inbox = (POP3Folder) folder;
是哪个自己判断就好了,这样取的UID是不需要下载每一封邮件的这样速度很高,即使是几千封邮件也很快完成
千万不要用mimeMessage.getMessageID();这个方法,这个方法会去下载邮件头,是一个很耗时的过程
不推荐验完首封邮件和尾封邮件就跳出循环的方法,因为遇到过新邮件夹在中间的时候
今天的发现 之前都是这么写
final Properties props = new Properties();
if (ssl) {
Security
.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
props.setProperty(“mail.imap.socketFactory.class”, SSL_FACTORY);
props.setProperty(“mail.imap.socketFactory.fallback”, “false”);
props.setProperty(“mail.pop3.socketFactory.class”, SSL_FACTORY);
props.setProperty(“mail.pop3.socketFactory.fallback”, “false”);
}
Session session = Session.getDefaultInstance(props, null);
现在发现这样写不对,其实加密是不需要特殊处理的,只需要把 type换成pop3s和imaps就可以了,还有就是session如果不带有用户和服务器信息,全程序公用一个就可以了
就这样生成一个公用的就可以了
private final Session session = Session.getDefaultInstance(System.getProperties());
而且之前那样写用default拿session每次都拿到同一个新传入的props也会失效的,所以之前犯了大错误 呵呵
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/dongmeng110/archive/2010/01/25/5254042.aspx
我们只能拿到邮件列表后自几判断,大多是通过邮件的UID进行判断
注意UID与MessageID并非一个东西,UID是邮箱用来标识你这个账户的每一封邮件的东西,而MessageID是发送邮件的时候生成的唯一ID,也有可能发送没有你的接收邮箱自己生成,或者是javamail生成的,总是取messageid需要下载邮件的头,这样有联网操作会很慢的,所以我们只需要存储下来uid就好了,记得保存的时候按照邮箱存储,因为不同的邮箱uid会重复的,至于规律最好别去参考有增的就有减的,所以还是安心的遍历吧,反正很快
拷贝我刚写的部分代码作为参考
Store store = session.getStore(type);
store.connect(host, port, email, password);
logger.info(“login email:{} server:”, emailAccountBean.toString(),
serverBean.toString());
Folder folder = store.getFolder(“INBOX”);
folder.open(Folder.READ_ONLY);
try {
if (folder instanceof POP3Folder) {
POP3Folder inbox = (POP3Folder) folder;
Message[] messages = inbox.getMessages();
for (int i = 0; i < messages.length; i++) {
MimeMessage mimeMessage = (MimeMessage) messages[i];
String uid = inbox.getUID(mimeMessage);
if (!emailUidDB.get(userSession.getUserId(), uid)) {
receive(mimeMessage, uid);
}
}
} else if (folder instanceof IMAPFolder) {
IMAPFolder inbox = (IMAPFolder) folder;
Message[] messages = inbox.getMessages();
for (int i = 0; i < messages.length; i++) {
MimeMessage mimeMessage = (MimeMessage) messages[i];
String uid = Long.toString(inbox.getUID(mimeMessage));
if (!emailUidDB.get(userSession.getUserId(), uid)) {
receive(mimeMessage, uid);
}
}
} else {
logger.error(“no have this folder {}”, folder);
}
emailAccountBean.setTime(System.currentTimeMillis());
} finally {
folder.close(false);
store.close();
}
大家注意这个方法
String uid = inbox.getUID(mimeMessage);
要先强制转换
IMAPFolder inbox = (IMAPFolder) folder;
和
POP3Folder inbox = (POP3Folder) folder;
是哪个自己判断就好了,这样取的UID是不需要下载每一封邮件的这样速度很高,即使是几千封邮件也很快完成
千万不要用mimeMessage.getMessageID();这个方法,这个方法会去下载邮件头,是一个很耗时的过程
不推荐验完首封邮件和尾封邮件就跳出循环的方法,因为遇到过新邮件夹在中间的时候
今天的发现 之前都是这么写
final Properties props = new Properties();
if (ssl) {
Security
.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
props.setProperty(“mail.imap.socketFactory.class”, SSL_FACTORY);
props.setProperty(“mail.imap.socketFactory.fallback”, “false”);
props.setProperty(“mail.pop3.socketFactory.class”, SSL_FACTORY);
props.setProperty(“mail.pop3.socketFactory.fallback”, “false”);
}
Session session = Session.getDefaultInstance(props, null);
现在发现这样写不对,其实加密是不需要特殊处理的,只需要把 type换成pop3s和imaps就可以了,还有就是session如果不带有用户和服务器信息,全程序公用一个就可以了
就这样生成一个公用的就可以了
private final Session session = Session.getDefaultInstance(System.getProperties());
而且之前那样写用default拿session每次都拿到同一个新传入的props也会失效的,所以之前犯了大错误 呵呵
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/dongmeng110/archive/2010/01/25/5254042.aspx
发表评论
-
Spring官网改版后下载
2014-04-11 10:39 728Spring官网改版后找了好久都没有找到直接下载Jar包的链接 ... -
Java 系统架构设计
2014-03-31 21:18 1452首先分为网关和引擎等多个部分: 第一部分:网关 1、主要负责转 ... -
Java 提高系统性能
2014-03-03 22:22 2580首先是从三方面来提高的,应用层面,服务器端层面,数据库层面。 ... -
2013年11月份艺龙旅行网面试题
2013-11-22 23:39 12351.给你两个字符串s1="abc",s2= ... -
国猪555555555
2013-11-22 00:16 1018国足第一招:场地太差,不适应。 国足第二招:场地太好,不适应。 ... -
自己认为的一些技术点
2013-08-14 00:12 11681.rest风格的编程。 2.memcached的命中率低的问 ... -
HttpClient
2013-01-14 23:57 1018package org.abin.lee.test.http; ... -
JAVA单例模式读取properties配置文件
2012-12-16 01:12 2632前段时间出差去做一个数据接口的项目,有很多参数需要从工程中的配 ... -
Java 反射调用方法
2012-10-22 23:52 956package lc.abin.lee.reflect; i ... -
Java Https单向,双向验证
2012-09-23 22:47 2973https一般来说有单项SSL和双向SSL连接之分。 单项 ... -
Java中的transient,volatile和strictfp关键字
2012-09-12 18:00 798http://www.iteye.com/topic/5295 ... -
Server JBoss v5.0 at localhost was unable to start within 50 seconds.
2012-09-05 11:35 1853[标题]:[转]JBoss was unable to sta ... -
HttpUrlConnection 开发例子
2012-03-25 16:23 3321/*** * * 发送HTTP请求 * @ ... -
Java Enum类型定义的方法
2012-03-12 12:34 2308//枚举接口 package com.abin.info.s ... -
Rational Rose 2003 下载及破解方法
2012-03-06 12:49 1367FROM:http://blog.csdn.net/fengl ... -
使用Spring进行面向切面(AOP)编程
2012-02-22 10:35 23141.aop理论知识 横切性关注点:对哪些方法拦截,拦截后怎么处 ... -
BASE64、MD5、SHA、HMAC几种加密算法
2012-02-21 12:53 8772BASE64编码算法不算是真正的加密算法。 MD5、 ... -
文本文件和二进制文件区别及java中字节流和字符流归纳
2012-02-17 15:48 2966首先在物理上文本文件和二进制文件并没有区别,都是以二进制01的 ... -
Java 字节流转化为文件
2012-02-17 15:46 5666已知:byte[] bytes=new FileToBytes ... -
Java核心之Java内存分配原理
2012-02-17 13:40 938JAVA内存分配与管理是Java的核心技术之一,之前我们曾介绍 ...
相关推荐
基于javamail的接收邮件示例!!!可以作为参考!!!
javamail发送、接收邮件详细教程
NULL 博文链接:https://zhaoshijie.iteye.com/blog/804788
新邮件功能没实现新邮件功能没实现新邮件功能没实现新邮件功能没实现
很好的邮件处理代码,1.5版本,作为build path放在eclipse里面,就可以用啦! oracle官方推的,很好!jdk1.6版本以上用起来很方便。
javamail smtp imap收发电子邮件,发送附件,联系人管理!
javamail接收邮件例子,我稍微改动了一下,有些错误和异常抛出了
JavaMail邮件收发实例_JavaMail_API JavaMail邮件收发实例_JavaMail_API JavaMail邮件收发实例_JavaMail_API JavaMail邮件收发实例_JavaMail_API JavaMail邮件收发实例_JavaMail_API
它能实现邮件的接收与发送,并能完成附件的传输,具有较好的人机交互性,易于使用。 开发环境:JDK1.6 + Windows平台 开发技术:Javamail 开发工具:Eclipse3.4 运行环境:PC上需安装JDK1.6,且正确配置环境变量。 ...
可以利用JavaMail收发Gmail邮件,ssl;写得比较详细,
javamail 回执邮件资料
资源包括邮件的发送、邮件的接收、查看邮件总数量和未读邮件数以及查看未读邮件并标记已读,还有我自己编写的简单的文档。希望能帮助需要帮助的筒子们
javaMail发送邮件 发送成功 收不到邮件 或收到邮件无主题无收件人乱码 查看debug 邮件处理过程发现邮件头没有编译, 内容是base64编码,所以邮箱收不到或者收到的是base64编码后的一堆乱码,
使用JAVAMail代发邮件 资源源于不但搜索,自由源于不但努力
基于javaMail电子邮件系统的设计(含源文件).pdf基于javaMail电子邮件系统的设计(含源文件).pdf基于javaMail电子邮件系统的设计(含源文件).pdf基于javaMail电子邮件系统的设计(含源文件).pdf基于javaMail电子邮件系统...
具体实现请看这里 http://blog.csdn.net/qw765811529/article/details/50728788
基于JaVaMail的Web邮件客户端的设计与实现
javamail 实例 获取pop3或者imap方式获取邮件信息,配置运行MailHelper即可.
能模拟电子邮件的发送,包括qq、sina(新浪)、163等邮件,使用SMTP协议(smtp.qq.com smtp.sina.com smtp.163.com)
JAVA100例之实例48 使用JavaMail接收邮件