平常我们在做登陆注册的时候需要需要对邮箱进行验证,向邮箱发送验证信息。下面是我在做注册的时候向邮箱发送验证码代码。

邮箱校验正则

邮箱匹配规则:boolean mflag = mail.matches("^\\s*\\w+(?:\\.{0,1}[\\w-]+)*@[a-zA-Z0-9]+(?:[-.][a-zA-Z0-9]+)*\\.[a-zA-Z]+\\s*$");

邮箱发送入口

if(!mflag){result.setCode("-1");result.setMessage("邮箱格式验证不正确");
}else {//获取随机的六位数字 用于发送验证码String identifyingCode = SendEmailUtils.generatePassword();//拼装邮件内容   发送邮件的具体内容String emailContent = getEmailContent4RegEmail(identifyingCode);//将验证码放入缓存服务器中memcache MemcacheUtil.set(mail, 30, identifyingCode);//邮件服务器地址  从配置文件中读取邮件服务器地址String mailHost = SendEmailUtils.getPropValue("mail.smtp.host");//发送人邮箱     <span style="font-family: Arial, Helvetica, sans-serif;">从配置文件中读取发送人邮箱</span>String mailEmail = SendEmailUtils.getPropValue("mail.smtp.email");//邮箱用户名     从配置文件中读取发送人邮箱用户名String mailUser = SendEmailUtils.getPropValue("mail.smtp.user");//邮箱密码      从配置文件中读取发送人邮箱密码String mailPassword = SendEmailUtils.getPropValue("mail.smtp.password");//邮件主题String title = "****邮箱注册";//发送邮箱  参数包括  发送目的地邮箱    发送人邮箱   邮件主题  邮件内容  邮件服务器  发送人邮箱用户名  发送人邮箱密码  是否是html格式new SendEmailUtils().send(mail, mailEmail, title, emailContent,mailHost, mailUser, mailPassword, true);Map<String, String> reMap = new HashMap<String, String>();reMap.put("sendCode", identifyingCode);result.setData(reMap);result.setCode("1");result.setMessage("发送成功");
}

拼装邮件内容(html格式的)

private String getEmailContent4RegEmail(String identifyingCode) {StringBuilder emailContent = new StringBuilder().append("您在***进行邮箱注册操作的验证码为:<span style=\"color: #F3750F;font-weight: bold;font-size: larger;font-family: cursive;\">").append(identifyingCode).append("</span><br/>").append("此验证码只能使用一次,验证成功自动失效;<br/>").append("<div style=\"font-size: small;color: gray;\">").append("(请在10分钟内完成验证,10分钟后验证码失效,您需要重新进行验证。感谢您对***的支持。)<br/>").append("如果您错误的收到了本电子邮件,请您忽略上述内容<br/>").append("</div>");return emailContent.toString();}

发送邮件工具类

