JavaMail接、收邮件
我总算把这个研究出来啦....
不要觉得 代码有点多哈。
我们先来说发送邮箱吧,首先建立一个属性文件*.properties
sys.properties
server=smtp.163.com
## [qq server is:smtp.qq.com OR 163eamil server is:smtp.163.com]
authUser=**.com
authPasswd=**
##
我建立了一个发送邮件的类:
贴上我的所有源码,毫不保留:
package international.doc.javamail;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
/**
* 邮件发送
* @author xiaohua
*
*/
public class SendMailTest { public static Properties getProp() throws IOException{
ClassLoader classLoader=Thread.currentThread().getContextClassLoader();
InputStream inputStr=classLoader.getResourceAsStream("sys.properties");
Properties pro=new Properties();
pro.load(inputStr);
return pro;
} private static String from ="1246447850@qq.com"; //发件人
private static String to="xuxhcn@yahoo.com"; //接收人
public static void main(String args[]) throws IOException, AddressException, MessagingException{
Properties props=getProp();
props.put("mail.smtp.host", "smtp.qq.com");//qq邮箱发送服务器为:smtp.qq.com,如果是163邮箱发送则修改为:smtp.163.com
props.put("mail.smtp.auth", "true");
//获取session会话
Session session = Session.getDefaultInstance(props,null);
Message message=new MimeMessage(session);
message.setFrom(new InternetAddress(from));//发件人
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));//接收人
message.setSubject("Hello JavaMail");//邮件标题
message.setText("Welcome to JavaMail");//邮件内容
session.setDebug(true);//监控邮件发送过程
message.saveChanges(); //发送邮件
Transport transport=session.getTransport();
transport.connect(props.getProperty("server"), props.getProperty("authUser"),props.getProperty("authPasswd"));
transport.sendMessage(message, message.getAllRecipients());
transport.close(); }
}
这样就可以发送邮件了,值得一提的事,如果你使用163邮箱发送,不要使用刚注册的邮箱,这样认证总是过不去,要么链接超时。
接收邮件:
package international.doc.javamail;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.mail.BodyPart;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Store;
/**
* 邮件接收
* @author xiaohua
*
*/
public class ReceiveMailTest {
public static Properties getProp() throws IOException{
ClassLoader classLoader=Thread.currentThread().getContextClassLoader();
InputStream inputStr=classLoader.getResourceAsStream("sys.properties");
Properties pro=new Properties();
pro.load(inputStr);
pro.setProperty("pop3", "mail.store.protocol");
return pro;
} public static void main(String args[]) throws IOException, MessagingException, com.sun.xml.internal.messaging.saaj.packaging.mime.MessagingException{
//Properties props=getProp();
Properties props = new Properties();
props.setProperty("mail.store.protocol", "pop3");
props.setProperty("mail.pop3.host", "pop3.163.com");
Session session=Session.getInstance(props);
// Session session =Session.getDefaultInstance(props,null);
Store store=session.getStore("pop3");
session.setDebug(false);
store.connect("pop3.163.com","**@163.com","**");//store.connect("邮箱服务","用户名163邮箱","163的密码");
Folder folder=store.getFolder("INBOX");
// 接收短信,将会未读和已读短信一起阅读
folder.open(Folder.READ_ONLY);
Message[] message= folder.getMessages();
for(int i=0 ;i<message.length;i++){
//System.out.println("第"+i+"封邮件==发件人:"+message[i].getFrom()[0]+"标题:"+message[i].getSubject());
//得到类型 message[i].getContentType()
if((message[i].getContentType()).indexOf("text/html")!=-1){//纯文本
System.out.println(message[i].getContent());
}else if((message[i].getContentType()).indexOf("text/plain")!=-1){//纯文本
System.out.println(message[i].getContent());
}else{
Multipart multipart=(Multipart)message[i].getContent();
for(int j=0;j<multipart.getCount();j++){
BodyPart bodyPart =multipart.getBodyPart(j);
if((bodyPart.getContentType()).indexOf("text/")!=-1){//纯文本数据
System.out.println(bodyPart.getContent());
}else if((bodyPart.getContentType()).indexOf("multipart/mixed")!=-1){//
Multipart mime=(Multipart)bodyPart.getContent();
System.out.println(mime);
}else{
DataHandler dataHandler=bodyPart.getDataHandler();//图片、声音、二进制
InputStream inputStream=dataHandler.getInputStream();
System.out.println(inputStream);
}
}
}
}
folder.close(false);
store.close();
// int n= Flags.Flag.RECENT;
// folder.open(n);
} }
虽然代码的注释很少,
我是参照:
http://blog.csdn.net/chjttony/article/details/6005594
http://www.360doc.com/content/14/0306/17/16088576_358273704.shtml
值得推荐与学习。
目前现状调试只支持163发送给别的邮箱,也支持qq邮箱发送别的邮箱,在切换使用不同邮箱发送时,需要变换host,因为不用的邮箱使用的服务器也是不同的!
欢迎大家指出我的bug,小弟在此等候。嘎嘎~
另外附上需要用到的jar包:javamail 啊!不支持本地文件上传?纳尼!好吧,大家冲我要~
后期找到了我的demo,当时写的有些乱。
http://pan.baidu.com/s/1jHvgalK
JavaMail接、收邮件的更多相关文章
- 基于JavaMail的Java邮件发送:复杂邮件发送
参考:http://blog.csdn.net/xietansheng/article/details/51722660package com.bfd.ftp.utils;import java.ut ...
- Gmail邮件功能那么强大,GMail被封,在国内怎么用gmail收邮件?
IT圈子里最热门的话题一定是:gmail被封,该怎么办?gmail由于强大的邮件功能,ITer一定是人手一个or多个,之前想要收发gmail使用imap或SMTP方式是可以在国内正常使用的,目前ima ...
- POP3是收邮件的协议,SMTP是发邮件的协议,IMAP是一种邮箱通信协议。
我也是第一次接触这种服务,是因为我自己在做一个小小的自动推送天气情况到自己邮箱.所以才碰到这个的/ 看一下标题,我们可以先这样理解. POP3(Post Office Protocol - Versi ...
- 配置使用dwr完成收邮件提示
DWR(Direct Web Remoting)是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开发人员开发包含AJAX技术的网站.它可以允许在浏览器里的代码使用运行在 ...
- JavaMail学习之一-邮件传输协议
协议:规定好的格式就是协议.就像http协议有请求协议和响应协议,邮件传输也分为发.收邮件的协议. 邮件协议分3种: 发邮件的:SMTP (Simple Mail Transport Protoca ...
- java-基于JavaMail的Java邮件发送
1.基于JavaMail的Java邮件发送:简单邮件发送 2.基于JavaMail的Java邮件发送:复杂邮件发送
- centos 邮件服务 腾讯企业邮箱(免费) 使用iRedmail 需要有公网的centos主机 发邮件协议:smtp 端口25 收邮件协议:pop3 端口110 iredmail安装配置 使用邮箱系统 第三十一节课
centos 邮件服务 腾讯企业邮箱(免费) 使用iRedmail 需要有公网的centos主机 发邮件协议:smtp 端口25 收邮件协议:pop3 端口110 iredmail安装配置 ...
- FOXMAIL提示容量满无法收邮件,清除旧邮件后还是无法收取,请问如何解决?
FOXMAIL提示容量满无法收邮件,清除旧邮件后还是无法收取,请问如何解决? 2009-03-23 11:21包子燕 分类:网站使用 我清除了FOXMAIL所在的磁盘空间,共有12G,也删除了部分旧 ...
- ActiveMQ入门系列之应用:Springboot+ActiveMQ+JavaMail实现异步邮件发送
现在邮件发送功能已经是几乎每个系统或网址必备的功能了,从用户注册的确认到找回密码再到消息提醒,这些功能普遍的会用到邮件发送功能.我们都买过火车票,买完后会有邮件提醒,有时候邮件并不是买完票立马就能收到 ...
- JavaMail(二):利用JavaMail发送复杂邮件
上一篇文章我们学习了利用JavaMail发送简单邮件,这篇文章我们利用JavaMail发送稍微复杂一点的邮件(包含文本.图片.附件).这里只贴出核心代码,其余代码可参考JavaMail(一):利用Ja ...
随机推荐
- BZOJ4538 : [Hnoi2016]网络
求出这棵树的dfs序,对于一条链$u-v$,假设$st[u]\leq st[v]$,那么一条链不经过点$x$当且仅当它满足下面任意一个条件: 1.$st[v]<st[x]$ 2.$st[u]&g ...
- PE-2 & 暴模...
题意: 求不大于4000000的斐波那契数列中,所有偶数之和. SOL: 还是只会暴模...看讨论区貌似有一个很牛逼的大神的发言? 英语水平太差... mark以下 The Fibonacci seq ...
- HDU 3078 (LCA+树链第K大)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3078 题目大意:定点修改.查询树中任意一条树链上,第K大值. 解题思路: 先用离线Tarjan把每个 ...
- 洛谷 P1449 后缀表达式 Label:表达式计算系列
题目描述 所谓后缀表达式是指这样的一个表达式:式中不再引用括号,运算符号放在两个运算对象之后,所有计算按运算符号出现的顺序,严格地由左而右新进行(不用考虑运算符的优先级). 如:3*(5–2)+7对应 ...
- [深入浅出Windows 10]不同平台设备的适配
2.3 不同平台设备的适配 Windows 10通用应用程序针对特定的平台还会有一个子API的集合,当我们要使用到某个平台的特定API的时候(比如手机相机硬件按钮触发事件),这时候就需要调用特定平台的 ...
- 【BZOJ】3105: [cqoi2013]新Nim游戏
http://www.lydsy.com/JudgeOnline/problem.php?id=3105 题意:k堆火柴,先手和后手在第一次拿的时候都能拿若干整堆火柴(但不能拿完),之后和nim游戏规 ...
- NOI模拟赛Day2
深深的感受到了自己的水 ---------------------------------------------------------------------------------------- ...
- SQL 学习笔记
1.判断数据库中某个值是否为null(而不是'null',空字符串'',若干个空格' ') 一定不能用=null 或 !=null,而要用is null 或 is not null. 2.在sqlse ...
- 再说memcache的multiget hole(无底洞)
关键词:multiget hole,memcache 适用于:java,php 基础知识背景: 1)multiget 是什么: multiget 指的是从 memcache(或其他分布式缓存) ...
- Oracle 字符串函数
平常我们用Oracle主要有两种字符串类型1.char始终为固定的长度,如果设置了长度小于char列的值,则Oracle会自动用空格填充的.当比较char时,Oracle用空格将其填充为等长,再进行比 ...