struts实现邮件发送功能

匿名 (未验证) 提交于 2019-12-03 00:32:02

在实现邮件发送的时候首先需要用到mail.jar开发包,有关mail.jar的下载可以去百度自行下载

下面是邮件发送核心代码

  1 package com.yysj.lhb.action;   2    3 import javax.activation.DataHandler;   4 import javax.activation.FileDataSource;   5 import javax.mail.Address;   6 import javax.mail.BodyPart;   7 import javax.mail.Message;   8 import javax.mail.Multipart;   9 import javax.mail.internet.InternetAddress;  10 import javax.mail.internet.MimeBodyPart;  11 import javax.mail.internet.MimeMessage;  12 import javax.mail.internet.MimeMultipart;  13 import javax.mail.internet.MimeUtility;  14 import javax.mail.Session;  15 import javax.mail.Transport;  16   17 import java.util.List;  18 import java.util.Properties;  19   20 /**  21  * 发送邮箱信息  22  * @author lhb  23  *  24  */  25 public class EmailSender {  26   27     private static final long serialVersionUID = 1L;  28     private MimeMessage mimeMessage;//MiME邮件对象  29     private Session session;//邮件会话对象;  30     private Properties properties;//系统属性  31     private boolean needAuth = false;//smtp是否需要认证  32     private String username="";//stmp认证用户和密码  33     private String password="";  34     private Multipart multipart;//Multipart对象,邮件内容,标题附件等内容添加到其中后再生成  35     private String log;  36       37     public EmailSender() {  38           39     }  40       41     public EmailSender(String smtp) {  42         setSmtpHost(smtp);  43         createMimeMessage();  44     }  45       46     /**  47      * 设置系统属性  48      * @param hostName 主机名  49      */  50     public void setSmtpHost(String hostName) {  51         System.out.println("系统属性:mail.smtp.host="+hostName);  52         if(properties == null) {  53             properties = System.getProperties();//获取系统属性对象  54         }  55         properties.put("mail.smtp.host", hostName);  56         properties.put("mail smtp.localhost", "localHostAddress");      57     }  58       59     /**  60      * 创建Mime信息  61      * @return 成功返回true;否则返回false  62      */  63     public boolean createMimeMessage() {  64         try {  65             System.out.println("准备获取邮件会话对象");  66             session = Session.getDefaultInstance(properties, null);//获取右键会话对象  67         } catch (Exception e) {  68             log = "获取邮件会话对象时发生错误!"+e.toString();  69             System.err.println(log);  70             return false;  71         }  72         try {  73             mimeMessage = new MimeMessage(session);//创建MIME邮件对象  74             multipart = new MimeMultipart();//  75             //Multipart is a container that holds multiple body parts  76             return true;  77         } catch (Exception e) {  78             log = "创建MIME邮件对象失败!"+e.toString();  79             System.err.println(log);  80             return false;  81         }  82     }  83       84     /**  85      * 设置身份认证  86      * @param need  87      */  88     public void setNeedAuth(boolean need) {  89         needAuth = need;  90         System.out.println("设置smtp身份认证:mail.smtp.auth="+need);  91         if(properties == null) {  92             properties = System.getProperties();  93         }  94         if(needAuth) {  95             properties.put("mail.smtp.auth", "true");  96         }else {  97             properties.put("mail.smtp.auth", "false");  98         }  99     } 100      /** 101       * 设置用户名和密码 102       * @param name 103       * @param pass 104       */ 105     public void setNamePass(String name,String pass) { 106         System.out.println("得到用户名和密码"); 107         username = name; 108         password = pass; 109     } 110      111     /** 112      * 设置邮件主题 113      * @param mailSubject 114      * @return 115      */ 116     public boolean setSubject(String mailSubject) { 117         System.out.println("设置邮件主题"); 118         try { 119             mimeMessage.setSubject(MimeUtility.encodeText(mailSubject, "utf-8", "B")); 120             return true; 121         } catch (Exception e) { 122             log = "设置邮件主题发生错误!"+ e; 123             System.err.println(log); 124             return false; 125         } 126     } 127      128     /** 129      * 设置邮件正文 130      * @param mailBody 正文内容 131      * @return 设置成功返回true;否则返回false 132      */ 133     public boolean setBody(String mailBody) { 134         try { 135             System.out.println("设置邮件体格式"); 136             BodyPart bPart = new MimeBodyPart(); 137             //转换中文格式 138             bPart.setContent("<meta http-equiv=Content-Type content=text/html;charset=utf-8>"+mailBody, "text/html;charset=utf-8"); 139             multipart.addBodyPart(bPart); 140             return true; 141         } catch (Exception e) { 142             log = "设置邮件正文发生错误!"+e; 143             System.err.println(log); 144             return false; 145         } 146     } 147     /** 148      * 设置附件 149      * @param files 150      * @return 151      */ 152     public boolean setFiles(List<String> files) { 153         try { 154             for(String s : files) { 155                 MimeBodyPart mimeBodyPart = new MimeBodyPart(); 156                 FileDataSource fileDataSource = new FileDataSource(s);//得到数据源 157                 mimeBodyPart.setDataHandler(new DataHandler(fileDataSource));//得到附件本身并植入BodyPart 158                 mimeBodyPart.setFileName(fileDataSource.getName());//得到文件名同样植入BodyPart 159                 multipart.addBodyPart(mimeBodyPart); 160             } 161             return true; 162         } catch (Exception e) { 163             log = "增加附件时出错!"+e; 164             System.err.println(log); 165             return false; 166         } 167     } 168      169     /** 170      * 按路径添加附件 171      * @param path 172      * @param name 173      * @return 174      */ 175     public boolean addFile(String path,String name) { 176          177         try { 178             MimeBodyPart mimeBodyPart = new MimeBodyPart(); 179             FileDataSource fileDataSource = new FileDataSource(path);//得到数据源 180             mimeBodyPart.setDataHandler(new DataHandler(fileDataSource));//得到附件本身并注入BodyPart 181             mimeBodyPart.setFileName(MimeUtility.encodeText(name,"utf-8","B")); 182             multipart.addBodyPart(mimeBodyPart); 183             return true; 184         } catch (Exception e) { 185             log = "增加附件出错"+e; 186             System.err.println(log); 187             return false; 188         } 189          190     } 191      192     /** 193      * 设置发信人 194      * @param from 发信人名称 195      * @return 196      */ 197     public boolean setFrom(String from) { 198         System.out.println("设置发信人"); 199         try { 200             mimeMessage.setFrom(new InternetAddress(from));//设置发信人 201             return true; 202         } catch (Exception e) { 203             log = "设置发言人出错"+e; 204             return false; 205         } 206     } 207      208     /** 209      * 设置收件人 210      * @param to 211      * @return 212      */ 213     public boolean setTo(String to) { 214         System.out.println("设置收件人"); 215         if(to == null) { 216             return false; 217         } 218         try { 219             mimeMessage.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to)); 220             return true; 221         } catch (Exception e) { 222             log = "设置收件人错误"+e; 223             System.err.println(log); 224             return false; 225         } 226     } 227      228     /** 229      *  230      * @param copyto 231      * @return 232      */ 233     public boolean setCopyTo(String copyto) { 234         if(copyto == null) { 235             return false; 236         } 237         try { 238             mimeMessage.setRecipients(Message.RecipientType.CC, (Address[])InternetAddress.parse(copyto)); 239             return true; 240         } catch (Exception e) { 241             e.printStackTrace(); 242             return false; 243         } 244     } 245      246     /** 247      * 发送邮件 248      * @return 249      */ 250     public boolean sendout() { 251         try { 252             mimeMessage.setContent(multipart); 253             mimeMessage.saveChanges(); 254             System.out.println("正在发送邮件..."); 255             Session mailSession = Session.getInstance(properties,null); 256             Transport transport = mailSession.getTransport("smtp"); 257             transport.connect((String)properties.get("mail.smtp.host"), username, password); 258             transport.sendMessage(mimeMessage, mimeMessage.getRecipients(Message.RecipientType.TO)); 259             System.out.println("发送邮件成功!"); 260             transport.close(); 261             return true; 262         } catch (Exception e) { 263             log = "邮件发送失败!"+e; 264             System.err.println(log); 265             return false; 266         } 267     } 268      269     public String getLog() { 270         return log; 271     } 272      273      274 }
Java代码

action中的代码如下:

 

jsp代码

 1 <div class="question_form_1">  2                     <form action="questionForm" method="get" name="form1">  3                         <div class="question_form_1_"  style="color: #6e6e6e;">  4                             <h3>有什么需要解惑? </h3>  5                             <textarea class="question_form_youquestion" rows="10" cols="100" id="question_Text" name="question_Text" placeholder="请描述您的问题,比如:心脏前负荷和后负荷有什么区别?动脉血气如何分析? 什么是膜性肾病?"></textarea>  6                              7                         <div class="question_form_1_" style="color: #6e6e6e;">  8                             <h3>回复的邮箱或者手机号码</h3>  9                             <input class="question_form_contactyou" id="contact_Customer" name="contact_Customer" type="text" placeholder="请输入您的联系方式" /> 10                         </div>   11                         <div class="btn_div"> 12                             <input type="submit" id="submit" value="发 送" class="btn" /> 13                         </div> 14                     </form> 15                 </div>
View Code

页面

原文:https://www.cnblogs.com/lihuibin/p/9215422.html

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!