在进行实际项目的开发过程中,我们可能会遇到需要需要对用户账号密码进行找回,这时就需要我们通过邮件进行验证,从而对用户信息进行修改,下面我就将自己开发过程中的邮件发送功能简单描述一下,供大家学习使用。
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<string, string> mailtype; //邮箱类型 //得到邮件会话属性 public properties getproperties(){ properties p = new properties(); p.put(“mail.smtp.host”, this.mailserverhost); p.put(“mail.smtp.port”, this.mailserverport); p.put(“mail.smtp.auth”, validate?”true”:”false”); return p; } public string getmailserverhost() { return mailserverhost; } public void setmailserverhost(string mailserverhost) { this.mailserverhost = mailserverhost; } public string getmailserverport() { return mailserverport; } public void setmailserverport(string mailserverport) { this.mailserverport = mailserverport; } public string getfromaddress() { return fromaddress; } public void setfromaddress(string fromaddress) { this.fromaddress = fromaddress; } public string gettoaddress() { return toaddress; } public void settoaddress(string toaddress) { this.toaddress = toaddress; } public string getusername() { return username; } public void setusername(string username) { this.username = username; this.fromaddress=username; if(username!=null&&username.length()>0){ string fromemailext=username.substring(username.lastindexof(“@”) 1,username.lastindexof(“.”)); this.mailserverhost=getmailtype().get(fromemailext); } } public string getpassword() { return password; } public void setpassword(string password) { this.password = password; } public boolean isvalidate() { return validate; } public void setvalidate(boolean validate) { this.validate = validate; } public string getsubject() { return subject; } public void setsubject(string subject) { this.subject = subject; } public string getcontent() { return content; } public void setcontent(string content) { this.content = content; } public map<string, string> getmailtype() { mailtype=new hashmap<string, string>(); mailtype.put(“163″,”smtp.163.com”); mailtype.put(“139″,”smtp.139.com”); mailtype.put(“126″,”smtp.126.com”); mailtype.put(“qq”, “smtp.qq.com”); mailtype.put(“sohu”, “smtp.sohu.com”); mailtype.put(“live”,”smtp.live.cn”); mailtype.put(“msn”,”smtp.msn.com”); mailtype.put(“kum”, “mail.kum.net.cn”); mailtype.put(“hotmail”,”smtp.hotmail.cn”); return mailtype; } public void setmailtype(map<string, string> mailtype) { this.mailtype = mailtype; } } 2.设置邮件发送者的基本信息
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(“<script type=\\\’text/javascript\\\’>” “alert(\\\’您输入的邮箱不存在!\\\’);” “location.href=\\\’noregister.jsp\\\’;” “</script>”); }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); } } }
如果,你对上面的内容还有疑问,推荐选择西部数码企业云邮箱!有专人协助您解答邮箱疑问。
西部数码企业云邮箱,采用分布式集群架构,数据多份写入,规避单点故障,全球智能中继,更安全稳定。企业邮箱无限空间,极速收发,99.9%精准过滤垃圾邮件,支持层级子文件夹,邮件撤回,日程微信通知、邮件监管、自定义工作报告功能、邮件归档、ssl部署等几十项功能。而且价格实惠,还可以免费试用!
企业邮箱免费试用入口:https://www.west.cn/services/mail/
广州ecs云服务器搭建环境美国vps优势虚拟主机怎样安装帝国cms这边跟客户核实他们属于党务部门企业建站规划应考虑哪些因素如何在手机上设置公司邮箱今天上午网站打开很慢是你们又在做服务器空间调整维护吗怎样选择虚拟主机?选择虚拟主机有什么技巧?