SMTP,POP3,IMAP

POP3

POP3是Post Office Protocol 3的简称,即邮局协议的第3个版本,它规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议。它是因特网电子邮件的第一个离线协议标准,POP3允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时删除保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的。

SMTP

SMTP 的全称是“Simple Mail Transfer Protocol”,即简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。SMTP 服务器就是遵循 SMTP 协议的发送邮件服务器。 
  SMTP 认证,简单地说就是要求必须在提供了账户名和密码之后才可以登录 SMTP 服务器,这就使得那些垃圾邮件的散播者无可乘之机。 
  增加 SMTP 认证的目的是为了使用户避免受到垃圾邮件的侵扰。

IMAP

IMAP全称是Internet Mail Access Protocol,即交互式邮件存取协议,它是跟POP3类似邮件访问标准协议之一。不同的是,开启了IMAP后,您在电子邮件客户端收取的邮件仍然保留在服务器上,同时在客户端上的操作都会反馈到服务器上,如:删除邮件,标记已读等,服务器上的邮件也会做相应的动作。所以无论从浏览器登录邮箱或者客户端软件登录邮箱,看到的邮件以及状态都是一致的。

网易常见邮箱服务器信息:

腾讯邮箱服务器信息:stmp.qq.com

Action
public class MailAction extends ActionSupport {

	private SysuserinfoService sysuserinfoService;// 用户基本信息表

	private String email;
private String errorMessage;
private Sysuserinfo sysuserinfo; /**
* 发邮件
*
* @return
*/
public String sendMail() {
System.out.println("LOG : MailAction-sendMail"); if (sysuserinfo == null) {
errorMessage = "获取用户信息失败,请返回登录界面重新尝试 !";
return "error";
} String userId = sysuserinfo.getUserCode();
String userRole = sysuserinfo.getSysrole().getRoleCode();
Sysuserinfo userinfo = sysuserinfoService.findById(Sysuserinfo.class,
userId); if (userinfo == null) {
errorMessage = "用户不存在,请返回登录界面重新尝试 !";
return "error";
} // 设置邮件内容 String content = "尊敬的用户:" + userinfo.getUserName() +
String content = ".作业在线系统找回密码给你发的密码是:" + userinfo.getPassword()
+ "请注意自己的帐号安全,不要外泄密码!!"; boolean flag = false; email = userinfo.getEmail();// 从数据库读出 if (email == null) {
errorMessage = "对不起,您还没有设置邮箱哦!";
return "error";
}
System.out.println("LOG : email = " + email); flag = sendEmail(email, content); if (!flag) {
errorMessage = "邮件发送过程中找不到家了!";
return "error";
}
return "success";
} /**
* 账户:cn_edu_nwsuaf_mas@163.com 密码:cn.edu.nwsuaf 授权密码:cnedunwsuaf2017
*
* @param email
* @param content
* @return
*/
public boolean sendEmail(String email, String content) {
SimpleEmail mailUtil = new SimpleEmail(); /**
* 根据发送方设置服务器
*
*/
mailUtil.setHostName("smtp.163.com");
if (mailUtil.getHostName() == null) {
System.out.println("LOG : can not deal with the type of email!");
return false;
}
mailUtil.setAuthentication("xxxxxxxx@163.com",
"xxxxxxxx@163.com的授权码");
mailUtil.setCharset("utf-8");
try {
mailUtil.addTo(email);
mailUtil.setFrom("xxxxxxxx@163.com");
mailUtil.setSubject("subject");
mailUtil.setMsg(content);
mailUtil.send();
} catch (EmailException e) {
System.out.println("LOG : 邮件发送过程中找不到家了!");
e.printStackTrace();
return false;
}
return true;
}
Struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<package name="mail" extends="commons">
<action name="mailSendMail" method="sendMail"
class="cn.edu.nwsuaf.comAction.MailAction">
<result name="success">/page/mail/success.jsp</result>
<result name="error">/page/mail/error.jsp</result>
<result name="input">/login.jsp</result>
</action>
</package>
</struts>

