javaMail实现邮件发送
2015-09-11 09:28
567 查看
平常我们在做登陆注册的时候需要需要对邮箱进行验证,向邮箱发送验证信息。下面是我在做注册的时候向邮箱发送验证码代码。
邮箱校验正则
邮箱发送入口
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格式的)
发送邮件工具类
邮箱校验正则
邮箱匹配规则: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; } }
相关文章推荐
- 垃圾邮件过滤器 python简单实现
- 使用Ajax实时检测"用户名、邮箱等"是否已经存在
- 邮箱网站不能用mail.xxx.com:8888的方式访问原因
- C#实现按数据库邮件列表发送邮件的方法
- C#使用自带的email组件发送邮件的方法
- C#.NET采用HTML模板发送电子邮件完整实例
- hotmail,MSN 邮箱无法登陆的解决方法 秘密通道
- php简单实现发送带附件的邮件
- C#发送内置图片html格式邮件的方法
- jQuery 实现自动填充邮箱功能(带下拉提示)
- javascript验证邮件地址和MX记录的方法
- C++实现邮件群发的方法
- 基于JavaMail API收发邮件的方法
- 用ASP.NET做的个性化的邮件发送系统
- sqlserver数据库使用存储过程和dbmail实现定时发送邮件
- Jmail组件发送邮件之绝对能用的函数
- 我的群发邮件程序
- smtp邮件发送一例
- 用PHP发电子邮件
- JSP发送邮件实例