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 ...
随机推荐
- BZOJ3189 : [Coci2011]Slika
通过离线将操作建树,即可得到最终存在的操作. 然后逆着操作的顺序,倒着进行染色,对于每行维护一个并查集即可. 时间复杂度$O(n(n+m))$. #include<cstdio> cons ...
- 只有火狐识别的css
写在css里写只有火狐可以识别,其他浏览器不行. 就算写在@media only screen and (min-width: 960px) and (max-width: 1200px){ 里面也行 ...
- BZOJ3226[Sdoi2008]校门外的区间 题解
题目大意: 有5种运算维护集合S(S初始为空)并最终输出S. 5种运算如下: U T S∪T I T S∩T D T S-T C T T-S S T S⊕T 基本集合运算如下: A∪B {x : ...
- Android ftp 上传图片
1.确定ftp文件夹 /** FTP文件夹 **/ private String ftpPath = "hshscrenncap" + "/" + DateUt ...
- 没人告诉你关于z-index的一些事
关于z-index的问题是很多程序员都不知道它是如何起作用的.说起来不难,但是大部分人并没有花时间去看规范,这往往会照成严重的后果. 你不信?那就一起来看看下面的问题. 问题 在下面的HTML我们写了 ...
- 【BZOJ】1086: [SCOI2005]王室联邦
http://www.lydsy.com/JudgeOnline/problem.php?id=1086 题意:n个点的树,要求分块,使得每一块的大小在[b, 3b]内且块与某个点形成的块是连通的(某 ...
- iOS 让启动页面延迟的方法
<1> 利用多线程的方法:[NSThread sleepForTimeInterval:300];
- nodejs高大上的部署方式-PM2
1.最常用的属nohup了,其实就是在后台执行进程,末尾加个& [zhoujie@ops-dev ~]$ nohup node /home/zhoujie/ops/app.js & ...
- EF框架中加子类后出现列名 'Discriminator' 无效问题
- CentOS 安装
选择选择启动介质 Install or upgrade an existing system: 安装或升级现有的系统 install system with basic video driver: 安 ...