spring roo 开发meavn项目(五)后台发送邮件功能
来源:互联网 发布:中国宠物市场数据分析 编辑:程序博客网 时间:2024/05/20 21:22
注意用于发送邮件的发件邮箱需要设置开启stmp服务
pom文件中增加引用包
<span style="white-space:pre"></span><dependency><groupId>javax.mail</groupId><artifactId>mail</artifactId><version>1.4.7</version></dependency>
邮件类
package com.collegepatent.util;import java.util.List; import java.util.Properties; public class MailBean { // 发送邮件的服务器的IP和端口 private String mailServerHost; private String mailServerPort = "25"; // 邮件发送者的地址 private String fromAddress; // 邮件接收者的地址 private List<String> toAddress; // 登陆邮件发送服务器的用户名和密码 private String userName; private String password; // 是否需要身份验证 private boolean validate = false; // 邮件主题 private String subject; // 邮件的文本内容 private String content; // 邮件附件的文件名 private List<String> attachFileNames; /** * 获得邮件会话属性 */ public Properties getProperties(){ Properties p = new Properties(); p.put("mail.smtp.host", this.mailServerHost); p.put("mail.smtp.port", this.mailServerPort); p.put("mail.smtp.auth", validate ? "true" : "false"); p.put("mail.mime.address.strict", "false"); return p; } public String getMailServerHost() { return mailServerHost; } public void setMailServerHost(String mailServerHost) { this.mailServerHost = mailServerHost; } public String getMailServerPort() { return mailServerPort; } public void setMailServerPort(String mailServerPort) { this.mailServerPort = mailServerPort; } public String getFromAddress() { return fromAddress; } public void setFromAddress(String fromAddress) { this.fromAddress = fromAddress; } public List<String> getToAddress() { return toAddress; } public void setToAddress(List<String> toAddress) { this.toAddress = toAddress; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public boolean isValidate() { return validate; } public void setValidate(boolean validate) { this.validate = validate; } public String getSubject() { return subject; } public void setSubject(String subject) { this.subject = subject; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } public List<String> getAttachFileNames() { return attachFileNames; } public void setAttachFileNames(List<String> attachFileNames) { this.attachFileNames = attachFileNames; } }
邮件验证类
package com.collegepatent.util;import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.List; import javax.mail.Authenticator; import javax.mail.PasswordAuthentication; public class MailAuthenticator extends Authenticator{ String userName=null; String password=null; public MailAuthenticator(){ } public MailAuthenticator(String username, String password) { this.userName = username; this.password = password; } protected PasswordAuthentication getPasswordAuthentication(){ return new PasswordAuthentication(userName, password); } }邮件操作类
package com.collegepatent.util;import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Properties; import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.mail.Address; import javax.mail.BodyPart; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Multipart; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; import javax.mail.internet.MimeUtility; public class MailOperate { /** * 以文本格式发送邮件 * @param mailInfo 待发送的邮件的信息 */ public boolean sendTextMail(MailBean mailInfo) { // 判断是否需要身份认证 MailAuthenticator authenticator = null; Properties pro = mailInfo.getProperties(); if (mailInfo.isValidate()) { // 如果需要身份认证,则创建一个密码验证器 authenticator = new MailAuthenticator(mailInfo.getUserName(), mailInfo.getPassword()); } // 根据邮件会话属性和密码验证器构造一个发送邮件的session Session sendMailSession = Session.getDefaultInstance(pro,authenticator); try { // 根据session创建一个邮件消息 Message mailMessage = new MimeMessage(sendMailSession); // 创建邮件发送者地址 Address from = new InternetAddress(mailInfo.getFromAddress()); // 设置邮件消息的发送者 mailMessage.setFrom(from); // 创建邮件的接收者地址,并设置到邮件消息中 List<String> toAddress=null; if(mailInfo.getToAddress().size()>1){ toAddress=mailInfo.getToAddress(); Address[] address =new InternetAddress[toAddress.size()]; for (int i = 0; i < toAddress.size(); i++) { address[i]=new InternetAddress(toAddress.get(i)); } mailMessage.setRecipients(Message.RecipientType.TO,address); }else{ toAddress=mailInfo.getToAddress(); Address to = new InternetAddress(toAddress.get(0)); // Message.RecipientType.TO属性表示接收者的类型为TO mailMessage.setRecipient(Message.RecipientType.TO,to); } // 设置邮件消息的主题 mailMessage.setSubject(mailInfo.getSubject()); // 设置邮件消息发送的时间 mailMessage.setSentDate(new Date()); // 设置邮件消息的主要内容 String mailContent = mailInfo.getContent(); mailMessage.setText(mailContent); // 发送邮件 Transport.send(mailMessage); return true; } catch (MessagingException ex) { ex.printStackTrace(); } return false; } /** * 以HTML格式发送邮件 * @param mailInfo 待发送的邮件信息 * @throws UnsupportedEncodingException */ public static boolean sendHtmlMail(MailBean mailInfo) throws UnsupportedEncodingException{ // 判断是否需要身份认证 MailAuthenticator authenticator = null; Properties pro = mailInfo.getProperties(); //如果需要身份认证,则创建一个密码验证器 if (mailInfo.isValidate()) { authenticator = new MailAuthenticator(mailInfo.getUserName(), mailInfo.getPassword()); } // 根据邮件会话属性和密码验证器构造一个发送邮件的session Session sendMailSession = Session.getDefaultInstance(pro,authenticator); try { // 根据session创建一个邮件消息 Message mailMessage = new MimeMessage(sendMailSession); // 创建邮件发送者地址 Address from = new InternetAddress(mailInfo.getFromAddress()); // 设置邮件消息的发送者 mailMessage.setFrom(from); // 创建邮件的接收者地址,并设置到邮件消息中 List<String> toAddress=null; if(mailInfo.getToAddress().size()>1){ toAddress=mailInfo.getToAddress(); Address[] address =new InternetAddress[toAddress.size()]; for (int i = 0; i < toAddress.size(); i++) { address[i]=new InternetAddress(toAddress.get(i)); } mailMessage.setRecipients(Message.RecipientType.TO,address); }else{ toAddress=mailInfo.getToAddress(); Address to = new InternetAddress(toAddress.get(0)); // Message.RecipientType.TO属性表示接收者的类型为TO mailMessage.setRecipient(Message.RecipientType.TO,to); } // 设置邮件消息的主题 mailMessage.setSubject(mailInfo.getSubject()); // 设置邮件消息发送的时间 mailMessage.setSentDate(new Date()); // MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象 Multipart mainPart = new MimeMultipart(); // 创建一个包含HTML内容的MimeBodyPart BodyPart html = new MimeBodyPart(); // 设置HTML内容 html.setContent(mailInfo.getContent(), "text/html; charset=utf-8"); mainPart.addBodyPart(html); if(mailInfo.getAttachFileNames()!=null){ List<String> attachFileNames = mailInfo.getAttachFileNames(); for (String path : attachFileNames) { html=new MimeBodyPart(); FileDataSource fds=new FileDataSource(path); //得到数据源 html.setDataHandler(new DataHandler(fds)); //得到附件本身并至入BodyPart //此处是为了解决附件中文名乱码的问题 String fileName= MimeUtility.encodeText(fds.getName()); html.setFileName(fileName); //得到文件名同样至入BodyPart mainPart.addBodyPart(html); } } // 将MiniMultipart对象设置为邮件内容 mailMessage.setContent(mainPart); // 发送邮件 Transport.send(mailMessage); return true; } catch (MessagingException ex) { ex.printStackTrace(); } return false; } }
发送邮件示例
/** * 发送邮件 * * @author xc */ @RequestMapping(method = RequestMethod.GET, value = "send", produces = "application/json")@ResponseBody public Object send(){ //设置邮件 MailBean mailInfo = new MailBean(); mailInfo.setMailServerHost("smtp.sina.com"); mailInfo.setMailServerPort("25"); mailInfo.setValidate(true); //发件人账户和密码 mailInfo.setUserName("******"); mailInfo.setPassword("*******");//您的邮箱密码 mailInfo.setFromAddress("*********"); //收件人地址 List<String> address = new ArrayList<String>(); address.add("8111974@qq.com"); mailInfo.setToAddress(address); mailInfo.setSubject("专利申请"); mailInfo.setContent("邮件测试案例已经发到邮箱,请查收,项目中用到了两个jar包,用的时候一并导入即可"); List<String> attachFileNames = new ArrayList<String>(); //此处是你要得到的上传附件的文件路径 attachFileNames.add("\\test123.docx"); mailInfo.setAttachFileNames(attachFileNames); //这个类主要来发送邮件 MailOperate sms = new MailOperate(); //sms.sendTextMail(mailInfo);//发送文体格式 try { //采取html格式发送 sms.sendHtmlMail(mailInfo); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); }//发送html格式 return true; }
0 0
- spring roo 开发meavn项目(五)后台发送邮件功能
- spring roo 开发meavn项目(二)后台返回map,list自动转换json格式
- spring roo 开发meavn项目(一)使用工具搭建项目
- spring roo 开发meavn项目(三)分页读取数据示例
- spring roo 开发meavn项目(四)文件操作:上传,下载,本地复制,删除文件
- spring roo 开发meavn项目(六)文件夹及子文件夹下载
- Spring邮件发送功能
- Spring Roo开发初评
- Spring Roo开发初评
- spring 发送邮件功能示例
- 使用Spring Roo构建项目
- java后台实现发送邮件的功能
- Spring实现JavaMail邮件发送功能和InitializingBean(1)
- Spring实现JavaMail邮件发送功能和InitializingBean(2)
- 通用邮件自动发送Winform控件开发(五)
- Spring实现JavaMail邮件发送功能
- 使用spring的邮件发送功能
- Spring实现JavaMail邮件发送功能
- Python 学习笔记三 操作PostgreSQL数据库
- 【VS开发】循序渐进学习使用WINPCAP(一)
- iOS 10 个实用小技巧(总有你不知道的和你会用到的)
- SDUT 3343 数据结构实验之二叉树四:还原二叉树
- vs2012 未能加载visual c++ language manager package
- spring roo 开发meavn项目(五)后台发送邮件功能
- 【代码编辑工具】Source Insight的使用
- ROS_Xmlrpc++ 简单示例
- 对程序员最好的建议是什么?
- 1.深入浅出Java垃圾回收机制
- JSP九大内置对象及四个作用域(一)
- 2016多校联赛2D La Vie en rose(hdu 5745)
- Launcher3 HotSeat显示名称
- Linux内核中的中断栈与内核栈的补充说明