java web 邮件_Java Web(十二) JavaMail发送邮件
发送邮件的原理
概叙
邮件服务器:
要在 Internet 上提供电子邮件功能,必须有专门的电子邮件服务器。例如现在 Internet 很多 提供邮件服务的厂商:sina、sohu、163 等等他们都有自己的邮件服务器。
这些服务器类似于现实生活中的邮局,它主要负责接收用户投递过来的邮件,并把邮件投 递到邮件接收者的电子邮箱中。
邮件服务器,按照提供的服务类型,可以分为发送邮件的服务器和接收邮件的服务器。
电子邮箱:
电子邮箱(E-mail 地址)的获得需要在邮件服务器上进行申请,确切地说,电子邮箱其实就是用户在邮件服务器上申请的一个帐户。用户在邮件服务器上申请了一个帐号后,邮件服务器就会为这个帐号分配一定的空间,用户从而可以使用这个帐号以及空间,发送和接收电子邮件。
邮件协议
SMTP 协议-发邮件协议
全称为 Simple Mail Transfer Protocol(简单邮件传输协议),它定义了邮件客户端软件与 SMTP 服务器之间、以及两台 SMTP 服务器之间的通讯规则。
端口号:25。
POP3 协议-收邮件协议
全称为 Post Office Protocol(邮局协议),它定义了邮件客户端软件与 POP3 服务器的通讯规则。
端口号:110。
发送邮件流程
JavaMail
JavaMail是提供给开发者处理电子邮件相关的编程接口。它是Sun发布的用来处理email的API。它可以方便地执行一些常用的邮件传输。
使用JavaMail需要导入两个jar包,mail.jar、activation.jar。
使用qq邮箱发送邮件
使用qq邮箱发送邮件必须联网,否则无效。
package com.kindleheart.store.utils;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.Message.RecipientType;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class MailTest {
public static void main(String[] args) throws MessagingException {
//服务器的设置
Properties props = new Properties();
props.setProperty("mail.host", "smtp.qq.com");//设置服务器地址
props.setProperty("mail.smtp.auth", "true");//验证
//邮箱帐号密码
Authenticator authenticator = new Authenticator() {
@Override
public PasswordAuthentication getPasswordAuthentication() {
//必须使用授权码,而不是密码,去qq邮箱申请
return new PasswordAuthentication("873268974@qq.com","授权码");
}
};
//1、与服务器建立连接:Session
Session session = Session.getDefaultInstance(props, authenticator);
//2、编写邮件:Message
Message message = new MimeMessage(session);
//2.1、发件人
message.setFrom(new InternetAddress("873268974@qq.com"));
//2.2、收件人 , to:收件人、cc :抄送、bcc:暗送(密送)。
message.setRecipient(RecipientType.TO, new InternetAddress("kindleheart@qq.com"));
//2.3、主题
message.setSubject("测试");
//2.4、正文
String str = "哈哈,我发送了";
message.setContent(str, "text/html;charset=UTF-8");
//3、发送
Transport.send(message);
}
}
使用本地邮箱服务器和客户端发送邮件
在没有联网的情况下可以使用该方法在自己的电脑上发送和接收邮件,可以用于测试项目。
搭载本地环境
安装邮件服务器(易邮邮件服务器)
双击安装包,进行配置
设置域名
新建账户,新建aaa和bbb两个账户,用于发送和接收邮件
安装foxmail邮箱
双击安装包,进行配置
我们刚刚在MailServer中创建了aaa,bbb两个账户,现在在foxmail邮箱中登入这两个账户
指定本地的邮件服务器
使用JavaMail在本地发送接受邮件
package com.kindleheart.store.utils;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.Message.RecipientType;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class MailTest {
public static void main(String[] args) throws MessagingException {
//服务器的设置
Properties props = new Properties();
props.setProperty("mail.host", "localhost");//设置服务器地址
props.setProperty("mail.smtp.auth", "true");//权限验证
//邮箱帐号密码
Authenticator authenticator = new Authenticator() {
@Override
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("aaa@store.com","123");
}
};
//1、与服务器建立连接:Session
Session session = Session.getDefaultInstance(props, authenticator);
//2、编写邮件:Message
Message message = new MimeMessage(session);
//2.1、发件人
message.setFrom(new InternetAddress("aaa@store.com"));
//2.2、收件人 , to:收件人、cc :抄送、bcc:暗送(密送)。
message.setRecipient(RecipientType.TO, new InternetAddress("bbb@store.com"));
//2.3、主题
message.setSubject("测试");
//2.4、正文
String str = "哈哈,我发送了";
message.setContent(str, "text/html;charset=UTF-8");
//3、发送
Transport.send(message);
}
}
在foxmail邮箱中查看是否发送成功
java web 邮件_Java Web(十二) JavaMail发送邮件相关推荐
- java 包权限_Java基础(十二)之包和权限访问
软件包 软件包解决了两个类名字一样的问题.软件包就是一个"文件夹". 包名的命名规范: 1.要求所有字母都小写: 2.包名一般情况下,是你的域名倒过来写.比如baidu.com,p ...
- java 操作窗口_java selenium (十二) 操作弹出窗口
public static void testMultipleWindowsTitle(WebDriver driver) throws Exception { String url="E: ...
- Kali Linux Web 渗透测试— 第十二课-websploit
Kali Linux Web 渗透测试- 第十二课-websploit 文/玄魂 目录 Kali Linux Web 渗透测试- 第十二课-websploit..................... ...
- Java NIO系列教程(十二) Java NIO与IO
原文地址:http://tutorials.jenkov.com/java-nio/nio-vs-io.html 作者:Jakob Jenkov 译者:郭蕾 校对:方腾飞 当学习了Java ...
- 【零基础学Java】—Java 日期时间(三十二)
[零基础学Java]-Java 日期时间(三十二) DateFormat 是日期/时间格式化子类的抽象类,它以语言无关的方式格式化和分析日期或时间. 日期/时间格式化子类(如SimpleDateFor ...
- Java程序设计 图形用户界面 【十二】下拉列表JComboBox
Java程序设计 图形用户界面 [十二]下拉列表JComboBox 下拉列表JComboBox JList是以列表框的形式进行显示的 有列表又可以自己输入数据这种组件就称为下拉列表框 JComboBo ...
- Web Hacking 101 中文版 十二、开放重定向漏洞
十二.开放重定向漏洞 作者:Peter Yaworski 译者:飞龙 协议:CC BY-NC-SA 4.0 描述 根据 OWASP,开放重定向出现在应用接受参数并将用户重定向到该参数值,并且没有对该值 ...
- java 实现 web 客户端_Java web客户端和服务器端交互的原理
Java web客户端和服务器端交互的原理 其实HTTP客户端和服务器端的交互原理很简单:即先是浏览器和服务器端建立Socket无状态连接,也就是短连接,然后通过IO流进行报文信息(这个报文是严格遵循 ...
- java web环境_java web
HTTP Status 500 - Request processing failed; nested exception is java.lang.NullPointerException HTTP ...
- java web 教程_Java Web服务教程
java web 教程 Welcome to the Java Web Services Tutorial. Here we will learn about web services, useful ...
最新文章
- python获取excel某一列所有值-Python读取Excel一列并计算所有对象出现次数的方法...
- 用gdb调试core文件
- optee中添加一个中断以及底层代码的相关解读
- Oracle 的两种工作模式Dedicated Server 和 Shared Server
- Serializable的作用
- win7 VS2013 新建工程 编译lua5.1 静态库
- ubuntu系统中import h5py, ImportError: No module named h5py的解决方法
- 如何成功构建大规模 Web 搜索引擎架构?
- android studio 更改背景和设置字体大小
- cesium 取消光晕
- CVS update常用技巧
- Maven--可选依赖
- Advanced Javascript outlining插件说明
- 涨知识--地球自转会影响飞机飞行时间吗?
- Office2016 Visio2016 Project2016零售版转换VL版
- java学习之屌丝逆袭
- 阿里云--实人认证的接口
- win11文件夹里有却搜索不到了?
- 至联云为你解析Filecoin最新经济模型:180天线性释放是什么意思?
- python中花括号_震惊Python的精髓居然是方括号花括号和圆括号