Mail Java实现邮件发送(带附件)
2017-07-16 17:25
609 查看
发送邮件代码:
public void sendEmail(EmailData data) { if(data.getAttachmentList().size() <= 0) { logger.error("[EmailService] [sendEmail] attachment is empty!!"); return; } logger.info("[EmailService] [sendEmail] [form:{}] [pass:{}] [to:{}] [subject:{}]", data.getFromUser(), data.getFromPass(), data.getToUsers(), data.getSubject()); Session session = getSession(data.getFromUser(), data.getFromPass()); MimeMessage message = new MimeMessage(session); try { //加载发件人地址 message.setFrom(new InternetAddress(data.getFromUser())); //加载收件人地址 String[] arr = data.getToUsers().split(","); int receiverCount = arr.length; if(receiverCount > 0) { InternetAddress[] address = new InternetAddress[receiverCount]; for (int i = 0; i < receiverCount; i++) { address[i] = new InternetAddress(arr[i]); logger.info("[EmailService] [sendEmail] [to address:{}]", arr[i]); } message.addRecipients(Message.RecipientType.TO, address); } //加载标题 message.setSubject(data.getSubject()); //向multipart对象中添加邮件的各个部分内容,包括文本内容和附件 Multipart multipart = new MimeMultipart(); //设置邮件的文本内容 BodyPart contentPart = new MimeBodyPart(); contentPart.setText(""); multipart.addBodyPart(contentPart); //添加附件信息 addAttachments(multipart, data.getAttachmentList()); //将multipart对象放到message中 message.setContent(multipart); //发送邮件 Transport.send(message); logger.info("[EmailService] [sendEmail] [email send success!!]"); } catch (Exception e) { logger.error("", e); } }
获取Session,并进行验证:
/** * 获取Session * @param username 发件人邮箱 * @param password 发件人密码 * @date 2017年4月13日 */ private Session getSession(final String username, final String password) { Properties props = new Properties(); props.put("mail.smtp.host", "smtp.exmail.qq.com"); props.put("mail.smtp.port", 465); props.put("mail.smtp.auth", "true"); Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider()); Session session = Session.getDefaultInstance(props, new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); } }); session.setDebug(true); return session; }
添加附件至邮件中:
/** * 将附件信息添加至邮件中 * @param list * @date 2017年4月11日 */ private void addAttachments(Multipart multipart, List<Attachment> attachmentList) throws MessagingException { for(Attachment attachment : attachmentList) { // 添加附件 BodyPart messageBodyPart = new MimeBodyPart(); DataSource source = new FileDataSource(attachment.getPath()); // 添加附件的内容 messageBodyPart.setDataHandler(new DataHandler(source)); // 添加附件的标题 // 这里很重要,通过下面的Base64编码的转换可以保证你的中文附件标题名在发送时不会变成乱码 sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder(); messageBodyPart.setFileName("=?GBK?B?" + enc.encode(attachment.getName().getBytes()) + "?="); multipart.addBodyPart(messageBodyPart); } }
相关文章推荐
- 对象邮件Java Mail 发送附件的邮件
- java实现 邮件抄送,密送,多个附件 发送
- java 利用spring JavaMailSenderImpl发送邮件,支持普通文本、附件、html、velocity模板
- freemarker+javaMailSender+springmvc实现邮件发送
- java 利用spring JavaMailSenderImpl发送邮件,支持普通文本、附件、html、velocity模板
- java 发送邮件 例子 (带附件的) 使用org.apache.commons.mail
- FansMail:邮件发送标准API与技术实现(Java)
- 带附件的java.mail邮件发送
- FansMail:邮件发送标准API与技术实现(Java)
- 用java实现的邮件系统六(javamail发送复杂邮件-带附件和html)
- java实现发送邮件包含添加附件等(一)
- java邮件发送 实现群发和带附件发送
- java中javamail发送带附件的邮件实现方法
- Java使用javax.mail.jar发送邮件并允许发送附件
- zend_mail实现发送邮件实例(包括附件)
- java 利用spring JavaMailSenderImpl发送邮件,支持普通文本、附件、html
- 用javaMail API实现邮件发送
- java发送邮件带附件、格式、可以实现转发、秘密转发等操作
- FansMail:邮件发送标准API与技术实现(Java)
- java 利用spring JavaMailSenderImpl发送邮件,支持普通文本、附件、html、velocity模板