JavaMail API的应用
JavaMail API 是一个用于阅读、编写和发送电子消息的可选包(标准扩展),用来创建邮件用户代理(Mail User Agent,MUA)类型程序。
JavaMail API 需要 JavaBeans Activation Framework 来支持任意数据块的输入及相应处理。
下载后解压.zip 文件,将 mail.jar 文件和 activation.jar 文件复制到 JRE(Java 运行时环境,Java Runtime Environment)目录下的 lib/ext 目录中去。
或者,将 jar 文件添加系统到 CLASSPATH 中。
首先,需要针对各个邮箱的服务器地址等信息进行分别了解
1.网易邮箱的 POP3 与 SMTP 服务器
| 邮箱 | POP3 服务器(端口110) | SMTP 服务器(端口25) |
|
188.com
|
pop3.188.com | smtp.188.com |
|
163.com
|
pop3.163.com | smtp.163.com |
|
126.com
|
pop3.126.com | smtp.126.com |
|
netease.com
|
pop.netease.com | smtp.netease.com |
|
yeah.net
|
pop.yeah.net | smtp.yeah.net |
SMTP 的全称是“Simple Mail Transfer Protocol”,即简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。SMTP 服务器就是遵循 SMTP 协议的发送邮件服务器。
SMTP 认证,简单地说就是要求必须在提供了账户名和密码之后才可以登录 SMTP 服务器,这就使得那些垃圾邮件的散播者无可乘之机。
2.腾讯邮箱的 POP3 与 SMTP 服务器
| 邮箱 | POP3服务器(端口995) | SMTP服务器(端口465或587) |
|---|---|---|
| qq.com | pop.qq.com | smtp.qq.com |
SMTP服务器需要身份验证。所以需要获取授权码。
具体内容:http://service.mail.qq.com/cgi-bin/help?subtype=1&&no=1001256&&id=28
代码演示:
利用JavaMail接收邮件
// JavaMail接收邮件
// 设置邮件服务器、用户名、密码及整个应用程序中共享的其它信息
Properties props = new Properties();
props.put("mail.pop3.host", "pop.163.com");
props.put("mail.pop3.port", "110");
// 用 getInstance() 创建一个独立的 session
Session session = Session.getDefaultInstance(props);
// 连接到一个 Store,获取一个 Folder
Store store = session.getStore("pop3");
store.connect("y**********@163.com", "y*************");
// POP3 唯一可以用的文件夹是 INBOX。如果使用 IMAP,还可以用其它文件夹。
Folder folder = store.getFolder("INBOX");
folder.open(Folder.READ_ONLY);
int size = folder.getMessageCount();
for(int i=1; i<=size; i++) {
Message message = folder.getMessage(i);
String from = message.getFrom()[0].toString();
String subject = message.getSubject();
// 用 getContent() 来获取其内容,或者用 writeTo() 将内容写入流。getContent()方法只能得到消息内容,writeTo() 的输出却包含消息头。
// String content = (String) message.getContent();
Date date = message.getSentDate();
System.out.println("From: " + from);
System.out.println("Subject: " + subject);
// System.out.println("Content: " + content);
System.out.println("Date: " + date);
System.out.println("接收成功!");
}
// 读完邮件,需要关闭与 folder 和 store 的连接。
folder.close(true);
store.close();
利用JavaMail发送邮件
// JavaMail发送邮件
Properties props = System.getProperties();
props.put("mail.smtp.host", "smtp.163.com");
props.put("mail.smtp.port", "25");
props.put("mail.smtp.auth", "true");
Session session = Session.getDefaultInstance(props, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
// 通过用户名和密码访问受保护的资源
return new PasswordAuthentication("y**********@163.com", "y*************");
}
}); MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress("y**********@163.com"));
// Address address = new InternetAddress("xxx@qq.com")确定信件地址
// 需要消息显示多个 from 地址,可以使用 addFrom() 方法:Address address[] = ...;message.addFrom(address);
// 三种预定义的地址类型是:Message.RecipientType.TO、Message.RecipientType.CC、Message.RecipientType.BCC
message.addRecipient(Message.RecipientType.TO, new InternetAddress("3********@qq.com"));
// 设置主题
message.setSubject("JavaMail发送测试");
// message.setContent("Hello", "text/plain")设置内容,参数分别代表内容和 mime 类型。MIME 类型缺省为 text/plain
message.setText("JavaMail发送测试JavaMail发送测试JavaMail发送测试");
// 用协议指定的语言发送消息(通常是 SMTP)
Transport.send(message);
System.out.println("发送邮件成功!");
JavaMail API的应用的更多相关文章
- JavaMail API 详细分解
在使用Spring框架的过程中,它的优势之一就是在于跟其他一些技术的整合,如JavaMail .任务调度.缓存策略等技术.今天就Java Mail详细阐述.JavaMail API是被设计为与协议无关 ...
- javamail模拟邮箱功能发送电子邮件-基础实战篇(javamail API电子邮件实例)
引言: JavaMail 是一种可选的.能用于读取.编写和发送电子消息的包 JavaMail jar包下载地址:http://java.sun.com/products/javamail/downlo ...
- javamail模拟邮箱功能发送电子邮件-中级实战篇【新增附件发送方法】(javamail API电子邮件实例)
引言: JavaMail jar包下载地址:http://java.sun.com/products/javamail/downloads/index.html 此篇是紧随上篇文章而封装出来的,阅读本 ...
- javamail模拟邮箱功能--邮件删除-中级实战篇【邮件标记方法】(javamail API电子邮件实例)
前言: JavaMail jar包下载地址:http://java.sun.com/products/javamail/downloads/index.html 本章可能是讲解javamail的最后一 ...
- JavaMail API 1.4.7邮件发送
下载oracle javaMail API: http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive- ...
- JavaMail API
JavaMail API的核心类:会话.消息.地址.验证程序.传输,存储和文件夹.所有这些类都可以在JavaMail API即javax.mail的顶层包中找到,尽管你将频繁地发现你自己使用的子类是在 ...
- JavaMail API 概述
JavaMail API提供了一种与平台无关和协议独立的框架来构建邮件和消息应用程序. JavaMail API提供了一组抽象类定义构成一个邮件系统的对象.它是阅读,撰写和发送电子信息的可选包(标准扩 ...
- javamail模拟邮箱功能--邮件回复-中级实战篇【邮件回复方法】(javamail API电子邮件实例)
引言: JavaMai下载地址l jar包:http://java.sun.com/products/javamail/downloads/index.html 此篇是紧随上篇文章而封装出来的,阅读本 ...
- javamail模拟邮箱功能获取邮件内容-中级实战篇【内容|附件下载方法】(javamail API电子邮件实例)
引言: JavaMail jar包下载地址:http://java.sun.com/products/javamail/downloads/index.html 此篇是紧随上篇文章而封装出来的,阅读本 ...
随机推荐
- 使用FDTemplateLayout框架打造个性App
效果展示 project下载地址 · 进入构建结构 首先我们新建一个project 接下来我们拖进来一个Table View Controller,将Storyboard Entry Point指向我 ...
- c语言字符数组的初始化问题
1.字符数组的定义与初始化 字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素. char str[10]={ 'I',' ','a','m',' ',‘h’,'a','p','p','y ...
- Linux Sed命令具体解释+怎样替换换行符"\n"(非常多面试问道)
Sed Sed是一个强大的文本处理工具 能够採用正则匹配.对文本进行插入删除改动等操作 Sed处理的时候,一次处理一行,每一次把当前处理的存放在暂时缓冲区.处理完后输出缓冲区内容到屏幕,然后把下一行读 ...
- hdu 2814 Interesting Fibonacci
pid=2814">点击此处就可以传送 hdu 2814 题目大意:就是给你两个函数,一个是F(n) = F(n-1) + F(n-2), F(0) = 0, F(1) = 1; 还有 ...
- hibernate批量更新和删除数据
批量处理 不建议用Hibernate,它的insert效率实在不搞,不过最新版本的Hibernate似乎已经在批量处理的时候做过优化了,设置一些参数如batch_size,不过性能我没有测试过,听说 ...
- 开启Java远程调试
在JDK启动时,加入 -Xrunjdwp:transport=dt_socket,address=9900,server=y,suspend=n -Dcom.sun.management.jmxrem ...
- pooler 连接池中报错" error_no_members"
连接池驱动,pooler 在使用中会报错" error_no_members" 分析:可能有以下3个地方对其有影响: 1)member 可能没回收: 2)wait_for_p ...
- 高速修复汉澳sinox命令解释程序bash shell漏洞
bash是linux默认命令行管理程序shell.汉澳 sinox也安装有,尽管sinox并没有默认使用bash.可是用户一旦使用就会可能被通过漏洞入侵,所以必须高速修复.尽管sinox使用freeb ...
- android Bluetooth-蓝牙
bluetooth 一.开启蓝牙 1.获取BluetoothAdapter BluetoothAdapter.getDefaultAdapter() 2.判断手机设备是否 有蓝牙模块 3.开启蓝牙设备 ...
- Android-自定义广播不能用的可能的原因(sendbroadcast 不起效果)
参考博客:https://blog.csdn.net/chuyouyinghe/article/details/79424373 照着书上的源码将程序原封不动敲了一遍,但发现这特么怎么也收不到发出的广 ...