import java.util.Date; import java.util.Iterator; import java.util.List; import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Multipart; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.mail.javamail.MimeMessagePreparator; public class MialService { private JavaMailSender mailSender; private String fromMail; public JavaMailSender getMailSender() { return mailSender; } public void setMailSender(JavaMailSender mailSender) { this.mailSender = mailSender; } public String getFromMail() { return fromMail; } public void setFromMail(String fromMail) { this.fromMail = fromMail; } public void sendMail(String toMailAddr, String subject, String content) { SimpleMailMessage smm = new SimpleMailMessage(); smm.setTo(toMailAddr); smm.setFrom(fromMail); smm.setSubject(subject); smm.setText(content); mailSender.send(smm); } /** */ /** * 发送带附件的邮件 * * 邮件发送器 * @throws Exception */ public void sendMimeMessage(final String toMailAddr, final String subject, final String contents, final List files) throws Exception { MimeMessagePreparator mimeMail = new MimeMessagePreparator() { public void prepare(MimeMessage mimeMessage) throws MessagingException { mimeMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(toMailAddr)); mimeMessage.setFrom(new InternetAddress(fromMail)); mimeMessage.setSubject(subject, "gb2312"); Multipart mp = new MimeMultipart(); // 向Multipart添加正文 MimeBodyPart content = new MimeBodyPart(); content.setText(contents); // 向MimeMessage添加(Multipart代表正文) mp.addBodyPart(content); if (files != null && files.size() > 0) { // 向Multipart添加附件 Iterator it = files.iterator(); sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder(); while (it.hasNext()) { MimeBodyPart attachFile = new MimeBodyPart(); String filename = it.next().toString(); FileDataSource fds = new FileDataSource(filename); attachFile.setDataHandler(new DataHandler(fds)); attachFile.setFileName("=?GBK?B?" + enc.encode(fds.getName().getBytes()) + "?="); mp.addBodyPart(attachFile); } files.clear(); } // 向Multipart添加MimeMessage mimeMessage.setContent(mp); mimeMessage.setSentDate(new Date()); } }; // 发送带附件的邮件 mailSender.send(mimeMail); } /** */ /** * 发送带附件的html邮件 * * @param 邮件发送器 * @throws Exception */ public void sendMimehtmlandmultiple(final String toMailAddr,final String mailName, final String subject,final String contents) throws Exception { MimeMessage mime = mailSender.createMimeMessage(); MimeMessageHelper helper; try { helper = new MimeMessageHelper(mime, true, "utf-8"); helper.setFrom(fromMail); //helper.setTo(new InternetAddress(toMailAddr,MimeUtility.encodeWord(mailName,"utf-8","Q"))); helper.setTo(toMailAddr); helper.setSubject(subject); // 需要将附件显示在html中 // 在标签中用cid:xx 标记,使用helper.addInline()方法添加 helper.setText(contents, true); } catch (MessagingException e) { // TODO Auto-generated catch block e.printStackTrace(); } mailSender.send(mime); } }