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 ...
随机推荐
- ural 2067. Friends and Berries
2067. Friends and Berries Time limit: 2.0 secondMemory limit: 64 MB There is a group of n children. ...
- hadoop 流streaming跑python程序
先放上命令: hadoop jar /usr/hadoop-/contrib/streaming/hadoop-streaming-.jar -mapper mapper.py -file mappe ...
- Hadoop中客户端和服务器端的方法调用过程
1.Java动态代理实例 Java 动态代理一个简单的demo:(用以对比Hadoop中的动态代理) Hello接口: public interface Hello { void sayHello(S ...
- input type=checkbox checked disabled
input type=checkbox checked disabled 禁用无法提交!
- 【HDU】3506 Monkey Party
http://acm.hdu.edu.cn/showproblem.php?pid=3506 题意:环形石子合并取最小值= =(n<=1000) #include <cstdio> ...
- 【BZOJ】1006: [HNOI2008]神奇的国度
http://www.lydsy.com/JudgeOnline/problem.php?id=1006 题意:在一个弦图中找最少染色数.(n<=10000, m<=1000000) #i ...
- 【noiOJ】p8211 (PS:二分浮点数的精度问题)
05:派 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 我的生日要到了!根据习俗,我需要将一些派分给大家.我有N个不同口味.不同大小的派.有F个朋友会来参加 ...
- linq中join的用法
join方法 public static IEnumerable<TResult> Join<TOuter, TInner, TKey, TResult>( this IEnu ...
- C语言中if语句
C语言if语句后面的表达式 C语言中if关键字之后(即括号内)均为表达式. 该表达式通常是逻辑表达式或关系表达式,但也可以是其它表达式,如赋值表达式等,甚至也可以是一个变量,这些变量的值都换算成了逻辑 ...
- Thymeleaf基本知识
Thymeleaf是个XML/XHTML/HTML5模板引擎,可以用于Web与非Web应用. Thymeleaf的主要目标在于提供一种可被浏览器正确显示的.格式良好的模板创建方式,因此也可以用作静态建 ...