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 ...
随机推荐
- ccc 旋转
cc.Class({ extends: cc.Component, properties: { moveSpeed: 100, rotationSpeed: 90 }, // use this for ...
- BZOJ3551 : [ONTAK2010]Peaks加强版
首先强制在线的话,肯定是不能再离线排序+平衡树启发式合并了. 这回要用的是线段树合并,每次把两棵线段树合并,总复杂度为$O(n\log n)$ 预处理: 把边按权值从小到大排序,依次加边, 对于边(x ...
- gulp下静态资源的合并、压缩、MD5后缀
var gulp = require('gulp'); var RevAll = require('gulp-rev-all'); var uglify = require('gulp-uglify' ...
- ACM 寻找最大数
寻找最大数 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 请在整数 n 中删除m个数字, 使得余下的数字按原次序组成的新数最大, 比如当n=920813467185 ...
- Emoji表情符号录入MySQL数据库报错
版本一: 1,查看tomcat后台日志,核心报错信息如下: Caused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\ ...
- 热烈庆祝华清远见成功自主研发Farsight TV 智能机顶盒
近日,华清远见研发中心再传喜讯:Farsight TV 智能机顶盒研发成功并投入教学!这是华清远见研发中心继开源平板电脑.智能医疗终端.智能家居终端后独立成功研发的又一智能硬件!至此,开创了华清远见自 ...
- Android studio 一个项目中添加两个module遇到的bug
1.在一个Android studio中,我添加了一个模块,然后就是各种bug 找到到R 是在module 名上面 右键 Make Module '模块名' 经过各种google 的时候发现了 htt ...
- Connect模块解析
Connect模块背景 Node.js的愿望是成为一个能构建高速,可伸缩的网络应用的平台,它本身具有基于事件,异步,非阻塞,回调等特性,这在前几篇专栏中有过描述. 正是基于这样的一些特性,Node.j ...
- XAML parser exception
To debug xaml exception: Visual Studio -> Debug -> Exception -> Common Language Runtime Exc ...
- 模拟淘宝使用cookie记录登录名,
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...