您的位置:首页 > 编程语言 > Java开发

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: