zoukankan      html  css  js  c++  java
  • java mail包括多个附件

    参考网站:http://www.open-open.com/code/view/1420037773921

    http://blog.sina.com.cn/s/blog_59ca2c2a01013800.html

    一,参数类

    package com.camelot.util.mail;

    import java.util.Properties;
    import java.util.Vector;

    import javax.mail.internet.MimeUtility;

    /**
    * <p>Description: [邮件util]</p>
    * Created on 2017年1月5日
    * @author <a href="mailto: wnaghaibo@camelotchina.com">王海波</a>
    * @version 2.0
    * Copyright (c) 2017 北京柯莱特科技有限公司
    */
    public class MailSenderInfo {
    // 发送邮件的服务器的IP(或主机地址)
    private String mailServerHost;
    // 发送邮件的服务器的端口
    private String mailServerPort;
    // 发件人邮箱地址
    private String fromAddress;
    // 收件人邮箱地址
    private String toAddress;
    // 登陆邮件发送服务器的用户名
    private String userName;
    // 登陆邮件发送服务器的密码
    private String password;
    // 是否需要身份验证
    private boolean validate = false;
    // 邮件主题
    private String subject;
    // 邮件的文本内容
    private String content;
    // 邮件附件的文件名
    private String[] attachFileNames;

    Vector file = new Vector();// 附件文件集合

    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");
    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 boolean isValidate() {
    return validate;
    }
    public void setValidate(boolean validate) {
    this.validate = validate;
    }
    public String getFromAddress() {
    return fromAddress;
    }
    public void setFromAddress(String fromAddress) {
    this.fromAddress = fromAddress;
    }
    public String getPassword() {
    return password;
    }
    public void setPassword(String password) {
    this.password = password;
    }
    public String getToAddress() {
    return toAddress;
    }
    public void setToAddress(String toAddress) {
    this.toAddress = toAddress;
    }
    public String getUserName() {
    return userName;
    }
    public void setUserName(String userName) {
    this.userName = userName;
    }
    public String getSubject() {
    return subject;
    }
    public void setSubject(String subject) {
    this.subject = subject;
    }
    public String getContent() {
    return content;
    }
    public void setContent(String textContent) {
    this.content = textContent;
    }
    /**
    * <br>
    * 方法说明:把主题转换为中文 <br>
    * 输入参数:String strText <br>
    * 返回类型:
    */
    public String transferChinese(String strText) {
    try {
    strText = MimeUtility.encodeText(new String(strText.getBytes(),
    "GB2312"), "GB2312", "B");
    } catch (Exception e) {
    e.printStackTrace();
    }
    return strText;
    }
    public void attachfile(String attachFileNames) {
    file.addElement(attachFileNames);
    }
    public String[] getAttachFileNames() {
    return attachFileNames;
    }
    public void setAttachFileNames(String[] attachFileNames) {
    this.attachFileNames = attachFileNames;
    }

    }

    二,发送邮件类

    package com.camelot.util.mail;

    import java.io.File;
    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.annotation.Resource;
    import javax.mail.Address;
    import javax.mail.BodyPart;
    import javax.mail.Message;
    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;
    import javax.servlet.http.HttpServletRequest;

    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;

    import com.camelot.ituber.sdk.export.dto.ResStandardResumeDTO;
    import com.camelot.ituber.sdk.export.service.ResStandardResumeExportService;
    import com.camelot.openplatform.common.bean.ExecuteResult;
    import com.camelot.util.resume.PropertiesUtil;

    /**
    * <p>Description: [发送邮件]</p>
    * Created on 2017年1月5日
    */
    @Controller
    @RequestMapping(value="/SimpleMailSender")
    public class SimpleMailSender {
    @Resource
    private ResStandardResumeExportService resStandardExportService;

    /**
    * 发送邮件
    * 需传入附件id集合
    * 标准简历数据
    * mailInfo邮件类初始化数据
    * @param mailInfo
    * @param resStandardResume
    * @return
    */
    @RequestMapping(value="/sendMail")
    public ExcameStatus sendMail(HttpServletRequest request,MailSenderInfo mailInfo,ResStandardResumeDTO resStandardResume) {
    List<Integer> l = new ArrayList<Integer>();
    l.add(11);
    resStandardResume.setIds(l);
    ExcameStatus es = new ExcameStatus();
    List<Integer> list = resStandardResume.getIds();
    List<ResStandardResumeDTO> resumeList = new ArrayList<ResStandardResumeDTO>();
    //获取标准简历附件数据放入list
    for (int i = 0; i < list.size(); i++) {
    ExecuteResult<ResStandardResumeDTO> primaryKey = new ExecuteResult<ResStandardResumeDTO>();
    if(list.get(i)!=null&&list.get(i)>0){
    primaryKey = resStandardExportService.selectByResId(list.get(i));
    if(primaryKey.getResult()!=null){
    resumeList.add(primaryKey.getResult());
    }
    }
    }
    // 设置邮件服务器信息
    MailSenderInfo mailInfos = new MailSenderInfo();

    mailInfos.setMailServerHost(PropertiesUtil.getValue("mailServerHost"));////smtp-mail.outlook.com
    mailInfos.setMailServerPort(PropertiesUtil.getValue("mailServerPort"));//587
    mailInfos.setValidate(true);
    // 邮箱用户名
    mailInfos.setUserName("15801662503@163.com");
    // 邮箱密码
    mailInfos.setPassword("wanghaibo123");
    // 发件人邮箱
    mailInfos.setFromAddress("15801662503@163.com");//wanghaibo2503@outlook.com
    // 收件人邮箱
    mailInfos.setToAddress("329765964@qq.com");
    // 邮件标题
    mailInfos.setSubject("aaa");
    // 邮件内容
    mailInfos.setContent("bbb");
    //处理附件
    String[] fileNames = new String[resumeList.size()];
    String htmlFileName = null;
    for (int i = 0; i < resumeList.size(); i++) {
    try {
    htmlFileName = Html2word.Word2003ToHtml(request);
    es = new Html2word().writeWordFile(request,htmlFileName,resumeList.get(i));
    if(es.getPath()!=null){
    fileNames[i] = es.getPath();
    }
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    mailInfos.setAttachFileNames(fileNames);
    // 发送邮件
    boolean b = SimpleMailSender.sendHtmlMail(mailInfos);
    //删除文件
    if(b){
    for (int i = 0; i < resumeList.size(); i++) {
    File tempFile =new File(fileNames[i].trim());
    // 路径为文件且不为空则进行删除doc
    if (tempFile.isFile() && tempFile.exists()) {
    tempFile.delete();
    }
    }
    File tempFile1 =new File(htmlFileName.trim());
    // 路径为文件且不为空则进行删除html
    if (tempFile1.isFile() && tempFile1.exists()) {
    tempFile1.delete();
    }
    }
    return es;
    }
    /**
    *
    * @param mailInfo
    * @return
    */
    public static boolean sendHtmlMail(MailSenderInfo mailInfo) {
    // 判断是否需要身份认证
    MyAuthenticator authenticator = null;
    Properties pro = mailInfo.getProperties();
    // 如果需要身份认证,则创建一个密码验证器
    if (mailInfo.isValidate()) {
    authenticator = new MyAuthenticator(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);
    // 创建邮件的接收者地址,并设置到邮件消息中
    Address to = new InternetAddress(mailInfo.getToAddress());
    // 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=GBK");
    mainPart.addBodyPart(html);
    // 为邮件添加附件
    String[] attachFileNames = mailInfo.getAttachFileNames();
    if (attachFileNames != null && attachFileNames.length > 0) {
    // 存放邮件附件的MimeBodyPart
    MimeBodyPart attachment = null;
    File file = null;
    for (int i = 0; i < attachFileNames.length; i++) {
    attachment = new MimeBodyPart();
    // 根据附件文件创建文件数据源
    file = new File(attachFileNames[i]);
    FileDataSource fds = new FileDataSource(file);
    attachment.setDataHandler(new DataHandler(fds));
    // 为附件设置文件名
    attachment.setFileName(MimeUtility.encodeWord(
    file.getName(), "GBK", null));
    mainPart.addBodyPart(attachment);
    }
    }
    // 将MiniMultipart对象设置为邮件内容
    mailMessage.setContent(mainPart);
    // 发送邮件
    Transport.send(mailMessage);
    return true;
    } catch (Exception ex) {
    ex.printStackTrace();
    }
    return false;
    }

    public static void main(String[] args) {
    // 设置邮件服务器信息
    MailSenderInfo mailInfo1 = new MailSenderInfo();
    mailInfo1.setMailServerHost("smtp.163.com");////smtp-mail.outlook.com
    mailInfo1.setMailServerPort("25");//587
    mailInfo1.setValidate(true);

    // 邮箱用户名
    mailInfo1.setUserName("15801662503@163.com");
    // 邮箱密码
    mailInfo1.setPassword("wanghaibo123");
    // 发件人邮箱
    mailInfo1.setFromAddress("15801662503@163.com");//wanghaibo2503@outlook.com
    // 收件人邮箱
    mailInfo1.setToAddress("329765964@qq.com");
    // 邮件标题
    mailInfo1.setSubject("测试Java程序发送邮件");
    // 邮件内容
    StringBuffer buffer = new StringBuffer();
    buffer.append("JavaMail 1.4.5 jar包下载地址:http://www.oracle.com/technetwork/java/index-138643.html ");
    buffer.append("JAF 1.1.1 jar包下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index-135046.html");
    mailInfo1.setContent(buffer.toString());
    List<ResStandardResumeDTO> resumeList = new ArrayList<ResStandardResumeDTO>();
    ResStandardResumeDTO resume = new ResStandardResumeDTO();
    resume.setBasicInformation("姓名:王波波");
    resume.setSelfAssessment("<div>我爱中国!!!<div>");
    resume.setProjectExperience("<div style="color:'red'">ITUBER</div>");
    resume.setWorkExperience("<div>北京科技公司<div>");
    resumeList.add(resume);
    ResStandardResumeDTO resume1 = new ResStandardResumeDTO();
    resume1.setBasicInformation("姓名:王波波1");
    resume1.setSelfAssessment("<div>我爱中国1!!!<div>");
    resume1.setProjectExperience("<div style="color:'red'">ITUBER</div>");
    resume1.setWorkExperience("<div>北京科技公司<div>");
    resumeList.add(resume1);
    String[] fileNames = new String[resumeList.size()];
    /* for (int i = 0; i < resumeList.size(); i++) {
    try {
    String htmlFileName = Html2word.Word2003ToHtml();
    ExcameStatus excame = new Html2word().writeWordFile(htmlFileName,resumeList.get(i));
    if(excame.getPath()!=null){
    fileNames[i] = excame.getPath();
    }
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    mailInfo1.setAttachFileNames(fileNames);*/
    // 发送邮件
    // SimpleMailSender sms = new SimpleMailSender();
    // 发送文体格式
    // sms.sendTextMail(mailInfo);
    // 发送html格式
    SimpleMailSender.sendHtmlMail(mailInfo1);
    System.out.println("邮件发送完毕");
    }
    }

    三,返回类

    package com.camelot.util.mail;

    public class ExcameStatus {

    private Boolean flag;

    private String path ;

    public Boolean getFlag() {
    return flag;
    }

    public void setFlag(Boolean flag) {
    this.flag = flag;
    }

    public String getPath() {
    return path;
    }

    public void setPath(String path) {
    this.path = path;
    }


    }

  • 相关阅读:
    UWP中实现大爆炸效果(二)
    UWP中实现大爆炸效果(一)
    c# 【电影搜索引擎】采集电影站源码
    安利一个聚合搜索导航站,及怎么样设置成默认的搜索引擎
    女朋友经常问影视剧, 答不上来怎么办?
    宝塔linux面板, 服务器日志分析与流量统计这款插件的mysql版优化。
    苹果cms自动采集,重复执行遇到“上次执行时间: --跳过”的解决办法
    苹果cms, 后台设置保存不了的解决办法
    解决 C:WINDOWSsystem32inetsrv ewrite.dll 未能加载。返回的数据为错误.
    img error 图片加载失败的最佳方案
  • 原文地址:https://www.cnblogs.com/whb11/p/6273553.html
Copyright © 2011-2022 走看看