JavaMail 实现发送验证码,带验证码模板的

  1 package util;
  2 import java.io.File;
  3 import java.io.FileOutputStream;
  4 import java.util.Properties;
  5 import javax.activation.DataHandler;
  6 import javax.activation.FileDataSource;
  7 import javax.mail.Message;
  8 import javax.mail.Session;
  9 import javax.mail.Transport;
 10 import javax.mail.internet.*;
 11
 12 /**
 13  * @author tian
 14  * @date 2019/4/2913:48
 15  */
 16 public class JavaMailUtil {
 17
 18     public  static  class MailBean{
 19         private File[] files;
 20         private String host;
 21         private String protocol;
 22         private Boolean auth;
 23         private String userName;
 24         private String password;
 25         private String fromUser;
 26         private String toUser;
 27         private String titel;
 28         private String content;
 29         private Integer type;
 30
 31         public Integer getType() {
 32             return type;
 33         }
 34
 35         public MailBean setType(Integer type) {
 36             this.type = type;
 37             return this;
 38         }
 39
 40         public File[] getFiles() {
 41             return files;
 42         }
 43
 44         public MailBean setFiles(File[] files) {
 45             this.files = files;
 46             return this;
 47         }
 48
 49         public String getHost() {
 50             return host;
 51         }
 52
 53         public MailBean setHost(String host) {
 54             this.host = host;
 55             return this;
 56         }
 57
 58         public String getProtocol() {
 59             return protocol;
 60         }
 61
 62         public MailBean setProtocol(String protocol) {
 63             this.protocol = protocol;
 64             return this;
 65         }
 66
 67         public Boolean getAuth() {
 68             return auth;
 69         }
 70
 71         public MailBean setAuth(Boolean auth) {
 72             this.auth = auth;
 73             return this;
 74         }
 75
 76         public String getUserName() {
 77             return userName;
 78         }
 79
 80         public MailBean setUserName(String userName) {
 81             this.userName = userName;
 82             return this;
 83         }
 84
 85         public String getPassword() {
 86             return password;
 87         }
 88
 89         public MailBean setPassword(String password) {
 90             this.password = password;
 91             return this;
 92         }
 93
 94         public String getFromUser() {
 95             return fromUser;
 96         }
 97
 98         public MailBean setFromUser(String fromUser) {
 99             this.fromUser = fromUser;
100             return this;
101         }
102
103         public String getToUser() {
104             return toUser;
105         }
106
107         public MailBean setToUser(String toUser) {
108             this.toUser = toUser;
109             return this;
110         }
111
112         public String getTitel() {
113             return titel;
114         }
115
116         public MailBean setTitel(String titel) {
117             this.titel = titel;
118             return this;
119         }
120
121         public String getContent() {
122             return content;
123         }
124
125         public MailBean setContent(String content) {
126             this.content = content;
127             return this;
128         }
129     }
130     /**
131      * 发送简单的文字邮件
132      */
133     public synchronized static void Sendmail(MailBean mailBean) throws Exception {
134             Properties prop = new Properties();
135             prop.setProperty("mail.host", mailBean.getHost());
136             prop.setProperty("mail.transport.protocol", mailBean.getProtocol());
137             prop.setProperty("mail.smtp.auth", "true");
138             //使用JavaMail发送邮件的5个步骤
139             //1、创建session
140             Session session = Session.getInstance(prop);
141             //开启Session的debug模式,这样就可以查看到程序发送Email的运行状态
142             session.setDebug(true);
143             //2、通过session得到transport对象
144             Transport ts = session.getTransport();
145             //3、使用邮箱的用户名和密码连上邮件服务器,发送邮件时,发件人需要提交邮箱的用户名和密码给smtp服务器,用户名和密码都通过验证之后才能够正常发送邮件给收件人。
146             ts.connect(mailBean.getHost(), mailBean.getUserName(), mailBean.getPassword());
147             //4、创建邮件
148         Message  message=null;
149         if(mailBean.getType()==1){
150               message = createSimpleMail(session,mailBean);
151         }
152         if(mailBean.getType()==2){
153              message = createAttachMail(session,mailBean);
154         }
155
156             //5、发送邮件
157             ts.sendMessage(message, message.getAllRecipients());
158             ts.close();
159         }
160
161         /**
162          * @Method: createSimpleMail
163          * @Description: 创建一封只包含文本的邮件
164          * @Anthor:孤傲苍狼
165          *
166          * @param session
167          * @return
168          * @throws Exception
169          */
170         public static MimeMessage createSimpleMail(Session session,MailBean mailBean)
171                 throws Exception {
172             //创建邮件对象
173             MimeMessage message = new MimeMessage(session);
174             //指明邮件的发件人
175             message.setFrom(new InternetAddress(mailBean.getFromUser()));
176             //指明邮件的收件人,现在发件人和收件人是一样的,那就是自己给自己发
177             message.setRecipient(Message.RecipientType.TO, new InternetAddress(mailBean.getToUser()));
178             //邮件的标题
179             message.setSubject(mailBean.getTitel());
180             //邮件的文本内容
181             message.setContent(mailBean.getContent(), "text/html;charset=UTF-8");
182             //返回创建好的邮件对象
183             return message;
184         }
185         /**
186          * @Method: createImageMail
187          * @Description: 生成一封邮件正文带图片的邮件
188          * @Anthor:孤傲苍狼
189          *
190          * @param session
191          * @return
192          * @throws Exception
193          */
194         public static MimeMessage createImageMail(Session session,MailBean mailBean) throws Exception {
195             //创建邮件对象
196             MimeMessage message = new MimeMessage(session);
197             //指明邮件的发件人
198             message.setFrom(new InternetAddress(mailBean.getFromUser()));
199             //指明邮件的收件人,现在发件人和收件人是一样的,那就是自己给自己发
200             message.setRecipient(Message.RecipientType.TO, new InternetAddress(mailBean.getToUser()));
201             //邮件标题
202             message.setSubject(mailBean.getTitel());
203
204             // 准备邮件数据
205             // 准备邮件正文数据
206             MimeBodyPart text = new MimeBodyPart();
207             text.setContent(mailBean.getContent(), "text/html;charset=UTF-8");
208             // 准备图片数据
209             MimeBodyPart image = new MimeBodyPart();
210             DataHandler dh = new DataHandler(new FileDataSource(mailBean.getFiles()[0]));
211             image.setDataHandler(dh);
212             image.setContentID("xxx.jpg");
213             // 描述数据关系
214             MimeMultipart mm = new MimeMultipart();
215             mm.addBodyPart(text);
216             mm.addBodyPart(image);
217             mm.setSubType("related");
218
219             message.setContent(mm);
220             message.saveChanges();
221             //将创建好的邮件写入到E盘以文件的形式进行保存
222             message.writeTo(new FileOutputStream("E:\\ImageMail.eml"));
223             //返回创建好的邮件
224             return message;
225         }
226
227         /**
228          * @Method: createAttachMail
229          * @Description: 创建一封带附件的邮件
230          * @Anthor:孤傲苍狼
231          *
232          * @param session
233          * @return
234          * @throws Exception
235          */
236         public static MimeMessage createAttachMail(Session session ,MailBean mailBean) throws Exception{
237             MimeMessage message = new MimeMessage(session);
238
239             //设置邮件的基本信息
240             //发件人
241             message.setFrom(new InternetAddress(mailBean.getFromUser()));
242             //收件人
243             message.setRecipient(Message.RecipientType.TO, new InternetAddress(mailBean.getToUser()));
244             //邮件标题
245             message.setSubject(mailBean.getTitel());
246
247             //创建邮件正文,为了避免邮件正文中文乱码问题,需要使用charset=UTF-8指明字符编码
248             MimeBodyPart text = new MimeBodyPart();
249             text.setContent(mailBean.getContent(), "text/html;charset=UTF-8");
250
251             if(mailBean.getFiles().length!=0){
252                 //创建邮件附件
253                 MimeBodyPart attach = new MimeBodyPart();
254                 DataHandler dh = new DataHandler(new FileDataSource(mailBean.getFiles()[0]));
255                 attach.setDataHandler(dh);
256                 attach.setFileName(dh.getName());  //
257
258                 //创建容器描述数据关系
259                 MimeMultipart mp = new MimeMultipart();
260                 mp.addBodyPart(text);
261                 mp.addBodyPart(attach);
262                 mp.setSubType("mixed");
263                 message.setContent(mp);
264                 message.saveChanges();
265                 //将创建的Email写入到E盘存储
266                 message.writeTo(new FileOutputStream("E:\\attachMail.eml"));
267
268             }
269             //返回生成的邮件
270             return message;
271
272     }
273
274         /**
275          * @Method: createMixedMail
276          * @Description: 生成一封带附件和带图片的邮件
277          * @Anthor:孤傲苍狼
278          *
279          * @param session
280          * @return
281          * @throws Exception
282          */
283         public static MimeMessage createMixedMail(Session session,MailBean mailBean) throws Exception {
284             //创建邮件
285             MimeMessage message = new MimeMessage(session);
286
287             //设置邮件的基本信息
288             message.setFrom(new InternetAddress(mailBean.getFromUser()));
289             message.setRecipient(Message.RecipientType.TO, new InternetAddress(mailBean.getToUser()));
290             message.setSubject(mailBean.getTitel());
291
292             //正文
293             MimeBodyPart text = new MimeBodyPart();
294             text.setContent(mailBean.getContent(),"text/html;charset=UTF-8");
295
296             //附件1
297             MimeBodyPart attach = new MimeBodyPart();
298             DataHandler dh = new DataHandler(new FileDataSource(mailBean.getFiles()[0]));
299             attach.setDataHandler(dh);
300             attach.setFileName(dh.getName());
301
302
303             //描述关系:正文和图片
304             MimeMultipart mp1 = new MimeMultipart();
305             mp1.addBodyPart(text);
306             mp1.setSubType("related");
307
308             //描述关系:正文和附件
309             MimeMultipart mp2 = new MimeMultipart();
310             mp2.addBodyPart(attach);
311
312             //代表正文的bodypart
313             MimeBodyPart content = new MimeBodyPart();
314             content.setContent(mp1);
315             mp2.addBodyPart(content);
316             mp2.setSubType("mixed");
317
318             message.setContent(mp2);
319             message.saveChanges();
320
321             message.writeTo(new FileOutputStream("E:\\MixedMail.eml"));
322             //返回创建好的的邮件
323             return message;
324
325     }
326
327     public static void main(String[] args) throws Exception {
328             String code="3869";
329             String company="睿牛逼科技无限公司";
330 //        User user=new User();
331         MailBean mailBean=new JavaMailUtil.MailBean();
332         mailBean.setAuth(true)
333                 .setHost("smtp.qq.com")
334                 .setProtocol("smtp")
335                 .setType(2)
336                 .setContent("<!DOCTYPE html>\n" +
337                         "<html>\n" +
338                         "<head>\n" +
339                         "<title></title>\n" +
340                         "<style>\n" +
341                         ".qmbox {\n" +
342                         "\tpadding: 0;\n" +
343                         "}\n" +
344                         ".qm_con_body_content {\n" +
345                         "\theight: auto;\n" +
346                         "\tmin-height: 100px;\n" +
347                         "\t_height: 100px;\n" +
348                         "\tword-wrap: break-word;\n" +
349                         "\tfont-size: 14px;\n" +
350                         "\tfont-family: \"lucida Grande\", Verdana, \"Microsoft YaHei\";\n" +
351                         "}\n" +
352                         ".body {\n" +
353                         "\tline-height: 170%;\n" +
354                         "}\n" +
355                         "BODY {\n" +
356                         "\tfont-family: \"lucida Grande\", Verdana, \"Microsoft YaHei\";\n" +
357                         "\tfont-size: 12px;\n" +
358                         "\t-webkit-font-smoothing: subpixel-antialiased;\n" +
359                         "}\n" +
360                         "BODY {\n" +
361                         "\tmargin: 0;\n" +
362                         "\tpadding: 0;\n" +
363                         "}\n" +
364                         "BODY {\n" +
365                         "\tbackground-color: #fff;\n" +
366                         "\tfont-size: 12px;\n" +
367                         "}\n" +
368                         "BODY {\n" +
369                         "\tbackground: #fff;\n" +
370                         "}\n" +
371                         "BODY {\n" +
372                         "\tbackground: #fff;\n" +
373                         "\tcolor: #000;\n" +
374                         "\tfont-weight: normal;\n" +
375                         "\tfont-family: \"lucida Grande\", Verdana, \"Microsoft YaHei\";\n" +
376                         "\tpadding: 0 7px 6px 4px;\n" +
377                         "\tmargin: 0;\n" +
378                         "}\n" +
379                         "HTML {\n" +
380                         "\ttop: 0px;\n" +
381                         "}\n" +
382                         ".body P {\n" +
383                         "\tline-height: 170%;\n" +
384                         "}\n" +
385                         "</style>\n" +
386                         "</head>\n" +
387                         "\n" +
388                         "<BODY mu=\"mu\" md=\"md\" module=\"qmReadMail\" context=\"ZC1912-rQ7uXSy7P7HThxdLFCOuY92\"><DIV class=mailcontainer id=qqmail_mailcontainer>\n" +
389                         "<DIV id=mainmail style=\"MARGIN-BOTTOM: 12px; POSITION: relative; Z-INDEX: 1\">\n" +
390                         "<DIV class=body id=contentDiv style=\"FONT-SIZE: 14px; HEIGHT: auto; POSITION: relative; ZOOM: 1; PADDING-BOTTOM: 10px; PADDING-TOP: 15px; PADDING-LEFT: 15px; Z-INDEX: 1; LINE-HEIGHT: 1.7; PADDING-RIGHT: 15px\" onmouseover=getTop().stopPropagation(event); onclick=\"getTop().preSwapLink(event, ‘html‘, ‘ZC1912-rQ7uXSy7P7HThxdLFCOuY92‘);\">\n" +
391                         "<DIV id=qm_con_body>\n" +
392                         "<DIV class=\"qmbox qm_con_body_content qqmail_webmail_only\" id=mailContentContainer>\n" +
393                         "<DIV class=main style=\"OVERFLOW: hidden; WIDTH: 100%; BACKGROUND-COLOR: #f7f7f7\">\n" +
394                         "<DIV class=content style=\"BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; BACKGROUND: #ffffff; BORDER-BOTTOM: #cccccc 1px solid; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; PADDING-LEFT: 25px; BORDER-LEFT: #cccccc 1px solid; MARGIN: 50px; PADDING-RIGHT: 25px\">\n" +
395                         "<DIV class=header style=\"MARGIN-BOTTOM: 30px\">\n" +
396                         "<P>亲爱的用户:</P></DIV>\n" +
397                         "<P>您好!您正在进行邮箱验证,本次请求的验证码为:</P>\n" +
398                         "<P><SPAN style=\"FONT-SIZE: 18px; FONT-WEIGHT: bold; COLOR: #f90\">"+code+"</SPAN><SPAN style=\"COLOR: #000000\">(为了保障您帐号的安全性,请在10分钟内完成验证)</SPAN></P>\n" +
399                         "<DIV class=footer style=\"MARGIN-TOP: 30px\">\n" +
400                         "<P>"+company+"</P>\n" +
401                         "<P><SPAN style=\"BORDER-BOTTOM: #ccc 1px dashed; POSITION: relative; _display: inline-block\" t=\"5\" times=\"\" isout=\"0\">2019-02-12</SPAN></P></DIV>\n" +
402                         "<DIV class=tip style=\"COLOR: #cccccc; TEXT-ALIGN: center\">该邮件为系统自动发送,请勿进行回复 </DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></BODY>\n" +
403                         "</html>\n")
404                 .setFromUser("tian.**[email protected]")
405                 .setToUser("510002**[email protected]")
406                 .setTitel("邮箱验证")
407                 .setUserName("tian.**[email protected]")
408                 .setPassword("lbcrovywudilebje")
409                 .setFiles(new File[]{new File("E:/nginx-1.14.2.zip")});
410
411         Sendmail(mailBean);
412     }
413
414 }

