{{ v.name }}
{{ v.cls }}类
{{ v.price }} ¥{{ v.price }}
在进行实际项目的开发过程中,我们可能会遇到需要需要对用户账号密码进行找回,这时就需要我们通过邮件进行验证,从而对用户信息进行修改,下面我就将自己开发过程中的邮件发送功能简单描述一下,供大家学习使用。
importjava.util.hashmap;importjava.util.map;importjava.util.properties;publicclassmailsenderinfo{privatestringmailserverhost;//发送邮件的服务器privatestringmailserverport="587";//发送邮件的服务器的端口privatestringfromaddress;//发送者地址privatestringtoaddress;//接收者地址privatestringusername;//发送者用户名privatestringpassword;//发送者密码privatebooleanvalidate=true;//是否需要身份验证privatestringsubject;//邮件主题privatestringcontent;//邮件内容privatemap
importjava.util.date;importjava.util.properties;importjavax.mail.address;importjavax.mail.bodypart;importjavax.mail.message;importjavax.mail.multipart;importjavax.mail.session;importjavax.mail.transport;importjavax.mail.internet.internetaddress;importjavax.mail.internet.mimebodypart;importjavax.mail.internet.mimemessage;importjavax.mail.internet.mimemultipart;//邮件发送器importcom.xidian.entity.mailsenderinfo;publicclassmailsender{/***根据邮件会话属性和密码验证器构造一个发送邮件的session*@return*/protectedstaticsessiongetsession(mailsenderinfomailsenderinfo){if(mailsenderinfo==null){returnnull;}myauthenticatorauthenticator=null;propertiespro=mailsenderinfo.getproperties();if(mailsenderinfo.isvalidate()){authenticator=newmyauthenticator(mailsenderinfo.getusername(),mailsenderinfo.getpassword());}returnsession.getdefaultinstance(pro,authenticator);}/***发送文本格式邮件*@return*/publicstaticbooleansendtextmail(mailsenderinfomailsenderinfo){try{//得到sessionsessionmailsession=getsession(mailsenderinfo);//根据session创建一个邮件消息messagemailmessage=newmimemessage(mailsession);//创建邮件发送者的地址addressfromaddress=newinternetaddress(mailsenderinfo.getfromaddress());//创建邮件接收者的地址addresstoaddress=newinternetaddress(mailsenderinfo.gettoaddress());//设置邮件发送者的地址mailmessage.setfrom(fromaddress);//设置邮件接收者地址mailmessage.setrecipient(message.recipienttype.to,toaddress);//设置邮件的主题mailmessage.setsubject(mailsenderinfo.getsubject());//设置邮件的发送内容mailmessage.settext(mailsenderinfo.getcontent());//设置发送邮件的时间mailmessage.setsentdate(newdate());//发送邮件transport.send(mailmessage);returntrue;}catch(exceptione){e.printstacktrace();returnfalse;}}/***发送html格式邮件*@return*/publicstaticbooleansendhtmlmail(mailsenderinfomailsenderinfo){try{//得到sessionsessionmailsession=getsession(mailsenderinfo);//根据session创建一个邮件消息messagemailmessage=newmimemessage(mailsession);//创建邮件发送者的地址addressfromaddress=newinternetaddress(mailsenderinfo.getfromaddress());//创建邮件接收者的地址addresstoaddress=newinternetaddress(mailsenderinfo.gettoaddress());//设置邮件发送者的地址mailmessage.setfrom(fromaddress);//设置邮件接收者地址mailmessage.setrecipient(message.recipienttype.to,toaddress);//设置邮件消息的主题mailmessage.setsubject(mailsenderinfo.getsubject());//设置邮件消息发送的时间mailmessage.setsentdate(newdate());//minimultipart类是一个容器类,包含mimebodypart类型的对象multipartmainpart=newmimemultipart();//创建一个包含html内容的mimebodypartbodyparthtml=newmimebodypart();//设置html内容html.setcontent(mailsenderinfo.getcontent(),"text/html;charset=utf-8");//将内容添加到容器对象中mainpart.addbodypart(html);//将minimultipart对象设置为邮件内容mailmessage.setcontent(mainpart);//发送邮件transport.send(mailmessage);returntrue;}catch(exceptione){e.printstacktrace();returnfalse;}}}3.myauthenticator继承自authenticator
importjavax.mail.authenticator;importjavax.mail.passwordauthentication;publicclassmyauthenticatorextendsauthenticator{stringusername=null;stringpassword=null;publicmyauthenticator(stringusername,stringpassword){this.username=username;this.password=password;}@overrideprotectedpasswordauthenticationgetpasswordauthentication(){returnnewpasswordauthentication(username,password);}}4.sendemaiservlet是邮件发送的主入口,需要注意的是其中的用户名是用于发送邮件的邮箱账号,密码是经过第三方授权的,可以通过qq邮箱,163邮箱等在身份验证后免费获取。