java 发送邮件(支持多附件,抄送人等功能)

public String sendMail(String mailTitle,String mailContent,String fileName, String receiver,String carbonCopy, List<FolderInfoVO> attachedFile) {
String sendResult = "";// 邮件发送结果
/**
* 邮件成功执行则不抛出异常,执行失败抛出异常,并返回邮件发送结果
*/
try {
Properties props = System.getProperties();
props.put("mail.smtp.host", "mail.chinamobilesz.com:25");
props.put("mail.smtp.auth", "true");
// props.put("mail.debug", "true");
//props.put("mail.smtps.timeout","25000");
Session session = Session.getInstance(props, null); // 根据邮件会话属性和密码验证器构造一个发送邮件的session


Message msg = new MimeMessage(session); // 根据session创建一个邮件消息   

msg.setFrom(new InternetAddress("[email protected]"));//设置邮件发送人地址

msg.setRecipients(Message.RecipientType.TO, //设置邮件接收人地址
InternetAddress.parse(receiver, false));

/**
* //抄送人不为空时需将邮件抄送
*/
if(!"".equals(carbonCopy)){
msg.setRecipients(Message.RecipientType.CC,
InternetAddress.parse(carbonCopy, false));
}

msg.setSubject(mailTitle); //邮件标题
//msg.setText(mailContent);

Multipart mp = new MimeMultipart("mixed"); // MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象
MimeBodyPart mbp = new MimeBodyPart();  // 创建一个包含HTML内容的MimeBodyPart
mbp.setContent(mailContent.toString(), "text/html;charset=gb2312"); // 设置HTML内容    
    mp.addBodyPart(mbp); //将MimeBodyPart加入容器
    /**
     * 判断附件是否为空,不为空则将附件置于邮件体内
     */
if(attachedFile != null && !attachedFile.isEmpty() ){
System.out.println("--------------附件------------------------------------");
for (Iterator<FolderInfoVO> iterator = attachedFile.iterator(); iterator
.hasNext();) {
mbp = new MimeBodyPart();
FolderInfoVO vo = (FolderInfoVO) iterator.next();
System.out.println("邮件发送核心类------------附件地址-----"+vo.getFolderName());
FileDataSource dataSource = new FileDataSource(vo.getFolderPath()); // 得到数据源
mbp.setDataHandler(new DataHandler(dataSource)); // 得到附件本身并至入BodyPart
mbp.setFileName(MimeUtility.encodeText(dataSource.getName())); // 得到文件名同样至入BodyPart
mp.addBodyPart(mbp);
}
}
msg.setContent(mp); // 将MiniMultipart对象设置为邮件内容   
msg.setSentDate(new Date());// 设置发送日期
SMTPTransport t = (SMTPTransport) session.getTransport("smtp");

t.connect("mail.chinamobilesz.com", "newbiztesting", "*****");

t.sendMessage(msg, msg.getAllRecipients()); //发送邮件(第一个参数代表邮件内容,第二个代表所有的接收人地址,包含抄送人等等)
sendResult = "发送成功";
System.out.println("================发送成功===================");
t.close();
} catch (Exception e) {
e.printStackTrace();
sendResult="发送失败";
e.getMessage();
System.out.println("发送失败================="+e.getMessage());
}
return sendResult;// 邮件发送结果
}

猜你喜欢

转载自fkueje001.iteye.com/blog/1913493