java实现邮箱找密码的更多相关文章

  1. Java实现邮箱找回密码 --转载

    通过邮件找回密码功能的实现 1.最近开发一个系统,有个需求就是,忘记密码后通过邮箱找回.现在的系统在注册的时候都会强制输入邮箱,其一目的就是 通过邮件绑定找回,可以进行密码找回.通过java发送邮件的 ...

  2. Java实现邮箱找回密码

    通过邮件找回密码功能的实现 1.最近开发一个系统,有个需求就是,忘记密码后通过邮箱找回.现在的系统在注册的时候都会强制输入邮箱,其一目的就是 通过邮件绑定找回,可以进行密码找回.通过java发送邮件的 ...

  3. java web实现 忘记密码(找回密码)功能及代码

    java web实现 忘记密码(找回密码)功能及代码 (一).总体思路 (二).部分截图 (三).部分代码 (一).总体思路: 1.在 找回密码页面 录入 姓名.邮箱和验证码,录入后点击[提交]按钮, ...

  4. JavaWeb中实现通过邮箱找回密码

    在开发JavaWeb项目中,利用邮箱帮用户找回密码.效果展示:   需要一个发送邮件的jar包 : javax.mail .jar1.JSP页面(设置邮箱输入框) HTML: <p >请输 ...

  5. java实现邮箱发送邮件功能

    邮箱验证是一个很常见的功能了,基本上每个网站都会用的到,java也有专门的jar来处理邮件发送等服务,这里只是简单的实现一下发送邮件的功能,具体jar包就不再提供了,我会把所有需要引用的包都贴出来,方 ...

  6. java实现邮箱发送邮件

    第一步:封装发件人账号密码 import javax.mail.Authenticator;import javax.mail.PasswordAuthentication; /** * 发件人账号密 ...

  7. spring mvc下实现通过邮箱找回密码功能

    1功能分析 通过spring mvc框架实现通过邮箱找回密码. 2 实现分析 主要是借助某个邮箱的pop3/smtp服务实现的邮件代发功能. 3 源码分析 3.1首先在用户表对应的javabean中加 ...

  8. 运行Java cmd程序 找不到或无法加载主类怎么解决

    //这个问题原因有以下几种,但是和环境变量并没有太大的关系 //能够执行java 和 javac 就证明你的环境变量已经配置好了,其实 classpath 可以不配置 //假如有如下文件:H:\cod ...

  9. AspNetCore-MVC实战系列(二)之通过绑定邮箱找回密码

    AspNetCore - MVC实战系列目录 . 爱留图网站诞生 . AspNetCore - MVC实战系列(一)之Sqlserver表映射实体模型 . AspNetCore-MVC实战系列(二)之 ...

随机推荐

  1. Spring源码情操陶冶-AbstractApplicationContext#onRefresh

    承接前文Spring源码情操陶冶-AbstractApplicationContext#initApplicationEventMulticaster 约定web.xml配置的contextClass ...

  2. 安装完ubuntu16.4.0之后要做的一些优化

    1.删除libreoffice libreoffice虽然是开源的,但是Java写出来的office执行效率实在不敢恭维,装完系统后果断删掉 sudo apt-get remove libreoffi ...

  3. Linux修改网卡名称、主机名

    Linux修改网卡名称.主机名 环境:VirtualBox 5.0.14 + RHEL 6.5 需求:个人实验搭建一套Standby RAC时,为了节约时间,直接复制之前安装RAC的主机模板. 但复制 ...

  4. Redux源码分析之bindActionCreators

    Redux源码分析之基本概念 Redux源码分析之createStore Redux源码分析之bindActionCreators Redux源码分析之combineReducers Redux源码分 ...

  5. TCP 滑动窗口

    滑动窗口协议 流量控制方法 PUSH 慢启动   隔一个报文段确认"的策略实际就是因为 delayed ack,同时接收到两个待确认的ACK包时,就立即发送确认包.   滑动窗口实例   解 ...

  6. 47. leetcode 437. Path Sum III

    437. Path Sum III You are given a binary tree in which each node contains an integer value. Find the ...

  7. 4. leetcode 461. Hamming Distance

    The Hamming distance between two integers is the number of positions at which the corresponding bits ...

  8. Java学生成绩

    import java.util.*; public class guanlixiton { public static void main(String[] args) { Scanner in = ...

  9. IPython+:一个交互式计算和开发环境

    一. IPython基础 代码自动补全:Tab键 可补全内容包括:变量名.函数名.成员变量函数.目录文件 内省(Itrospection) 在变量名之前或之后加上问号(?),这样可以显示这个对象的相关 ...

  10. Redis和消息队列使用实战

    消息队列是在乐视这边非常普遍使用的技术.在我们部门内部,不同的项目使用的消息队列实现也不一样.下面是支付系统的流转图(部门兄弟画的,借用一下): 从图中可以看到,里面用到了kafka消息队列.作用是做 ...