import java.io.InputStream;
import java.util.Date;
import java.util.Properties;
import java.util.Random;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.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;import org.apache.log4j.Logger;public class SendEmailUtils {/** 邮件随机数 */public static Random random = new Random();//邮箱服务器public static String MAILHOST="";public static String MAILEMAIL="";public static String MAILUSER="";public static String MAILPASSWORD="";public static String MAILADDRESS="";private static Properties prop = null;static{String path = "/com/conf/mail.properties";InputStream in = SendEmailUtils.class.getResourceAsStream(path);if ( in != null ){prop = new Properties();try{prop.load(in);MAILHOST = (String) prop.get("mail.smtp.host");MAILEMAIL = (String) prop.get("mail.smtp.email");MAILUSER=(String)prop.get("mail.smtp.user");MAILPASSWORD=(String)prop.get("mail.smtp.password");} catch (Exception e){throw new RuntimeException(e);}}}public static String getPropValue(String key){String path = "/com/conf/mail.properties";String val = null;InputStream in = SendEmailUtils.class.getResourceAsStream(path);if ( in != null ){prop = new Properties();try{prop.load(in);val = prop.getProperty(key);} catch (Exception e){e.printStackTrace();System.out.println("=====================get property file error!");}}return val;}private static Logger logger = Logger.getLogger(SendEmailUtils.class);//发送邮件相关/*** 生成密码(6位随机数字)* @return String* @author HuKaiXuan 2014-5-17 上午11:16:18*/public static String generatePassword(){String number = "";for(int i = 0; i < 6; i ++) {number += random.nextInt(10);}return number;}public static void main(String[] args) {String propValue = new SendEmailUtils().getPropValue("mail.smtp.host");System.out.println(propValue);/*Random random = new Random();String password = random.nextInt() + "";StringBuffer content = new StringBuffer();content.append("您好!用户 Mr.Men ***** 在radio的密码为:" + password + "<br/>(该邮件为系统邮件,请勿回复,登录后请及时修改您的密码。)");String mailHost = "smtp.163.com";// pu.getValue("mail.send.host");String mailEmail = "***2010@163.com";// pu.getValue("mail.send.email");String mailUser = "***2010";// pu.getValue("mail.send.user");String mailPassword = "***";// pu.getValue("mail.send.password");try {new SendEmailUtils().send("****@qq.com", mailEmail, "密码重置", content.toString(), mailHost, mailUser, mailPassword, false);System.out.println("Mail Send Success");} catch (AddressException e) {System.out.println("AddressException-------" + e.getMessage());e.printStackTrace();} catch (MessagingException e) {System.out.println("MessagingException-------" + e.getMessage());e.printStackTrace();}*/}/**************************************************************************** 邮件发送,带用户名和密码验证,测试通过* * @param to       发送目的地邮箱* @param from     发送来源地邮箱   * @param title    邮箱主题* @param content  邮箱内容* @param smtpServer 邮箱服务器* @param user       邮箱有户名 * @param password   邮箱密码* @param isHTML     是否是Html* @throws AddressException* @throws MessagingException*/public void send(String to, String from, String title, String content,String smtpServer, String user, String password, boolean isHTML)throws AddressException, MessagingException {Properties props = new Properties();Authenticator auth = new MailAuthenticator(user, password);Session sendMailSession;Transport transport;props.put("mail.smtp.host", smtpServer);props.put("mail.smtp.auth", "true");sendMailSession = Session.getInstance(props, auth);Message newMessage = new MimeMessage(sendMailSession);newMessage.setFrom(new InternetAddress(from));newMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(to));newMessage.setSubject(title);newMessage.setSentDate(new Date());if (isHTML) {newMessage.setContent(content, "text/html;charset=UTF-8");} else {newMessage.setText(content);}transport = sendMailSession.getTransport("smtp");Transport.send(newMessage);transport.close();if (logger.isDebugEnabled()) {logger.debug("---------- Mail Send Success ----------");}}}
class MailAuthenticator extends Authenticator {private String user;private String password;public MailAuthenticator() {}public MailAuthenticator(String user, String password) {this.user = user;this.password = password;}protected PasswordAuthentication getPasswordAuthentication() {return new PasswordAuthentication(user, password);}public String getMailServer(String email) {String mailUrl = "/";if (null != email) {mailUrl = email.toLowerCase();String email_array = email.substring(email.indexOf("@"));if ("163.com".equals(email_array)) {// 163邮箱mailUrl = "mail.163.com";} else if ("vip.163.com".equals(email_array)) {// 163vip邮箱mailUrl = "vip.163.com";} else if ("sina.com".equals(email_array)) {// 新浪邮箱mailUrl = "mail.sina.com.cn";} else if ("sina.cn".equals(email_array)) {// 新浪邮箱mailUrl = "mail.sina.com.cn";} else if ("vip.sina.com".equals(email_array)) {// 新浪vip邮箱mailUrl = "vip.sina.com.cn";} else if ("2008.sina.com".equals(email_array)) {// 新浪2008邮箱mailUrl = "mail.2008.sina.com.cn";} else if ("sohu.com".equals(email_array)) {// 搜狐邮箱mailUrl = "mail.sohu.com";} else if ("vip.sohu.com".equals(email_array)) {// 搜狐vip邮箱mailUrl = "vip.sohu.com";} else if ("tom.com".equals(email_array)) {// Tom邮箱mailUrl = "mail.tom.com";} else if ("vip.sina.com".equals(email_array)) {// Tom vip 邮箱mailUrl = "vip.tom.com";} else if ("sogou.com".equals(email_array)) {// 搜狗邮箱mailUrl = "mail.sogou.com";} else if ("126.com".equals(email_array)) {// 126邮箱mailUrl = "www.126.com";} else if ("vip.126.com".equals(email_array)) {// 126 vip 邮箱mailUrl = "vip.126.com";} else if ("139.com".equals(email_array)) {// 139邮箱mailUrl = "mail.10086.cn";} else if ("gmail.com".equals(email_array)) {// gmail邮箱mailUrl = "www.gmail.com";} else if ("hotmail.com".equals(email_array)) {// 139邮箱mailUrl = "login.live.com";} else if ("189.cn".equals(email_array)) {// 电信邮箱mailUrl = "webmail2.189.cn/webmail/";} else if ("qq.com".equals(email_array)) {// qq邮箱mailUrl = "mail.qq.com";} else if ("yahoo.com".equals(email_array)) {// 雅虎邮箱mailUrl = "mail.cn.yahoo.com";} else if ("yahoo.cn".equals(email_array)) {// 雅虎邮箱mailUrl = "mail.cn.yahoo.com";} else if ("yahoo.com.cn".equals(email_array)) {// 雅虎邮箱mailUrl = "mail.cn.yahoo.com";} else if ("21cn.com".equals(email_array)) {// 21cn邮箱mailUrl = "mail.21cn.com";} else if ("eyou.com".equals(email_array)) {// eyou邮箱mailUrl = "www.eyou.com";} else if ("188.com".equals(email_array)) {// 188邮箱mailUrl = "www.188.com";} else if ("yeah.net".equals(email_array)) {// yeah邮箱mailUrl = "www.yeah.net";} else if ("foxmail.com".equals(email_array)) {// foxmail邮箱mailUrl = "foxmail.com";} else if ("wo.com.cn".equals(email_array)) {// 联通手机邮箱mailUrl = "mail.wo.com.cn";} else if ("263.net".equals(email_array)) {// 263邮箱mailUrl = "www.263.net";} else if ("x263.net".equals(email_array)) {// 263邮箱mailUrl = "www.263.net";} else if ("263.net.cn".equals(email_array)) {// 263邮箱mailUrl = "www.263.net";} else {mailUrl = "mail." + (email.substring(email.indexOf("@") + 1));}}return mailUrl;}}

javaMail实现邮件发送相关推荐

  1. 使用javamail进行邮件发送

    使用javamail进行邮件发送 // 在javax.mail包中的类,需要引入的. import javax.activation.DataHandler; import javax.activat ...

  2. SpringBoot整合Javamail实现邮件发送

    博客主页:踏风彡的博客 博主介绍:一枚在学习的大学生,希望在这里和各位一起学习. 所属专栏:SpringBoot学习笔记 文章创作不易,期待各位朋友的互动,有什么学习问题都可在评论区留言或者私信我,我 ...

  3. ssh项目实战----Spring计时器任务 Spring整合JavaMail(邮件发送)

    一.常用数据频度维护 对于系统使用度较高的数据,客户在查看时希望这些数据最好先出现,此时需要为其添加排序规则.在进行排序时,使用次数成为排序的依据.因此需要设置一个字段用来描述某种数据的使用次数,也就 ...

  4. 【struts2+hibernate+spring项目实战】Spring计时器任务 Spring整合JavaMail(邮件发送)(ssh)

    一.常用数据频度维护 对于系统使用度较高的数据,客户在查看时希望这些数据最好先出现,此时需要为其添加排序规则.在进行排序时,使用次数成为排序的依据.因此需要设置一个字段用来描述某种数据的使用次数,也就 ...

  5. java 发送附件_Java 基于javaMail的邮件发送(支持附件)

    基于JavaMail的Java邮件发送 Author xiuhong.chen@hand-china.com Desc 简单邮件发送 Date 2017/12/8 项目中需要根据物料资质的状况实时给用 ...

  6. Java 基于javaMail的邮件发送(支持附件)

    基于JavaMail的Java邮件发送 Author xiuhong.chen@hand-china.com Desc 简单邮件发送 Date 2017/12/8 项目中需要根据物料资质的状况实时给用 ...

  7. java邮件中添加excel_基于javaMail的邮件发送--excel作为附件

    基于JavaMail的Java邮件发送 Author xiuhong.chen@hand-china.com Desc 简单邮件发送 Date 2017/12/8 项目中需要根据物料资质的状况实时给用 ...

  8. java 邮件发送_Java 基于JavaMail的邮件发送

    http://blog.csdn.net/xietansheng/article/details/51673073 http://blog.csdn.net/xietansheng/article/d ...

  9. javaMail 的邮件发送包括了抄送(CC),密送(BCC)采用springBoot

    首先加代码配置文件来一个 mail.properties mail.smtp.host=smtp.qq.commail.smtp.port=465mail.smtp.SSLport=587mail.s ...

  10. java封装发送邮件的插件_基于Spring封装的Javamail实现邮件发送

    1.依赖 org.springframework spring-context-support 4.1.5.RELEASE javax.mail mail 1.4.7 org.freemarker f ...

最新文章

  1. 没有“好的”数据,AI就没有未来?听听云测数据怎么说
  2. [转]基于 aspnet 的自动合并输出js和css的解决方案
  3. java压缩----使用ANT JDK压缩---解决中文问题
  4. QScrollArea 详解
  5. 用LVM快照创建虚拟机
  6. 支付宝借呗频繁借还款对征信有影响吗?
  7. r语言去除字符串两端多余空格
  8. livevent的几个问题
  9. hibernate执行插入时候报错: IDENTITY_INSERT 设置为 OFF 时,不能为表 ‘user‘ 中的标识列插入显式值
  10. 计算机用户系统软件,计算机软件系统
  11. 在阿帕奇服务器布置文件,Apache文件列表服务器美化 index of /
  12. java 页眉页脚_Java 添加Word页眉、页脚
  13. 我对于部门经理、项目经理与技术经理的理解
  14. 2048游戏配色方案的计算(小清新版)
  15. 前端面试题总结(js、html、小程序、React、ES6、Vue、算法、全栈热门视频资源)持续更新
  16. 小乌龟代码提交Gitee
  17. 智能媒体管理产品文档转换/预览功能介绍(1)---Cloud Native架构
  18. 奇葩公司规定程序员工资按代码行数算工资,个个提成这么高?
  19. 创维E900-S-CA上海、四川高安版-3798MV100芯片强刷固件短接刷机教程
  20. 【复变函数】2021-09-15-复变函数/解析函数的一些想法(五)(算不上笔记)

热门文章

  1. 今日制造怎么安装solidworks插件_PS插件安装后出现了登陆界面,无法使用怎么解决?保证一招搞定...
  2. 超好用的数学教学软件:几何画板Sketchpad for Mac中文版
  3. 10款白嫖网站笔记整理
  4. 微信小程序登陆流程详详详解 看这一篇就够了
  5. 5V限流IC,0.4A-4.8A可调限流芯片解决方案
  6. Dlib+Opencv库实现疲劳检测
  7. spring boot添加redis过期策略
  8. 基于java的智能化停车系统ER图_智能化的停车场系统设计原则及解决方案
  9. ANSYS——模态分析的理论基础
  10. 白话空间统计二十四:地理加权回归(二)