今天项目有一个这样需求,用户忘记密码为了找回密码需要向用户的邮箱自动发送包含验证码的邮件,所以上网查询下java mail的实现。话不多说,具体看实现。

需要的jar包

这样用到的jar包是commons-email-1.4.jar,来自Apache。
下载地址:
http://commons.apache.org/proper/commons-email/download_email.cgi

我们打开网站点击下载commons-email-1.4.jar,它还提供了源码,需要的同学可以下载。

Mail实体类

package com.yc.wowo.entities;/*** Mail属性实体* * @author eden* */
public class Mail{public static final String ENCODEING = "UTF-8";private String host = "smtp.163.com"; // 服务器地址 private String sender = "xuda27@163.com"; // 发件人的邮箱private String receiver = "xuda27@qq.com"; // 收件人的邮箱private String name = "达达软件团队"; // 发件人昵称private String username = "xuda27@163.com"; // 账号private String password = "客户端授权码"; // 客户端授权码密码private String subject = "[达达软件]找回您的帐户密码"; // 主题private String message = "你的验证码是:8988"; // 信息(支持HTML)public String getHost() {return host;}public void setHost(String host) {this.host = host;}public String getSender() {return sender;}public void setSender(String sender) {this.sender = sender;}public String getReceiver() {return receiver;}public void setReceiver(String receiver) {this.receiver = receiver;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getSubject() {return subject;}public void setSubject(String subject) {this.subject = subject;}public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}}

MailUtil类实现

import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.HtmlEmail;import com.yc.wowo.entities.Mail;/*** 邮件发送工具实现类* * @author eden*/
public class MailUtil {public boolean send(Mail mail) {// 发送emailHtmlEmail email = new HtmlEmail();try {// 这里是SMTP发送服务器的名字:163的如下:"smtp.163.com"email.setHostName(mail.getHost());// 字符编码集的设置email.setCharset(Mail.ENCODEING);// 收件人的邮箱email.addTo(mail.getReceiver());// 发送人的邮箱email.setFrom(mail.getSender(), mail.getName());// 如果需要认证信息的话,设置认证:用户名-密码。分别为发件人在邮件服务器上的注册名称和密码email.setAuthentication(mail.getUsername(), mail.getPassword());// 要发送的邮件主题email.setSubject(mail.getSubject());// 要发送的信息,由于使用了HtmlEmail,可以在邮件内容中使用HTML标签email.setMsg(mail.getMessage());// 发送email.send();return true;} catch (EmailException e) {e.printStackTrace();return false;}}}

测试

用主方法测试

public static void main(String[] args) {  Mail mail = new Mail();   new MailUtil().send(mail);
} 

结果:

期间遇到的错误

中途遇到了一个 org.apache.commons.mail.EmailException: Sending the email to the following server failed : smtp.163.com:25 的错误。

上网查了下这个错误。原因:

  1. 是端口写错了,sendemail.setHostName(“smtp.163.com”);
  2. 是没有开通验证,
  3. 就是密码(授权码)错了

原来是我把密码用了邮箱的登录密码所以报了错,应该用授权码。

用Java实现电子邮箱email发送邮件相关推荐

  1. 初中计算机公开课教学设计,初中信息技术公开课《申请电子邮箱》教案

    初中信息技术公开课<申请电子邮箱>教案 授课教师:xx 教学班级:八年级 教学时间:第十三周周四早读 教学内容:申请电子邮箱 教学目标:通过教学,使学生了解电子邮箱的作用,掌握申请电子邮箱 ...

  2. 电子邮箱注册激活(java)

    大家在注册论坛或者注册一些软件的账号的时候有时需要填写邮箱来注册,而为了测试你的邮箱是否是你自己的会给你的邮箱发送一个激活码链接,只有你点击这个链接之后邮箱才能注册成功,接下来我们就来实现一下这个流程 ...

  3. java邮箱地址正则表达式_JAVA 电子邮箱格式验证,使用正则表达式

    正则表达式 正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),能够用来检查一个串是否含有某种子串.将匹配的子串替换或者从某个串中取出符合某个条件的子串等. ...

