• 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>
    " +
    337                         "<html>
    " +
    338                         "<head>
    " +
    339                         "<title></title>
    " +
    340                         "<style>
    " +
    341                         ".qmbox {
    " +
    342                         "	padding: 0;
    " +
    343                         "}
    " +
    344                         ".qm_con_body_content {
    " +
    345                         "	height: auto;
    " +
    346                         "	min-height: 100px;
    " +
    347                         "	_height: 100px;
    " +
    348                         "	word-wrap: break-word;
    " +
    349                         "	font-size: 14px;
    " +
    350                         "	font-family: "lucida Grande", Verdana, "Microsoft YaHei";
    " +
    351                         "}
    " +
    352                         ".body {
    " +
    353                         "	line-height: 170%;
    " +
    354                         "}
    " +
    355                         "BODY {
    " +
    356                         "	font-family: "lucida Grande", Verdana, "Microsoft YaHei";
    " +
    357                         "	font-size: 12px;
    " +
    358                         "	-webkit-font-smoothing: subpixel-antialiased;
    " +
    359                         "}
    " +
    360                         "BODY {
    " +
    361                         "	margin: 0;
    " +
    362                         "	padding: 0;
    " +
    363                         "}
    " +
    364                         "BODY {
    " +
    365                         "	background-color: #fff;
    " +
    366                         "	font-size: 12px;
    " +
    367                         "}
    " +
    368                         "BODY {
    " +
    369                         "	background: #fff;
    " +
    370                         "}
    " +
    371                         "BODY {
    " +
    372                         "	background: #fff;
    " +
    373                         "	color: #000;
    " +
    374                         "	font-weight: normal;
    " +
    375                         "	font-family: "lucida Grande", Verdana, "Microsoft YaHei";
    " +
    376                         "	padding: 0 7px 6px 4px;
    " +
    377                         "	margin: 0;
    " +
    378                         "}
    " +
    379                         "HTML {
    " +
    380                         "	top: 0px;
    " +
    381                         "}
    " +
    382                         ".body P {
    " +
    383                         "	line-height: 170%;
    " +
    384                         "}
    " +
    385                         "</style>
    " +
    386                         "</head>
    " +
    387                         "
    " +
    388                         "<BODY mu="mu" md="md" module="qmReadMail" context="ZC1912-rQ7uXSy7P7HThxdLFCOuY92"><DIV class=mailcontainer id=qqmail_mailcontainer>
    " +
    389                         "<DIV id=mainmail style="MARGIN-BOTTOM: 12px; POSITION: relative; Z-INDEX: 1">
    " +
    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');">
    " +
    391                         "<DIV id=qm_con_body>
    " +
    392                         "<DIV class="qmbox qm_con_body_content qqmail_webmail_only" id=mailContentContainer>
    " +
    393                         "<DIV class=main style="OVERFLOW: hidden; WIDTH: 100%; BACKGROUND-COLOR: #f7f7f7">
    " +
    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">
    " +
    395                         "<DIV class=header style="MARGIN-BOTTOM: 30px">
    " +
    396                         "<P>亲爱的用户:</P></DIV>
    " +
    397                         "<P>您好!您正在进行邮箱验证,本次请求的验证码为:</P>
    " +
    398                         "<P><SPAN style="FONT-SIZE: 18px; FONT-WEIGHT: bold; COLOR: #f90">"+code+"</SPAN><SPAN style="COLOR: #000000">(为了保障您帐号的安全性,请在10分钟内完成验证)</SPAN></P>
    " +
    399                         "<DIV class=footer style="MARGIN-TOP: 30px">
    " +
    400                         "<P>"+company+"</P>
    " +
    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>
    " +
    402                         "<DIV class=tip style="COLOR: #cccccc; TEXT-ALIGN: center">该邮件为系统自动发送,请勿进行回复 </DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></BODY>
    " +
    403                         "</html>
    ")
    404                 .setFromUser("tian.**.1995@qq.com")
    405                 .setToUser("510002**94@qq.com")
    406                 .setTitel("邮箱验证")
    407                 .setUserName("tian.**.1995@qq.com")
    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

  • 相关阅读:
    LeetCode 50: Pow(x, n)
    Codility 1: equilibrium
    LeetCode 49: Anagrams
    crackme160--(5)
    crackme160--(4)
    魔兽显血改键工具的脱壳和修改
    crackme160--(3)
    crackme160--(1)
    python-装饰器
    编程语言C++01-C++入门学习路线
  • 原文地址:https://www.cnblogs.com/hxz-nl/p/10795173.html
Copyright © 2020-2023  润新知