随着业务的复杂度,一般意义上的电子邮件无法满足需求,有些邮件需要附带 url附件文件。

具体公共类 MailUtils.java

如下

package com;
import java.io.InputStream;
import java.net.URL;
import java.util.Calendar;
import java.util.Date;
import java.util.Properties;import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.URLDataSource;
import javax.mail.*;
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.mail.util.ByteArrayDataSource;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;public class MailUtils {private String host;private String port;private String user;private String password;private String userName;private String userNm_charset;static Logger logger = LoggerFactory.getLogger(MailUtils.class);/*** 发件,信息初始化* @param host 邮件SMTP服务器* @param port SMTP服务器端口号* @param user 发件人邮箱* @param password 发件人邮箱密码* @param userName 发件人名字*/public MailUtils(String host,String port, String user, String password,String userName,String userNm_charset){this.host = host;this.port = port;this.user = user;this.password = password;this.userName = userName;this.userNm_charset = userNm_charset;}/*** 开始发件** 说明 1,本地文件(fileName、in、inType 必须同时有值),*       2,网路文件(fileName、fpPdf 必须同时有值)** @param title 邮件标题* @param toMail 收件人邮箱* @param content 邮件正文* @param fileName 附件名* @param in 附件文件流* @param inType 附件文件类型* @param fpPdf 附件url* @param ccList 抄送人邮箱* @return*/public boolean sendMail(String title, String toMail, String content,String fileName, InputStream in,String inType,String fpPdf,String ccList) {boolean isFlag = false;try {Properties props = new Properties();props.put("mail.smtp.host", host); // 指定SMTP服务器props.put("mail.smtp.port", port); // 指定SMTP服务器端口号props.put("mail.smtp.auth", "true"); // 指定是否需要SMTP验证MailSSLSocketFactory sf = new MailSSLSocketFactory();sf.setTrustAllHosts(true);// 设置信任所有的主机props.put("mail.smtp.ssl.enable", "true");props.put("mail.smtp.ssl.socketFactory", sf);//props.put("mail.smtp.timeout", "25000");//超时时间Session session = Session.getDefaultInstance(props);session.setDebug(false);MimeMessage message = new MimeMessage(session);try {//指定发送人if(userName!=null && !"".equals(userName)){if(userNm_charset==null || "".equals(userNm_charset)){userNm_charset = "utf-8";}message.setFrom(new InternetAddress(user,userName,userNm_charset));}else{message.setFrom(new InternetAddress(user));}//指定接收人message.addRecipient(Message.RecipientType.TO, new InternetAddress(toMail));//指定抄送人if(ccList!=null || !"".equals(ccList)){message.addRecipients(Message.RecipientType.CC,ccList);}//设置标题message.setSubject(title,"UTF-8");message.addHeader("charset", "UTF-8");/*添加正文内容*///一个Multipart对象包含一个或多个bodypart对象,组成邮件正文Multipart multipart = new MimeMultipart();MimeBodyPart contentPart = new MimeBodyPart();contentPart.setText(content,"UTF-8");contentPart.setHeader("Content-Type", "text/html; charset=UTF-8");multipart.addBodyPart(contentPart);/*添加附件*/if(in != null) {MimeBodyPart fileBody = new MimeBodyPart();DataSource source = new ByteArrayDataSource(in, inType);//"application/msexcel"fileBody.setDataHandler(new DataHandler(source));// 中文乱码问题fileBody.setFileName(MimeUtility.encodeText(fileName));multipart.addBodyPart(fileBody);}if(in == null && fpPdf != null) {MimeBodyPart fileBody = new MimeBodyPart();URL url = new URL(fpPdf);DataSource dataSource=new URLDataSource(url);DataHandler dataHandler=new DataHandler(dataSource);fileBody.setDataHandler(dataHandler);// 中文乱码问题fileBody.setFileName(MimeUtility.encodeText(fileName));multipart.addBodyPart(fileBody);}message.setContent(multipart);message.setSentDate(new Date());message.saveChanges();Transport transport = session.getTransport("smtp");            transport.connect(host, user, password);transport.sendMessage(message, message.getAllRecipients());transport.close();isFlag = true;logger.info(Calendar.getInstance().getTime()+":#Send mail to"+toMail+"success #");} catch (Exception e) {logger.info(Calendar.getInstance().getTime()+":#Send mail to"+toMail+"error #");logger.info(e.toString());e.printStackTrace();isFlag = false;}} catch (Exception e) {e.printStackTrace();}return isFlag;}
}

引用公共类

如下:

logger.info("发送邮件------>>>userEmail:{},charset:{}",userEmail,mail_userNm_charset);MailUtils mailUtils = new MailUtils(mail_host,mail_port,mail_user,mail_pass,mail_userNm,mail_userNm_charset);String title = "订单"+orderNo+"发票";//收件人String toMail = userEmail;//正文String content = "<h1 align=\"center\">迪信通电子发票</h1>"+"<p>你好:</p>"+"<p style=\"padding-left:2em;\">你申请的电子发票,详见<font style=\"font-weight:bold;color:#0000cc;font-size:20px\">附件</font>。</p>"+"<p style=\"padding-left:2em;\">如未能打开,请<a target=\"_blank\" href=\""+eleInvoice.getFpUrl()+"\">点击链接</a>查看:"+eleInvoice.getFpUrl()+"</p>";//附件文件名String fileName  = "订单"+orderNo+"电子发票.pdf";//附件文件流InputStream in = null;//附件文件类型String inType = "";//抄送String ccList = "";mailUtils.sendMail(title, toMail, content, fileName, in,inType,eleInvoice.getFpUrl(), ccList);

效果图:

java发送带附件的电子邮件相关推荐

  1. 使用Spring发送带附件的电子邮件(站内和站外传送)

    1.使用Spring发送带附件的电子邮件 <?xml version="1.0" encoding="UTF-8"?> <beansxmlns ...

  2. php 发送带附件的邮件,php发送带附件的电子邮件

    我似乎无法找到这个我写的php函数的问题,应该发送带附件的电子邮件.我已经挣扎了很长一段时间. function myMail($to, $subject, $mail_msg, $filename, ...

  3. PHP发送带附件的电子邮件,php中PHPMailer发送带附件的电子邮件方法_PHP教程

    在php开发利用PHPMailer发送邮件是常用的做法了,这种比起php mail用好用多了,下面我们来看看PHPMailer如何发送带有附件的电子邮件吧. .首先到http://phpmailer. ...

  4. php curl发邮件,使用PHP cURL通过Mailgun API发送带附件的电子邮件

    我正在尝试使用cURL通过Mailgun API发送带有1-n附件的电子邮件 . 以下代码成功发送电子邮件,但不包含附件 . 任何人都可以看到为什么以下不起作用?..任何帮助将非常感激 . // In ...

  5. JSP: 使用网易邮箱发送带附件的电子邮件

    JSP代码:使用javax.mail和activation发送邮件 首先我们需要两个jar包,javax.mail.jar和activation.jar,官方下载地址: JAF:JavaBeans A ...

  6. php smtp发送附件,PHP:如何使用smtp设置发送带附件的电子邮件?

    发现此代码是google:// pear邮件附件搜索的首批点击之一. include('Mail.php'); include('Mail/mime.php'); $text = 'Text vers ...

  7. Python+flask+flask-email发送带附件的电子邮件

    运行下面的程序之前,需要使用pip install flask-mail安装电子邮件扩展包. import os.path from flask import Flask from flask.ext ...

  8. word合并邮件无法发送html,Word邮件合并批量发送带附件的邮件

    应张老师的需求,修改制作了一个可以批量发送带附件的电子邮件VBA. 目的:给N多人发送电子邮件,而不是抄送模式,并带有对方的称谓. 实现: 用到Word的邮件合并功能,以及调用Outlook发送邮件. ...

  9. 使用Python的smtplib模块发送带附件的邮件

      上一篇文章<使用Python的smtplib模块发送简单邮件>介绍了调用smtplib模块发送包含简单内容的邮件,本文继续学习参考文献1中的发送带附件的邮件的示例代码,同时由于参考文献 ...

  10. java 邮件 附件_java中javamail发送带附件的邮件实现方法

    本文实例讲述了java中javamail发送带附件的邮件实现方法.分享给大家供大家参考.具体分析如下: JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口.它是Sun发布的用来处理em ...

最新文章

  1. java对象序列化克隆_JAVA 对象克隆和序列化
  2. 【JUC系列】Java的锁机制
  3. [Azure][PowerShell][ASM][12]ACL
  4. 截至2018年,目前,企业主流的消息中间件有哪些?各有什么优缺点?面试常问 RabbitMQ使用较多
  5. MySQL数据库进阶(事务Transaction)
  6. 监听是否到达页面滑动的可视区域最底部
  7. CSS创建三角形(小三角)的几种方法
  8. 微信支付提示:支付失败,如果已经扣款,资金会在0~3个工作日内原路退回
  9. SD卡fat32文件格式说明
  10. 外贸常用术语_外贸常用句子
  11. vue3中使用Web Worker多线程
  12. Error: illegal invocation in <execute> or <revert> phase (action: element.updateProperties或Laber)
  13. android动画封装,Android开场动画类完整实现代码
  14. 替换MP9486A 替代MP4689 替换LM5007 LM5017 国产芯片内置150V做降压恒压4.2V GPS防盗器专用芯片
  15. Stream代替for循环
  16. java毕业设计基金会系统网站mybatis+源码+调试部署+系统+数据库+lw
  17. Java环境搭建_20200708
  18. 相位 unwrap 与 wrap 算法详解(附代码)
  19. terminate called after throwing an instance of ‘c10::Error‘ chunk expects at least a 1-d tensor
  20. NSI 脚本 -注册表操作无法正常找到的问题

热门文章

  1. ZZULIOJ1016
  2. xlsx模块 前端_前端使用SheetJS的xlsx.js实现excel表格生成
  3. 使用Pytorch实现UCF101视频分类
  4. cic滤波器原理 MATLAB,cic滤波器(cic滤波器的原理和设计)
  5. PCA9685 多舵机控制器的编程
  6. springboot面试题
  7. android 改机型玩王者,抱歉,Xposed真的可以为所欲为——2.改为OV机型流畅玩耍高帧率王者农药...
  8. 你要的Chrome插件都在这里了
  9. Topic 9. SCI 文章第二张表—单因素回归分析表
  10. Eview操作步骤——数据导入及数据建模