用Java实现电子邮箱email发送邮件
来源:互联网 发布:stringbuffer的源码 编辑:程序博客网 时间:2024/04/28 07:48
今天项目有一个这样需求,用户忘记密码为了找回密码需要向用户的邮箱自动发送包含验证码的邮件,所以上网查询下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) { // 发送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”);
- 是没有开通验证,
- 就是密码(授权码)错了
原来是我把密码用了邮箱的登录密码所以报了错,应该用授权码。
0 0
- 用Java实现电子邮箱email发送邮件
- java发送Email邮件
- JAVA发送Email邮件
- Java发送email邮件
- java发送Email邮件
- java发送Email邮件
- Java -发送邮件 email
- JAVA APACHE EMAIL 发送邮件
- java操作email发送邮件
- send email Java发送邮件
- Java如何发送Email/邮件
- java email发送邮件测试
- Spring发送邮件-java发送email
- Spring发送邮件-java发送email
- Java实现Email发送
- java 发送Email 实现
- 用java开发Email工具之发送邮件
- 用java开发Email工具之发送邮件 [推荐]
- java访问权限,基本特征简述
- ACM题集以及各种总结大全!
- CodeForces 688A Opponents
- zzuli-1919
- hdu 4421
- 用Java实现电子邮箱email发送邮件
- Git(三)-Github远程仓库
- Mastering OpenCV with Practical Computer Vision Projects 学习笔记 - Cartoonifier
- IO流——序列化处理流(ObjectInputStream和ObjectOutputStream)
- 世界密码大全
- vs 2015 unique处理重复字符的怪异方式
- 数据结构实验之排序一:一趟快排
- web.xml中servlet的配置
- hdu 3062 (2-sat)