用到java开发发送邮件的部分,其实很简单依赖的jar包有点击下载(无需积分)
主要是邮箱的服务器的验证
以下是源码
都是经过我自己运行才发表的,有任何问题可以留言或者邮箱联系我,我会第一时间处理。
服务器登陆的安全认证:
import javax.mail.Authenticator; import javax.mail.PasswordAuthentication; /** * 服务器邮箱登录验证 * * @author masque.java@gmail.com * */ public class MailAuthenticator extends Authenticator { /** * 用户名(登录邮箱) */ private String username; /** * 密码 */ private String password; /** * 初始化邮箱和密码 * * @param username * 邮箱 * @param password * 密码 */ public MailAuthenticator(String username, String password) { this.username = username; this.password = password; } String getPassword() { return password; } @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); } String getUsername() { return username; } public void setPassword(String password) { this.password = password; } public void setUsername(String username) { this.username = username; } }
发件箱工厂:
import java.io.IOException; import java.util.Properties; /** * 发件箱工厂 * * @author masque.java@gmail.com * */ public class MailSenderFactory { /** * 服务邮箱 */ private static SimpleMailSender serviceSms = null; /** * 获取邮箱 * * @param type * 邮箱类型 * @return 符合类型的邮箱 * @throws IOException */ public static SimpleMailSender getSender() throws IOException { if (initUser() == null) { serviceSms = new SimpleMailSender("test_for_masque@sina.cn", "test_for_masque"); } return serviceSms; } private static SimpleMailSender initUser() throws IOException { Properties p = PropertiesUtil.getInstance("mail-user.properties"); if (null == p) return null; serviceSms = new SimpleMailSender(p.getProperty("user.name"), p.getProperty("user.password")); return serviceSms; } }
发送邮件用户名以及密码我是在文件中配置的
import java.io.IOException; import java.util.Properties; /** * 读取Properties * * @author masque.java@gmail.com * */ public class PropertiesUtil { static Properties props = new Properties(); private PropertiesUtil() { } public static Properties getInstance(String path) throws IOException { props.load(PropertiesUtil.class.getClassLoader().getResourceAsStream( path)); return props; } public static String getProperty(String key) { String val = ""; if (props != null) { String prop = props.getProperty(key); if (prop != null) { val = prop; } } return val; } }
配置用户名以及密码:mail-user.properties
#test user.name = test_for_masque@sina.cn user.password = test_for_masque
邮件的主题和内容实体封装
/** * * @author masque.java@gmail.com * */ public class SimpleMail { private String subject; private String content; public String getSubject() { return subject; } public void setSubject(String subject) { this.subject = subject; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } }
邮件发送的类:
import java.util.List; import java.util.Properties; import javax.mail.Message.RecipientType; import javax.mail.MessagingException; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; /** * 简单邮件发送器,可单发,群发。 * * @author masque.java@gmail.com * */ public class SimpleMailSender { /** * 发送邮件的props文件 */ private final transient Properties props = System.getProperties(); /** * 邮件服务器登录验证 */ private transient MailAuthenticator authenticator; /** * 邮箱session */ private transient Session session; /** * 初始化邮件发送器 * * @param smtpHostName * SMTP邮件服务器地址 * @param username * 发送邮件的用户名(地址) * @param password * 发送邮件的密码 */ public SimpleMailSender(final String smtpHostName, final String username, final String password) { init(username, password, smtpHostName); } /** * 初始化邮件发送器 * * @param username * 发送邮件的用户名(地址),并以此解析SMTP服务器地址 * @param password * 发送邮件的密码 */ public SimpleMailSender(final String username, final String password) { // 通过邮箱地址解析出smtp服务器,对大多数邮箱都管用 final String smtpHostName = "smtp." + username.split("@")[1]; init(username, password, smtpHostName); } /** * 初始化 * * @param username * 发送邮件的用户名(地址) * @param password * 密码 * @param smtpHostName * SMTP主机地址 */ private void init(String username, String password, String smtpHostName) { // 初始化props props.put("mail.smtp.auth", "true"); props.put("mail.smtp.host", smtpHostName); // 验证 authenticator = new MailAuthenticator(username, password); // 创建session session = Session.getInstance(props, authenticator); } /** * 发送邮件 * * @param recipient * 收件人邮箱地址 * @param subject * 邮件主题 * @param content * 邮件内容 * @throws AddressException * @throws MessagingException */ public void send(String recipient, String subject, Object content) throws AddressException, MessagingException { // 创建mime类型邮件 final MimeMessage message = new MimeMessage(session); // 设置发信人 message.setFrom(new InternetAddress(authenticator.getUsername())); // 设置收件人 message.setRecipient(RecipientType.TO, new InternetAddress(recipient)); // 设置主题 message.setSubject(subject); // 设置邮件内容 message.setContent(content.toString(), "text/html;charset=utf-8"); // 发送 Transport.send(message); } /** * 群发邮件 * * @param recipients * 收件人们 * @param subject * 主题 * @param content * 内容 * @throws AddressException * @throws MessagingException */ public void send(List<String> recipients, String subject, Object content) throws AddressException, MessagingException { // 创建mime类型邮件 final MimeMessage message = new MimeMessage(session); // 设置发信人 message.setFrom(new InternetAddress(authenticator.getUsername())); // 设置收件人们 final int num = recipients.size(); InternetAddress[] addresses = new InternetAddress[num]; for (int i = 0; i < num; i++) { addresses[i] = new InternetAddress(recipients.get(i)); } message.setRecipients(RecipientType.TO, addresses); // 设置主题 message.setSubject(subject); // 设置邮件内容 message.setContent(content.toString(), "text/html;charset=utf-8"); // 发送 Transport.send(message); } /** * 发送邮件 * * @param recipient * 收件人邮箱地址 * @param mail * 邮件对象 * @throws AddressException * @throws MessagingException */ public void send(String recipient, SimpleMail mail) throws AddressException, MessagingException { send(recipient, mail.getSubject(), mail.getContent()); } /** * 群发邮件 * * @param recipients * 收件人们 * @param mail * 邮件对象 * @throws AddressException * @throws MessagingException */ public void send(List<String> recipients, SimpleMail mail) throws AddressException, MessagingException { send(recipients, mail.getSubject(), mail.getContent()); } }
运行测试主方法:将地址改为自己的QQ邮箱测试下吧
import java.io.IOException; import java.util.ArrayList; import java.util.List; import javax.mail.MessagingException; import javax.mail.internet.AddressException; /** * * @author masque.java@gmail.com * */ public class Main { public static void main(String[] args) { try { SimpleMailSender sender = MailSenderFactory.getSender(); List<String> recipients = new ArrayList<String>(); for(int i=0;i<10;i++) recipients.add("XXXXX@qq.com"); for (String recipient : recipients) sender.send(recipient, "测试邮件", "这是一封测试邮件!"); // sender.send(recipients, subject, content); } catch (IOException e) { e.printStackTrace(); } catch (AddressException e) { e.printStackTrace(); } catch (MessagingException e) { e.printStackTrace(); } } }
相关推荐
总的来说,"常规JavaMail 邮件发送实用类"是一个集成了JavaMail API核心功能的自定义工具,通过封装邮件发送的复杂逻辑,简化了开发者的代码,提高了开发效率。文件列表中的`MailUtil.java`很可能就是这样一个实用类...
下面我们将深入探讨JavaMail的基本概念、如何使用JavaMail发送邮件以及在Struts2框架中的实现方式。 JavaMail API主要包括以下组件: 1. `javax.mail.Session`:是JavaMail的核心,负责配置邮件服务器的信息,如...
本教程将详细讲解如何使用 JavaMail 实现邮件发送功能,包括支持多个接收人、抄送人以及添加多个附件。 首先,确保你已经添加了 JavaMail 的依赖库到你的项目中。如果是 Maven 项目,可以在 pom.xml 文件中添加以下...
下面是一个简单的JavaMail发送邮件的步骤: 1. **导入必要的库**:首先,在项目中导入`mail.jar`和`activation.jar`,确保编译和运行时能够访问到这些库。 2. **配置邮件会话**:创建一个`Properties`对象,设置...
在实际开发中,可以创建测试用例来确保邮件发送功能的正确性。 以上就是使用JavaMail发送文本、HTML和附件邮件的详细步骤。在实际应用中,还需要考虑错误处理、邮件格式验证、多线程发送等复杂情况。同时,对于企业...
本文将深入探讨如何使用JavaMail进行简单邮件发送,以及其支持的配置和附件功能。 首先,发送邮件的基本流程涉及到以下几个步骤: 1. **配置邮件会话**:JavaMail API中的`Properties`类用于存储邮件服务器的相关...
综上所述,基于 Javamail 的邮件发送客户端是一个综合性的项目,涵盖了网络通信、邮件协议、MIME 编码、Web 开发、用户交互、安全性等多个方面。这个项目不仅提供了基础的邮件发送功能,还支持群发,体现了 JavaMail...
JavaMail 是一个开源的 Java 库,用于处理电子邮件的发送和接收。它提供了与 SMTP、POP3 和 IMAP 协议交互的接口,是...以上内容只是基础,真正使用 JavaMail 开发邮件应用时,还需要结合具体需求进行深入学习和实践。
JavaMail邮件发送Demo是Java开发中用于实现电子邮件发送的一个实例,它依赖于两个关键的库:activation.jar和mail.jar。这两个库提供了JavaMail API,使得Java开发者能够方便地与各种邮件服务器进行交互,完成邮件的...
这个资源提供了一个完整的源码示例,演示如何利用JavaMail API发送邮件。在Java中,如果你想要发送带有附件、HTML内容或者需要进行SMTP验证的邮件,JavaMail是必不可少的工具。 JavaMail API 提供了丰富的类和接口...
在JavaMail中发送邮件主要涉及以下组件: 1. **Properties对象**:这个对象用来存储邮件服务器的相关配置信息,如SMTP服务器地址、端口号、用户名和密码。例如,`props.put("mail.smtp.host", "smtp.example.com");...
JavaMail邮件发送工具类是Java开发中用于发送电子邮件的标准库,它提供了丰富的API来处理复杂的邮件功能。在JavaMail中,我们可以通过创建特定的类和对象来实现邮件的发送。以下将详细介绍这些类以及如何使用它们。 ...
在JavaMail中,我们主要关注如何使用它来实现邮件发送的功能。 首先,发送邮件的关键在于设置SMTP服务器的相关配置。SMTP服务器是邮件发送的载体,大多数邮件服务提供商如Gmail、Yahoo或Outlook都提供了SMTP服务器...
这个小程序可能包含了一套完整的类,可以帮助开发者快速构建邮件发送功能,无需从头开始编写所有必需的代码。 JavaMail 提供了对 SMTP(简单邮件传输协议)、POP3(邮局协议)和 IMAP(因特网消息访问协议)等标准...
总的来说,JavaMail API提供了一个强大的工具集,使得在Java应用程序中发送邮件变得简单。这个例子展示了如何使用JavaMail API的基本功能,包括SMTP认证、添加附件和发送HTML邮件,这对于开发Web应用或其他需要邮件...
JavaMail API 提供了一个强大且灵活的框架,使得开发者能够在 Java 应用程序中轻松地实现邮件发送和接收功能。通过了解基本的概念、相关协议以及简单的使用案例,你可以快速上手并利用 JavaMail API 构建复杂的邮件...
这个实例将向我们展示如何使用JavaMail API在Java中实现邮件发送功能。以下是详细的步骤和相关知识点: 1. **JavaMail API简介**:JavaMail API是Java平台上的标准邮件服务接口,它提供了一系列类和接口,允许开发...
在JavaMail中,创建和发送邮件涉及到对邮件标准的理解,如RFC882和MIME协议。 RFC882 是一个早期的定义电子邮件格式的文档,规定了邮件的基本结构,包括邮件头和邮件体。邮件头包含了诸如发件人(from)、收件人...
JavaMail邮件发送源码是Java开发中用于发送电子邮件的一个库,它提供了丰富的API来处理SMTP、POP3和IMAP等邮件协议。这个简单的javamail实例表明,开发者已经成功地测试了邮件发送功能,确保其在实际应用中可以正常...
综上所述,这个压缩包提供了一整套关于使用JavaMail开发邮件收发系统的资源,从理论到实践,从设计到实现,再到最终的答辩准备,对于学习和开发此类系统的人来说,是一份非常宝贵的参考资料。通过深入学习和实践这些...