Java发送电子邮件的完整代码,可发送附件
2016-05-19 10:41
369 查看
工具类供参考使用。
package com.gj5u.publics.util; import java.io.UnsupportedEncodingException; import java.util.Date; import java.util.List; import java.util.Properties; import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.mail.Authenticator; import javax.mail.BodyPart; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Multipart; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.AddressException; 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; /** * 邮件发送工具 * * @author Rex * */ public class SendEmailUtil { private String HOST; private String PROTOCOL = "POP3"; private int PORT = 25; private String SENDER; private String SENDERPWD; /** * 初始化 * * @param smtpHost * SMTP主机地址 * @param port * 端口号 * @param sendaddress * 邮件发送者地址 * @param sendpwd * 邮件发送者密码 */ public SendEmailUtil(String smtpHost, Integer port, String sendaddress, String sendpwd) { HOST = smtpHost; if (EmptyUtil.isEmpty(port)) { PORT = port; } SENDER = sendaddress; SENDERPWD = sendpwd; } /** * 获取Session * * @return */ private Session getSession() { Properties props = new Properties(); props.put("mail.smtp.localhost", "avatech");// 随便写一个 props.put("mail.smtp.host", HOST); props.put("mail.store.protocol", PROTOCOL); props.put("mail.smtp.port", Integer.valueOf(PORT)); props.put("mail.smtp.auth", "true"); Authenticator authenticator = new Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(SENDER, SENDERPWD); } }; Session session = Session.getDefaultInstance(props, authenticator); return session; } /** * 发送邮件密送和抄送 * * @param toEmail * 接收人列表 * @param ccEmail * 抄送人列表 * @param bccEmail * 密送人列表 * @param content * 邮件内容 * @param emailTitle * 邮件标题 * @return 是否发送成功 */ public boolean sendMail(List<String> toEmail, List<String> ccEmail, List<String> bccEmail, String content, String emailTitle) { try { Message msg = new MimeMessage(getSession()); msg.setFrom(new InternetAddress(SENDER)); if (EmptyUtil.isNotEmpty(toEmail)) { for (String strto : toEmail) { InternetAddress[] tes = { new InternetAddress(strto) }; msg.addRecipients(Message.RecipientType.TO, tes); } } if (EmptyUtil.isNotEmpty(ccEmail)) { for (String strcc : ccEmail) { InternetAddress[] tes = { new InternetAddress(strcc) }; msg.addRecipients(Message.RecipientType.CC, tes); } } if (EmptyUtil.isNotEmpty(bccEmail)) { for (String strbcc : bccEmail) { InternetAddress[] tes = { new InternetAddress(strbcc) }; msg.addRecipients(Message.RecipientType.BCC, tes); } } msg.setSubject(emailTitle); msg.setSentDate(new Date()); msg.setContent(content, "text/html;charset=utf-8"); Transport.send(msg); return true; } catch (AddressException e) { FileWriteAndReadUtil.writeFile("AddressException:" + e.getMessage(), true); return false; } catch (MessagingException e) { FileWriteAndReadUtil.writeFile("MessagingException:" + e.getMessage(), true); e.printStackTrace(); } return false; } /** * 发送邮件带附件 * * @param toEmail * 接收人列表 * @param ccEmail * 抄送人列表 * @param bccEmail * 密送人列表 * @param content * 邮件内容 * @param emailTitle * 邮件标题 * @param fileList * 附件列表 * @return 是否发送成功 */ public boolean sendMail(List<String> toEmail, List<String> ccEmail, List<String> bccEmail, String content, String emailTitle, List<String> fileList) { try { MimeMessage msg = new MimeMessage(getSession()); msg.setFrom(new InternetAddress(SENDER)); // 向multipart对象中添加邮件的各个部分内容,包括文本内容和附件 Multipart multipart = new MimeMultipart(); msg.setContent(multipart); if (EmptyUtil.isNotEmpty(toEmail)) { for (String strto : toEmail) { InternetAddress[] tes = { new InternetAddress(strto) }; msg.addRecipients(Message.RecipientType.TO, tes); } } if (EmptyUtil.isNotEmpty(ccEmail)) { for (String strcc : ccEmail) { InternetAddress[] tes = { new InternetAddress(strcc) }; msg.addRecipients(Message.RecipientType.CC, tes); } } // 有附件添加附件 if (EmptyUtil.isNotEmpty(fileList)) { for (String strcc : fileList) { MimeBodyPart mbp = new MimeBodyPart(); FileDataSource fds = new FileDataSource(strcc); DataHandler dh = new DataHandler(fds); mbp.setDataHandler(dh); mbp.setFileName(MimeUtility.encodeWord(FileUtil.getFileName(strcc))); multipart.addBodyPart(mbp); } } if (EmptyUtil.isNotEmpty(bccEmail)) { for (String strbcc : bccEmail) { InternetAddress[] tes = { new InternetAddress(strbcc) }; msg.addRecipients(Message.RecipientType.BCC, tes); } } msg.setContent(multipart); msg.saveChanges(); // 添加邮件正文 BodyPart contentPart = new MimeBodyPart(); contentPart.setContent(content, "text/html;charset=UTF-8"); multipart.addBodyPart(contentPart); msg.setSubject(emailTitle); msg.setSentDate(new Date()); Transport.send(msg); return true; } catch (AddressException e) { } catch (MessagingException e) { } catch (UnsupportedEncodingException e) { } return false; } }
相关文章推荐
- 获取项目在服务其中的真实路径的工具类
- java发邮件
- java 发邮件demo
- Java Util 验证身份证号码是否规范
- java实现发送邮件包含添加附件等(一)
- JAVA实现图片剪切缩放功能
- JAVA实现gif图片缩放与剪切功能
- Java工具类
- DB封装
- commons-lang中常用方法
- java 发邮件,发短信,发送iosPush,
- Ehcache简单使用
- 知道当前日期算出几个工作日之后的日期
- xml与java代码相互装换的工具类
- Java工具类(一):Ini文件简单读写
- 一个Java工具类的大集合
- Java---List、Map、String相互转换工具类
- javaxmail发邮件工具类JavaEmailUtils
- Java工具类之通过IP获取对应的位置信息及网络供应商
- Java工具类之Date日期操作工具类