java mail发送图片、附件全攻略(无需插件)
2017-11-14 11:29
330 查看
自己实际项目中的一个方法,直接看代码就能看懂
public static boolean sendMail(String smtpFromMail, String pwd, int port, String host, String subject, String toMail, String content, List<String> files) { try { // 使用Properties来创建邮件的相关信息 Properties props = new Properties(); props.put("mail.smtp.host", host); props.put("mail.smtp.auth", "true"); // 创建邮件的session Session session = Session.getDefaultInstance(props); session.setDebug(false); // 遍历收件人,分别发送 String[] emailTo = toMail.split(","); for (String string : emailTo) { // ##########通过session创建MimeMessage对象,用来发送数据########## MimeMessage mm = new MimeMessage(session); // ##########设置相关信息########## mm.setFrom(new InternetAddress(smtpFromMail, subject)); // 设置邮件的收件人 mm.addRecipient(Message.RecipientType.TO, new InternetAddress(string)); // 设置邮件主题 mm.setSubject(subject); mm.addHeader("charset", "UTF-8"); // ##########MimeBodyPart类用来写邮件的正文########## MimeBodyPart mp = new MimeBodyPart(); String contentStr = "<h4>" + content + "</h4>"; for (String file : files) { if (!file.endsWith("pdf")) { int start = file.lastIndexOf("/"); int end = file.lastIndexOf("."); String fileName = file.substring(start + 1, end); // 这里了就是设置了你要使用的图片的cid是哪个,具体cid代表哪张图片,会在下面的逻辑中设置 contentStr += "<h4>" + fileName + "使用情况如下:</h4><img src='cid:" + fileName + ".jpg'><br>"; } } mp.setContent(contentStr, "text/html;charset=gb2312"); // ##########4、创建关系,把图片的文字联系起来,用到的类是MimeMultiPart########## MimeMultipart mmp = new MimeMultipart(); mmp.addBodyPart(mp); // ##########开始写图片########## for (String file : files) { if (!file.endsWith("pdf")) { int start = file.lastIndexOf("/"); int end = file.lastIndexOf("."); String fileName = file.substring(start + 1, end); MimeBodyPart mp2 = new MimeBodyPart(); mp2.setDataHandler(new DataHandler(new FileDataSource(file))); // 设置文件的id值,和上面的相对应 mp2.setContentID(fileName + ".jpg"); // 添加正文和图片的关联 mmp.addBodyPart(mp2); } } mmp.setSubType("related");// related是表示关联关系 //// 5、再把上面的关系放到MimeBodyPart中 MimeBodyPart mp4 = new MimeBodyPart(); mp4.setContent(mmp); // 添加附件信息 MimeBodyPart mp5 = null; for (String file : files) { if (file.endsWith(".pdf")) { /* 添加附件 */ File usFile = new File(file); mp5 = new MimeBodyPart(); DataSource source = new FileDataSource(file); // 设置附件 mp5.setDataHandler(new DataHandler(source)); sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder(); // 设置附件名 mp5.setFileName( "=?GBK?B?" + enc.encode(usFile.getName().getBytes()) + "?="); } } // 7、再创建关系 MimeMultipart mmp2 = new MimeMultipart(); mmp2.addBodyPart(mp4); mmp2.addBodyPart(mp5); mmp2.setSubType("mixed"); mm.setContent(mmp2); mm.saveChanges(); Transport transport = session.getTransport("smtp"); transport.connect(host, port, smtpFromMail, pwd); transport.sendMessage(mm, mm.getAllRecipients()); transport.close(); } } catch ( Exception e) { logger.error("邮件发送异常,请检查配置是否正确。"); e.printStackTrace(); return false; } return true; }
相关文章推荐
- 用Java Mail发送带有图片附件的html格式邮件
- Java Mail发送Email总结(二)--创建带图片或附件的邮件
- C#邮件发送 批量发送邮件 发送邮件嵌入图片 添加附件
- php发送带有图片和附件的邮件
- java实现发送邮件可多个附件内嵌图片-commons-email使用
- python发送包含html、图片、附件和链接的邮件
- 2018加强版destoon七牛云对象存储插件 destoon七牛云远程图片附件存储插件
- stmp批量发送email包括图片和附件
- C# 发送邮件(内容中可以插入图片,邮件可以添加附件,163邮箱、QQ邮箱等都可以使用)
- Android发送彩信(带图片附件)
- python发送包含html、图片、附件和链接的邮件
- JAVA邮件发送(文字+图片+附件)【源码】
- 发送广播重新挂载SD卡,使图库可以及时显示自己保存的图片(无需手机重启)
- Java Mail实现带附件的邮件发送
- postal邮件发送(三):以附件形式显示图片
- java mail发送复杂邮件代码(包括附件,html消息,纯文本消息)
- 【C#工具类】发送邮件(带有图片和附件)
- java mail 发送邮件,支持多个收件人,多个附件
- Java Mail简化邮件发送+附件发送(源码奉上)
- Java-发送邮件(附件、图片)---(三)类-Properties、Session、MimeMessage