用Java实现电子邮箱email发送邮件
2016-08-17 19:46
477 查看
今天项目有一个这样需求,用户忘记密码为了找回密码需要向用户的邮箱自动发送包含验证码的邮件,所以上网查询下java mail的实现。话不多说,具体看实现。
下载地址:
http://commons.apache.org/proper/commons-email/download_email.cgi
我们打开网站点击下载commons-email-1.4.jar,它还提供了源码,需要的同学可以下载。
结果:
上网查了下这个错误。原因:
是端口写错了,sendemail.setHostName(“smtp.163.com”);
是没有开通验证,
就是密码(授权码)错了
原来是我把密码用了邮箱的登录密码所以报了错,应该用授权码。
需要的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) { // 发送email HtmlEmail 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的错误。
上网查了下这个错误。原因:
是端口写错了,sendemail.setHostName(“smtp.163.com”);
是没有开通验证,
就是密码(授权码)错了
原来是我把密码用了邮箱的登录密码所以报了错,应该用授权码。
相关文章推荐
- 发送邮件 Email(java实现)
- java实现发送邮件可多个附件内嵌图片-commons-email使用
- Java HtmlEmail 邮件发送的简单实现代码
- java实现发送邮件可多个附件内嵌图片-commons-email使用(未测试)
- 实现javaEmail邮件发送功能并带有生成的pdf附件
- android使用javaemail实现发送邮件
- java实现邮件发送准备工作(前期配置)
- 使用java底层实现邮件的发送(含测试,源码)
- java实现发送邮件功能
- JAVA邮件发送的简单实现
- Java实现邮件的自动发送
- Java 基于JavaMail实现QQ邮件发送(也可实现群发)
- java实现发送邮件功能
- 使用java实现邮件发送功能(已封装)
- Mail Java实现邮件发送(带附件)
- Java 注册时发送激活邮件和激活的实现示例
- java 实现邮件发送
- android使用javaemail发送邮件常见错误
- java代码实现发送邮件
- 关于Javaemail发送邮件时遇到的问题