符合中小企业对网站设计、功能常规化式的企业展示型网站建设
本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...
商城网站建设因基本功能的需求不同费用上面也有很大的差别...
手机微信网站开发、微信官网、微信商城网站...
在进行实际项目的开发过程中,我们可能会遇到需要需要对用户账号密码进行找回,这时就需要我们通过邮件进行验证,从而对用户信息进行修改,下面我就将自己开发过程中的邮件发送功能简单描述一下,供大家学习使用。
创新互联建站专注于东坡网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供东坡营销型网站建设,东坡网站制作、东坡网页设计、东坡网站官网定制、微信平台小程序开发服务,打造东坡网络公司原创品牌,更为您提供东坡网站排名全网营销落地服务。1.MailSenderInfo是确定邮件发送的类型及其各种属性import java.util.HashMap; import java.util.Map; import java.util.Properties; public class MailSenderInfo { private String mailServerHost; //发送邮件的服务器 private String mailServerPort="587"; //发送邮件的服务器的端口 private String fromAddress; //发送者地址 private String toAddress; //接收者地址 private String username; //发送者用户名 private String password; //发送者密码 private boolean validate=true; //是否需要身份验证 private String subject; //邮件主题 private String content; //邮件内容 private Map
import java.util.Date; import java.util.Properties; import javax.mail.Address; import javax.mail.BodyPart; import javax.mail.Message; import javax.mail.Multipart; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; //邮件发送器 import com.xidian.entity.MailSenderInfo; public class MailSender { /** * 根据邮件会话属性和密码验证器构造一个发送邮件的session * @return */ protected static Session getSession(MailSenderInfo mailSenderInfo){ if(mailSenderInfo == null){ return null; } MyAuthenticator authenticator = null; Properties pro = mailSenderInfo.getProperties(); if(mailSenderInfo.isValidate()){ authenticator = new MyAuthenticator(mailSenderInfo.getUsername(),mailSenderInfo.getPassword()); } return Session.getDefaultInstance(pro, authenticator); } /** * 发送文本格式邮件 * @return */ public static boolean sendTextMail(MailSenderInfo mailSenderInfo){ try { //得到session Session mailSession = getSession(mailSenderInfo); //根据session创建一个邮件消息 Message mailMessage=new MimeMessage(mailSession); //创建邮件发送者的地址 Address fromAddress=new InternetAddress(mailSenderInfo.getFromAddress()); //创建邮件接收者的地址 Address toAddress=new InternetAddress(mailSenderInfo.getToAddress()); //设置邮件发送者的地址 mailMessage.setFrom(fromAddress); //设置邮件接收者地址 mailMessage.setRecipient(Message.RecipientType.TO, toAddress); //设置邮件的主题 mailMessage.setSubject(mailSenderInfo.getSubject()); //设置邮件的发送内容 mailMessage.setText(mailSenderInfo.getContent()); //设置发送邮件的时间 mailMessage.setSentDate(new Date()); //发送邮件 Transport.send(mailMessage); return true; } catch (Exception e) { e.printStackTrace(); return false; } } /** * 发送html格式邮件 * @return */ public static boolean sendHtmlMail(MailSenderInfo mailSenderInfo) { try { //得到session Session mailSession = getSession(mailSenderInfo); //根据session创建一个邮件消息 Message mailMessage = new MimeMessage(mailSession); //创建邮件发送者的地址 Address fromAddress=new InternetAddress(mailSenderInfo.getFromAddress()); //创建邮件接收者的地址 Address toAddress=new InternetAddress(mailSenderInfo.getToAddress()); //设置邮件发送者的地址 mailMessage.setFrom(fromAddress); //设置邮件接收者地址 mailMessage.setRecipient(Message.RecipientType.TO, toAddress); //设置邮件消息的主题 mailMessage.setSubject(mailSenderInfo.getSubject()); //设置邮件消息发送的时间 mailMessage.setSentDate(new Date()); //MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象 Multipart mainPart = new MimeMultipart(); //创建一个包含HTML内容的MimeBodyPart BodyPart html = new MimeBodyPart(); //设置HTML内容 html.setContent(mailSenderInfo.getContent(), "text/html; charset=UTF-8"); //将内容添加到容器对象中 mainPart.addBodyPart(html); //将MiniMultipart对象设置为邮件内容 mailMessage.setContent(mainPart); //发送邮件 Transport.send(mailMessage); return true; } catch (Exception e) { e.printStackTrace(); return false; } } } 3.MyAuthenticator 继承自Authenticator
import javax.mail.Authenticator; import javax.mail.PasswordAuthentication; public class MyAuthenticator extends Authenticator{ String userName = null; String password = null; public MyAuthenticator(String userName, String password) { this.userName = userName; this.password = password; } @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(userName, password); } } 4.SendEmaiServlet 是邮件发送的主入口,需要注意的是其中的用户名是用于发送邮件的邮箱账号,密码是经过第三方授权的,可以通过qq邮箱,163邮箱等在身份验证后免费获取。
import java.io.IOException; import java.io.PrintWriter; import java.util.Random; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.xidian.entity.Account; import com.xidian.entity.MailSenderInfo; import com.xidian.service.AccountService; import com.xidian.service.impl.AccountServiceImpl; import com.xidian.service.impl.MailSender; public class SendEmailServlet extends HttpServlet{ @Override public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub doPost(req, resp); } @Override public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub resp.setContentType("text/html;charset=UTF-8"); resp.setCharacterEncoding("UTF-8"); req.setCharacterEncoding("UTF-8"); MailSenderInfo senderInfo=new MailSenderInfo(); String email = req.getParameter("email"); AccountService as = new AccountServiceImpl(); Account account = as.queryByEmail(email); if(account ==null){ PrintWriter out = resp.getWriter(); out.println(""); }else{ senderInfo.setUsername("123456789@qq.com"); //用户名 senderInfo.setPassword("xxxxxxxxxxxxxxxxx"); //密码 senderInfo.setToAddress(email);//接收者 senderInfo.setSubject("Battle邮箱验证"); //主题 Random random = new Random(); // int result=random.nextInt(10); String num = (int)(Math.random()*1000000)+""; String str ="您的暴雪游戏验证码为:"+num+",请保护好您的验证码安全不要告诉他人!"; senderInfo.setContent(str); //内容 //发送 MailSender.sendHtmlMail(senderInfo); req.setAttribute("num", num); req.setAttribute("email", email); req.getRequestDispatcher("email.jsp").forward(req, resp); } } }