原文地址:https://www.cnblogs.com/xdp-gacl/p/4216311.html

原文地址:https://www.cnblogs.com/hxz-nl/p/10795173.html

时间: 2024-11-10 09:15:30

JavaMail 实现发送验证码,带验证码模板的的相关文章

程序君带你畅聊发送短信验证码

现在不管是网站,还是app等互联网和移动互联网产品,绝大部分注册都是直接用手机号注册登录的,方式就是给手机发送短信验证码,然后把验证码填入,后台程序去匹配判断用户填入的验证码和发送的是否一致. 我最近做的好几个项目都用到了发送短信验证码的这个第三方接口,其实这个发送验证码的原理很简单,实现也很简单. 如下三个图,是我做的其中一个项目的相关效果截图: 我用的比较多的第三方短信接口是容联-云通讯的(http://www.yuntongxun.com/),它的API挺强大的,也挺稳定的,使用也不难,有

织梦dedecms网站给自定义表单加dede模板自带验证码的方法。

有时候,我们因为需要给dede网站的自定义表单添加验证码,防止恶意填写表单提交. 我们可以用以下的方法来实现: 首先,我们要找到 /plus/diy.php 这个文件 在头部引入文件: require_once(DEDEINC.'/membermodel.cls.php'); 然后找到 elseif($do == 2) {  在这个地方加入代码块 //验证码验证 $svali = GetCkVdValue(); if(preg_match("/1/",$safe_gdopen)){ i

[转载]python实现带验证码网站的自动登陆

    原文地址:python实现带验证码网站的自动登陆作者:TERRY-V 早听说用python做网络爬虫非常方便,正好这几天单位也有这样的需求,需要登陆XX网站下载部分文档,于是自己亲身试验了一番,效果还不错. 本例所登录的某网站需要提供用户名,密码和验证码,在此使用了python的urllib2直接登录网站并处理网站的Cookie. Cookie的工作原理: Cookie由服务端生成,然后发送给浏览器,浏览器会将Cookie保存在某个目录下的文本文件中.在下次请求同一网站时,会发送该Coo

阿里云短信服务发送短信验证码(JAVA开发此功能)

开发此功能需注册阿里云账号,并开通短信服务(免费开通) 充值后,不会影响业务的正常使用!(因为发送验证类短信:1-10万范围的短信是0.045元/条).开发测试使用,充2块钱测试足够了 可参考阿里云官方开发文档了解详情,文档中写的也是很详细了... https://help.aliyun.com/product/44282.html 代码编写之前需要准备几个东西 1,aliyun-java-sdk-core.jar ,  aliyun-java-sdk-dysmsapi.jar  这2个jar包

还有人不认识通讯诈骗,短信验证码带你认识一下

首先进行一下自我介绍,短信验证码本码.短信验证码:网站或者客户端应用需要接入短信验证码(手机验证码)的功能,可以实现注册用户的手机号码正确性校验,确保用户填写的手机号码的真实性.现在已经完全融入了大家的日常生活,成为其中不可或缺的一部分. 实现原理:发送短信的服务一般是由第三方短信服务商提供的,系统先生成一个验证码,调用第三方服务商的短信接口,发送到手机方,手机方输入验证码,再由系统去校验是否符合,符合则说明手机真实有效. 技术核心是:后台下发一条随机码X,网页客户端通过算法将用户信息和随机码X

python利用第三方模块,发送短信验证码

对于初学者,如何利用第三方python开发包发送短信验证码,下面是具体的实现和记录过程! 环境:虚拟机上centos7平台,python3.7版本: 第三方短信平台:榛子云短信(smsow.zhenzikj.com) SDK下载地址: smsow.zhenzikj.com/sdkdownload- 注意要下载python3的 API文档: smsow.zhenzikj.com/doc/python_- 首先,申请账号的部分就省略了 1. 获得appid和appSecret 使用申请的账号,登录用

【Python web 开发】云片网发送短信验证码

发送短信验证码 是要使用第三方服务的,运营商是不可能提供对外的个人发送短信服务功能,我们本身也没有能力去发送验证码,云片网是目前提供这种服务使用率较高的服务商之一 我们先来看下云片网国内单条发送短信的api 根据api 写了一个脚本,这个appkey 我还没申请 如何使用云片网发送短信? 1.首选要申请签名 + 填写 短信模板 2.签名审核,短信模板审核 3.一定要将自己的服务器的ip地址填写到  [云片网--设置--ip 白名单--添加服务器的IP地址] 不然会发送失败 本机测试查到本机的IP

微信小程序发送短信验证码完整实例

微信小程序注册完整实例,发送短信验证码,带60秒倒计时功能,无需服务器端.效果图: 代码: index.wxml <!--index.wxml--> <view class="container"> <view class='row'> <input placeholder='请输入姓名' bindinput='bindNameInput'/> </view> <view class='row'> <inpu

使用阿里云短信服务发送短信验证码

阿里云短发服务使用流程: 1.在阿里云上完成短信服务的购买. 2.导入相关的jar包. <!-- 阿里云短信服务 --> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <version>4.1.0</version> </dependency> <!-- 阿里云短

php使用curl模拟登录带验证码的网站

需求是这样的,需要登录带验证码的网站,获取数据,但是不可能人为一直去记录数据,想通过自动采集的方式进行,如下是试验出来的结果代码!有需要的可以参考下! <?php namespace Home\Controller; use Think\Controller; class LoginController extends Controller { protected $cookieName = array('cookie_verify', 'cookie_verify'); protected $