  4. java发送邮箱_Java发送邮件

    //文件名SendEmail.javaimportjava.util.*;importjavax.mail.*;importjavax.mail.internet.*;importjavax.acti ...

  5. Java配置邮箱服务发送邮件

    申请邮箱服务开通POP3/SMTP(以qq邮箱为例) 直接在这里生成授权码 记住开通的邮箱账号和授权码,在java里面配置 Java程序 private Boolean sendEmail(Strin ...

  6. JAVA 电子邮箱格式验证,使用正则表达式

    正则表达式 正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串.将匹配的子串替换或者从某个串中取出符合某个条件的子串等. ...

  7. Java实现QQ邮箱发送给网易邮箱,发送邮件+附件

    实现功能: Java实现 QQ邮箱 给网易邮箱发送邮件 获取邮件信息并下载邮件的附件 前置功能 案例以QQ邮箱为例说明: 首先登录QQ邮箱将SMTP服务开启,会得到一个授权码. 创建一个Springb ...

  8. Ecshop会员注册的Email 电子邮箱改成非必填项

    ECSHOP后台"会员注册项设置"可以调置注册项是否必填 ,但是注册时的EMAIL电子邮箱后台是无法设置必填的.但可以通过修改文件来实现 email电子邮箱 非必填. 修改方法: ...

  9. 独特的电子邮箱地址-LeetCode练习(Java实现)

    题目描述: 每封电子邮件都由一个本地名称和一个域名组成,以 @ 符号分隔. 例如,在 alice@leetcode.com中, alice 是本地名称,而 leetcode.com 是域名. 除了小写 ...

最新文章

  1. IIC总线的时钟同步和总线仲裁
  2. 反制爬虫之Burp Suite RCE
  3. 【QGIS入门实战精品教程】4.1:QGIS栅格数据地理配准完整操作流程
  4. mapbox 导航_狂甩不掉,骑行最稳手机支架!一体式安装太方便,秒变单车导航仪...
  5. windows下最好的C++ IDE
  6. MySQL工作笔记-编写存储过程批量添加数据
  7. 阿姆斯特丹大学博士招生,月薪2.3K-3K 欧,QUVA Lab 计算机视觉与机器学习方向...
  8. 20172313 2018-2019-1 《程序设计与数据结构》第六周学习总结
  9. “技术驱动创新”正成为企业发展新方向,开发者该如何修炼自己?
  10. euv光刻机有什么用_有关EUV光刻机,你需要知道这些
  11. Linux让Apache支持中文URL图片/文件名
  12. 路由添加失败 参数错误_Django框架基础之路由详解 | 技术
  13. 从键盘录入10个整数,统计有多少个奇数,Java基础轻松实现
  14. 计算机一级windows系统操作知识点,计算机一级考试内容
  15. MPQ Storm库 源码分析 一
  16. PX4模块设计之九:PX4飞行模式简介
  17. mac系统开机启动项
  18. 神来之笔,2021CTF内核漏洞精选解析
  19. 在世界球场一球成名:HMS 生态为游戏开发者送出的助攻
  20. 如何安装华为路由器模拟环境ENSP

热门文章

  1. 联发科MT7682芯片资料MT7682处理器资料整理
  2. JVM学习笔记_垃圾收集器重要参数
  3. 考研倒计时小系统(前后端交互)
  4. 态势丨黑客侵扰加剧,靶场为网络安全架设“防御盾”
  5. 基于JavaSE标准化图书管理系统
  6. 菏泽学院计算机学院郭琪琪,【北邮表白墙】表白贵校15级计算机学院小哥哥我男票周彧祺!撇撇,我等着你娶我呢,不要太晚哦~署名:来自北航的韩小之...
  7. 让图片和文字居中对齐的方法
  8. 【VirtualAPP 双开系列08】如何实现多开 - UID
  9. 实战 | 用Python和MediaPipe搭建一个嗜睡检测系统 (详细步骤 + 源码)
  10. R语言学习:用ggplot2画折线图