package com.yuxinglab.utils; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Properties; import javax.mail.Authenticator; import javax.mail.MessagingException; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.internet.MimeMessage; import org.springframework.core.io.FileSystemResource; import org.springframework.mail.javamail.JavaMailSenderImpl; import org.springframework.mail.javamail.MimeMessageHelper; /** * 邮件发送工具类 * * @author yuxing * */ public class EmailUtils { // 发件人邮箱服务器 private String emailHost; // 发件人邮箱 private String emailFrom; // 发件人用户名 private String emailUserName; // 发件人密码 private String emailPassword; // 收件人邮箱,支持多个邮箱,以";"分割 private String toEmails; // 邮件主题 private String subject; // 邮件内容 private String content; // 邮件中的图片,key为图片Id,value为图片地址 private Map<String, String> pictures; // 邮件中的附件,key为附件Id,value为附件地址 private Map<String, String> attachments; public String getEmailHost() { if (null == emailHost || emailHost.trim().equals("")) { return ""; } return emailHost.trim(); } public void setEmailHost(String emailHost) { this.emailHost = emailHost; } public String getEmailFrom() { if (null == emailFrom || emailFrom.trim().equals("")) { return ""; } return emailFrom; } public void setEmailFrom(String emailFrom) { this.emailFrom = emailFrom; } public String getEmailUserName() { if (null == emailUserName || emailUserName.trim().equals("")) { return ""; } return emailUserName; } public void setEmailUserName(String emailUserName) { this.emailUserName = emailUserName; } public String getEmailPassword() { if (null == emailPassword || emailPassword.trim().equals("")) { return ""; } return emailPassword; } public void setEmailPassword(String emailPassword) { this.emailPassword = emailPassword; } public String getToEmails() { if (null == toEmails || toEmails.trim().equals("")) { return ""; } return toEmails; } public void setToEmails(String toEmails) { this.toEmails = toEmails; } public String getSubject() { if (null == subject || subject.trim().equals("")) { return "无主题" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") .format(new Date()); } return subject; } public void setSubject(String subject) { this.subject = subject; } public String getContent() { if (null == content || content.trim().equals("")) { return "无正文" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") .format(new Date()); } return content; } public void setContent(String content) { this.content = content; } public Map<String, String> getPictures() { return pictures; } public void setPictures(Map<String, String> pictures) { this.pictures = pictures; } public Map<String, String> getAttachments() { return attachments; } public void setAttachments(Map<String, String> attachments) { this.attachments = attachments; } public void sendEmail() throws MessagingException { if (this.getEmailHost().equals("") || this.getEmailFrom().equals("") || this.getEmailUserName().equals("") || this.getEmailPassword().equals("")) { throw new RuntimeException("发信人信息配置不足,请确认"); } JavaMailSenderImpl senderImpl = new JavaMailSenderImpl(); // 设置邮件的发信服务器 senderImpl.setHost(emailHost); MimeMessage message = senderImpl.createMimeMessage(); // 建立邮件消息 MimeMessageHelper messageHelper = new MimeMessageHelper(message, true, "utf-8"); // 设置发信人邮箱 messageHelper.setFrom(emailFrom); // 设置收信人邮箱 String[] toEmailAddress = toEmails.split(";"); List<String> toEmailList = new ArrayList<>(); if (null == toEmailAddress || toEmailAddress.length < 1) { throw new RuntimeException("收信人邮箱为空!"); } else { for (String address : toEmailAddress) { if (null != address && !address.trim().equals("")) { toEmailList.add(address); } } if (null == toEmailList || toEmailList.size() < 1) { throw new RuntimeException("收信人邮箱为空!"); } else { toEmailAddress = new String[toEmailList.size()]; for (int i = 0; i < toEmailList.size(); i++) { toEmailAddress[i] = toEmailList.get(i); } } } // 收信人数组 messageHelper.setTo(toEmailAddress); // 发信主题 messageHelper.setSubject(subject); // 支持HTML格式正文 messageHelper.setText(content, true); // 添加图片 if (null != pictures) { for (Iterator<Map.Entry<String, String>> it = pictures.entrySet() .iterator(); it.hasNext();) { Map.Entry<String, String> entry = it.next(); String cid = entry.getKey(); String filePath = entry.getValue(); if (null == cid || null == filePath) { throw new RuntimeException("图片的ID和路径不全"); } java.io.File file = new java.io.File(filePath); if (!file.exists()) { throw new RuntimeException("图片:" + filePath + "不存在"); } FileSystemResource img = new FileSystemResource(file); messageHelper.addInline(cid, img); } } // 添加附件 if (null != attachments) { for (Iterator<Map.Entry<String, String>> it = attachments .entrySet().iterator(); it.hasNext();) { Map.Entry<String, String> entry = it.next(); String cid = entry.getKey(); String filePath = entry.getValue(); if (null == cid || null == filePath) { throw new RuntimeException("请确认每个附件的ID和地址是否齐全!"); } java.io.File file = new java.io.File(filePath); if (!file.exists()) { throw new RuntimeException("附件" + filePath + "不存在!"); } FileSystemResource fileResource = new FileSystemResource(file); messageHelper.addAttachment(cid, fileResource); } } Properties prop = new Properties(); prop.put("mail.smtp.auth", "true"); // 将这个参数设为true,让服务器进行认证,认证用户名和密码是否正确 prop.put("mail.smtp.timeout", "25000"); // 添加验证 YuXingAuthenticator auth=new YuXingAuthenticator(emailUserName, emailPassword); Session session = Session.getDefaultInstance(prop, auth); senderImpl.setSession(session); // 发送邮件 senderImpl.send(message); } public static void main(String[] args) throws Exception { EmailUtils mu = new EmailUtils(); // test1(mu); // test2(mu); // test3(mu); // test4(mu); // test5(mu); test1(mu); } public static void test1(EmailUtils mu) throws Exception { String toEmails = ""; mu.setEmailFrom(""); mu.setEmailHost("smtp.sina.com"); mu.setEmailUserName(""); mu.setEmailPassword(""); String subject = "邮件"; Map<String, String> attachments = new HashMap<String, String>(); attachments.put("Hibernate3.1_DOC_CN", "C:/Users/yuxing/Desktop/Hibernate3.1_DOC_CN.chm"); Map<String, String> pictures = new HashMap<String, String>(); pictures.put("d2", "C:/Users/yuxing/Desktop/QQ截图20140716165755.png"); StringBuilder builder = new StringBuilder(); builder.append("<html><body>图片展示<br />"); builder.append("<img src=\"cid:d2\" /><br />"); builder.append("</body></html>"); String content = builder.toString(); mu.setToEmails(toEmails); mu.setSubject(subject); mu.setContent(content); mu.setPictures(pictures); mu.setAttachments(attachments); mu.sendEmail(); } }
package com.yuxinglab.utils; import javax.mail.Authenticator; import javax.mail.PasswordAuthentication; /** * * @author yuxing * @date 2012-5-8 下午2:48:25 */ public class YuXingAuthenticator extends Authenticator { private String username; private String password; /** * * @author geloin * @date 2012-5-8 下午2:48:53 * @param username * @param password */ public YuXingAuthenticator(String username, String password) { super(); this.username = username; this.password = password; } protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); } }
相关推荐
本文将深入探讨如何利用PHPMailer来创建一个邮件发送封装类,并讨论其核心概念和使用方法。 首先,让我们了解PHPMailer的基本使用步骤: 1. **安装PHPMailer**:你可以通过Composer在项目中引入PHPMailer。在终端...
本资源提供了一个基于PHPMailer的邮件发送封装类,方便开发者快速集成邮件发送功能。下面将详细讲解如何使用PHPMailer以及这个封装类。 PHPMailer是一个广泛使用的PHP邮件发送库,它支持SMTP协议,可以方便地通过...
本教程将详细讲解一个已经封装好的Java邮件发送工具类——`EasyEmailUtil`,它使得邮件发送变得简单易行,无需繁琐的配置,只需一键调用即可完成。 首先,`EasyEmailUtil`类通常会包含以下几个核心功能: 1. **...
总结来说,"发送邮件封装类源码"是一个方便开发者快速实现邮件发送功能的工具,它简化了与SMTP服务器的交互,使得邮件发送过程更加便捷。通过`SMailer`类的设计和`TestSMailer.cpp`的测试用例,我们可以深入理解邮件...
这个“邮件发送工具类”显然已经过封装,方便开发者快速集成到自己的项目中,无需深入了解底层的邮件协议。下面将详细阐述邮件发送的相关知识点。 首先,我们来了解邮件发送的基本原理。电子邮件系统主要基于SMTP...
本篇文章将深入探讨"SMailer"这一C++封装类,它是用来实现邮件发送功能的。 首先,`SMailer`类很可能是基于SMTP(Simple Mail Transfer Protocol)协议设计的。SMTP是互联网上用于发送电子邮件的标准协议,允许用户...
本工程类“邮件发送”专注于提供一个高效、便捷的邮件发送解决方案,它封装了邮件发送和邮件模板功能,使得开发者能够轻松地集成到自己的项目中。 邮件发送通常基于SMTP(Simple Mail Transfer Protocol)协议进行...
JAVA邮件发送工具类(支持同步和异步发送邮件以及附件信息),支持多个抄送邮件发送。
JavaMail邮件发送工具类是Java开发中用于发送电子邮件的标准库,它提供了丰富的API来处理复杂的邮件功能。在JavaMail中,我们可以通过创建特定的类和...通过这些类的封装,可以使得邮件发送的代码更加简洁、易于维护。
为了简化这个过程,开发者通常会创建一个邮件发送类来封装相关的功能。这里的"php发送邮件已经封装,用法已经注明"的标题和描述提示我们,有一个已经完成的PHP邮件发送类,并且在类的注释中提供了使用方法。 邮件...
"邮件发送封装"指的是将邮件发送的过程进行模块化,通过创建一个或多个类来简化代码,便于复用和维护。本篇文章将深入探讨如何在Java中实现邮件发送,特别是支持群发和附件的功能。 首先,我们要引入JavaMail API,...
PHP邮件发送类就是封装了SMTP通信的代码,使得开发者无需深入了解SMTP协议的细节就能发送邮件。 在实际使用中,开发者需要配置SMTP服务器的地址、端口、用户名和密码,以及是否使用SSL/TLS加密。这些信息通常可以在...
阿里巴巴邮件发送工具类是Java开发中用于实现电子邮件发送功能的一个实用工具集,它简化了邮件发送过程,并且依赖于特定的库文件。这个工具类包括了`Email1688.java`和`MailModel.java`两个核心类,以及配置文件`...
别忘了在你的类中实现`MFMailComposeViewControllerDelegate`协议,以便处理邮件发送的结果。例如,用户可能取消发送或发送成功,这些情况都需要相应的处理。 以上就是关于在iOS应用中封装打电话、发短信和发邮件...
通过阅读和理解这个工具类的源代码,你可以更好地了解邮件发送的流程,并根据需要定制自己的邮件发送功能。 总之,Java发送邮件小工具结合JavaMail API提供了简单易用的邮件发送功能。无论是开发人员还是运维人员,...
`邮件发送类.ec`是易语言的类库文件,它封装了与邮件发送相关的操作,提供了更高级别的接口,使得开发者可以更方便地进行邮件操作,而无需直接处理底层的SMTP通信细节。这通常包括创建邮件对象、添加附件、设置邮件...
"常规JavaMail 邮件发送实用类"标题所指的,通常是一个自定义的Java类,封装了JavaMail API的基本操作,使得邮件发送变得更加简单和便捷。这类实用类一般包含配置SMTP服务器、设置邮件内容、添加附件等功能。 ...
我们封装一个 MailService 类来实现普通的邮件发送方法。 Spring Boot整合邮件发送并保存历史发送邮箱 from,即为邮件发送者; to,邮件接收者; subject,邮件主题; content,邮件的主体。 邮件发送者 from ...
【腾讯邮件发送工具类】是基于Java编程语言开发的一个实用工具,主要目的是简化通过腾讯邮箱发送邮件的过程。这个工具类通常包含了一系列方法,用于设置邮件的收件人、主题、正文,以及添加附件等操作。它可能依赖于...