{{ v.name }}
{{ v.cls }}类
{{ v.price }} ¥{{ v.price }}
可能在我们的日常生活中经常会出现这样的情况,当我们注册的时候会出现邮件提示注册成功,或者意见反馈确认等情况,以及在注册时候通过邮箱来验证验证码的情况
自己最近也在做一个网站,所以把自己学习的东西记录下来
1.首先我们需要一个jar包
下载地址:https://github.com/javaee/javamail/releases
2.我们以网易邮箱为例,我们需要在我们的邮箱中邮箱账号必须要开启smtp服务,点击邮箱页面的设置即可完成。
3.创建一封简单的电子邮件
首先创建一个java工程,把下载好的javax.mail.jar作为类库加入工程,这里不多说。
邮件创建步骤:
1.创建一个邮件对象(mimemessage);
2.设置发件人,收件人,可选增加多个收件人,抄送人,密送人;
3.设置邮件的主题(标题);
4.设置邮件的正文(内容);
5.设置显示的发送时间;
6.保存到本地。
**********************************************************************************
代码实现:
importjavax.mail.session;importjavax.mail.transport;importjavax.mail.internet.internetaddress;importjavax.mail.internet.mimemessage;importjava.util.date;importjava.util.properties;/***javamail版本:1.6.0*jdk版本:jdk1.7以上(必须)*/publicclassmain{//发件人的邮箱和密码(替换为自己的邮箱和密码)//ps:某些邮箱服务器为了增加邮箱本身密码的安全性,给smtp客户端设置了独立密码(有的邮箱称为“授权码”),//对于开启了独立密码的邮箱,这里的邮箱密码必需使用这个独立密码(授权码)。publicstaticstringmyemailaccount="*************@163.com";publicstaticstringmyemailpassword="************";//发件人邮箱的smtp服务器地址,必须准确,不同邮件服务器地址不同,一般(只是一般,绝非绝对)格式为:smtp.xxx.com//网易163邮箱的smtp服务器地址为:smtp.163.compublicstaticstringmyemailsmtphost="smtp.163.com";//收件人邮箱(替换为自己知道的有效邮箱)publicstaticstringreceivemailaccount="*********@qq.com";publicstaticvoidmain(string[]args)throwsexception{//1.创建参数配置,用于连接邮件服务器的参数配置propertiesprops=newproperties();//参数配置props.setproperty("mail.transport.protocol","smtp");//使用的协议(javamail规范要求)props.setproperty("mail.smtp.host",myemailsmtphost);//发件人的邮箱的smtp服务器地址props.setproperty("mail.smtp.auth","true");//需要请求认证//ps:某些邮箱服务器要求smtp连接需要使用ssl安全认证(为了提高安全性,邮箱支持ssl连接,也可以自己开启),//如果无法连接邮件服务器,仔细查看控制台打印的log,如果有有类似“连接失败,要求ssl安全连接”等错误,//打开下面/*...*/之间的注释代码,开启ssl安全连接。/*//smtp服务器的端口(非ssl连接的端口一般默认为25,可以不添加,如果开启了ssl连接,//需要改为对应邮箱的smtp服务器的端口,具体可查看对应邮箱服务的帮助,//qq邮箱的smtp(sll)端口为465或587,其他邮箱自行去查看)finalstringsmtpport="465";props.setproperty("mail.smtp.port",smtpport);props.setproperty("mail.smtp.socketfactory.class","javax.net.ssl.sslsocketfactory");props.setproperty("mail.smtp.socketfactory.fallback","false");props.setproperty("mail.smtp.socketfactory.port",smtpport);*///2.根据配置创建会话对象,用于和邮件服务器交互sessionsession=session.getinstance(props);session.setdebug(true);//设置为debug模式,可以查看详细的发送log//3.创建一封邮件mimemessagemessage=createmimemessage(session,myemailaccount,receivemailaccount);//4.根据session获取邮件传输对象transporttransport=session.gettransport();//5.使用邮箱账号和密码连接邮件服务器,这里认证的邮箱必须与message中的发件人邮箱一致,否则报错////ps_01:成败的判断关键在此一句,如果连接服务器失败,都会在控制台输出相应失败原因的log,//仔细查看失败原因,有些邮箱服务器会返回错误码或查看错误类型的链接,根据给出的错误//类型到对应邮件服务器的帮助网站上查看具体失败原因。////ps_02:连接失败的原因通常为以下几点,仔细检查代码://(1)邮箱没有开启smtp服务;//(2)邮箱密码错误,例如某些邮箱开启了独立密码;//(3)邮箱服务器要求必须要使用ssl安全连接;//(4)请求过于频繁或其他原因,被邮件服务器拒绝服务;//(5)如果以上几点都确定无误,到邮件服务器网站查找帮助。////ps_03:仔细看log,认真看log,看懂log,错误原因都在log已说明。transport.connect(myemailaccount,myemailpassword);//6.发送邮件,发到所有的收件地址,message.getallrecipients()获取到的是在创建邮件对象时添加的所有收件人,抄送人,密送人transport.sendmessage(message,message.getallrecipients());//7.关闭连接transport.close();}/***创建一封只包含文本的简单邮件**@paramsession和服务器交互的会话*@paramsendmail发件人邮箱*@paramreceivemail收件人邮箱*@return*@throwsexception*/publicstaticmimemessagecreatemimemessage(sessionsession,stringsendmail,stringreceivemail)throwsexception{//1.创建一封邮件mimemessagemessage=newmimemessage(session);//2.from:发件人(昵称有广告嫌疑,避免被邮件服务器误认为是滥发广告以至返回失败,请修改昵称)message.setfrom(newinternetaddress(sendmail,"你大爷还是你大爷","utf-8"));//3.to:收件人(可以增加多个收件人、抄送、密送)message.setrecipient(mimemessage.recipienttype.to,newinternetaddress(receivemail,"xx用户","utf-8"));//4.subject:邮件主题(标题有广告嫌疑,避免被邮件服务器误认为是滥发广告以至返回失败,请修改标题)message.setsubject("我是你大爷","utf-8");//5.content:邮件正文(可以使用html标签)(内容有广告嫌疑,避免被邮件服务器误认为是滥发广告以至返回失败,请修改发送内容)message.setcontent("陈晶晶,你好,我是你大爷","text/html;charset=utf-8");//6.设置发件时间message.setsentdate(newdate());//7.保存设置message.savechanges();returnmessage;}}