`

javamail开发邮件【发送邮件】

阅读更多

用到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 邮件发送实用类"是一个集成了JavaMail API核心功能的自定义工具,通过封装邮件发送的复杂逻辑,简化了开发者的代码,提高了开发效率。文件列表中的`MailUtil.java`很可能就是这样一个实用类...

    JavaMail发送邮件的例子

    下面我们将深入探讨JavaMail的基本概念、如何使用JavaMail发送邮件以及在Struts2框架中的实现方式。 JavaMail API主要包括以下组件: 1. `javax.mail.Session`:是JavaMail的核心,负责配置邮件服务器的信息,如...

    javamail实现邮件发送(支持多接收人、多附件)

    本教程将详细讲解如何使用 JavaMail 实现邮件发送功能,包括支持多个接收人、抄送人以及添加多个附件。 首先,确保你已经添加了 JavaMail 的依赖库到你的项目中。如果是 Maven 项目,可以在 pom.xml 文件中添加以下...

    用javaMail发送邮件

    下面是一个简单的JavaMail发送邮件的步骤: 1. **导入必要的库**:首先,在项目中导入`mail.jar`和`activation.jar`,确保编译和运行时能够访问到这些库。 2. **配置邮件会话**:创建一个`Properties`对象,设置...

    JavaMail发送邮件(文本、html、附件)

    在实际开发中,可以创建测试用例来确保邮件发送功能的正确性。 以上就是使用JavaMail发送文本、HTML和附件邮件的详细步骤。在实际应用中,还需要考虑错误处理、邮件格式验证、多线程发送等复杂情况。同时,对于企业...

    Javamail 简单邮件发送

    本文将深入探讨如何使用JavaMail进行简单邮件发送,以及其支持的配置和附件功能。 首先,发送邮件的基本流程涉及到以下几个步骤: 1. **配置邮件会话**:JavaMail API中的`Properties`类用于存储邮件服务器的相关...

    自己写的一个基于Javamail的邮件发送客户端

    综上所述,基于 Javamail 的邮件发送客户端是一个综合性的项目,涵盖了网络通信、邮件协议、MIME 编码、Web 开发、用户交互、安全性等多个方面。这个项目不仅提供了基础的邮件发送功能,还支持群发,体现了 JavaMail...

    javamail 回执邮件资料

    JavaMail 是一个开源的 Java 库,用于处理电子邮件的发送和接收。它提供了与 SMTP、POP3 和 IMAP 协议交互的接口,是...以上内容只是基础,真正使用 JavaMail 开发邮件应用时,还需要结合具体需求进行深入学习和实践。

    JavaMail邮件发送Deom

    JavaMail邮件发送Demo是Java开发中用于实现电子邮件发送的一个实例,它依赖于两个关键的库:activation.jar和mail.jar。这两个库提供了JavaMail API,使得Java开发者能够方便地与各种邮件服务器进行交互,完成邮件的...

    用javamail实现邮件发送-完整源码-之前的那个资源变成50分一次下载了,所以重新上传一个,让大家能下载

    这个资源提供了一个完整的源码示例,演示如何利用JavaMail API发送邮件。在Java中,如果你想要发送带有附件、HTML内容或者需要进行SMTP验证的邮件,JavaMail是必不可少的工具。 JavaMail API 提供了丰富的类和接口...

    javaMail 发邮件

    在JavaMail中发送邮件主要涉及以下组件: 1. **Properties对象**:这个对象用来存储邮件服务器的相关配置信息,如SMTP服务器地址、端口号、用户名和密码。例如,`props.put("mail.smtp.host", "smtp.example.com");...

    javamail邮件发送工具类

    JavaMail邮件发送工具类是Java开发中用于发送电子邮件的标准库,它提供了丰富的API来处理复杂的邮件功能。在JavaMail中,我们可以通过创建特定的类和对象来实现邮件的发送。以下将详细介绍这些类以及如何使用它们。 ...

    javamail发送邮件实例

    在JavaMail中,我们主要关注如何使用它来实现邮件发送的功能。 首先,发送邮件的关键在于设置SMTP服务器的相关配置。SMTP服务器是邮件发送的载体,大多数邮件服务提供商如Gmail、Yahoo或Outlook都提供了SMTP服务器...

    javamail发送邮件小程序,类以及写好,只要放包,下载一个就可以

    这个小程序可能包含了一套完整的类,可以帮助开发者快速构建邮件发送功能,无需从头开始编写所有必需的代码。 JavaMail 提供了对 SMTP(简单邮件传输协议)、POP3(邮局协议)和 IMAP(因特网消息访问协议)等标准...

    用Java类实现JavaMail发送邮件的例子

    总的来说,JavaMail API提供了一个强大的工具集,使得在Java应用程序中发送邮件变得简单。这个例子展示了如何使用JavaMail API的基本功能,包括SMTP认证、添加附件和发送HTML邮件,这对于开发Web应用或其他需要邮件...

    JavaMail邮件开发详解

    JavaMail API 提供了一个强大且灵活的框架,使得开发者能够在 Java 应用程序中轻松地实现邮件发送和接收功能。通过了解基本的概念、相关协议以及简单的使用案例,你可以快速上手并利用 JavaMail API 构建复杂的邮件...

    利用JavaMail发送邮件的实例,可以直接运行

    这个实例将向我们展示如何使用JavaMail API在Java中实现邮件发送功能。以下是详细的步骤和相关知识点: 1. **JavaMail API简介**:JavaMail API是Java平台上的标准邮件服务接口,它提供了一系列类和接口,允许开发...

    使用JavaMail创建邮件和发送邮件

    在JavaMail中,创建和发送邮件涉及到对邮件标准的理解,如RFC882和MIME协议。 RFC882 是一个早期的定义电子邮件格式的文档,规定了邮件的基本结构,包括邮件头和邮件体。邮件头包含了诸如发件人(from)、收件人...

    javamail邮件发送源码

    JavaMail邮件发送源码是Java开发中用于发送电子邮件的一个库,它提供了丰富的API来处理SMTP、POP3和IMAP等邮件协议。这个简单的javamail实例表明,开发者已经成功地测试了邮件发送功能,确保其在实际应用中可以正常...

    基于Javamail的邮件收发系统(系统+文档+开题报告+任务书+外文翻译+文献综述+答辩PPT).zip

    综上所述,这个压缩包提供了一整套关于使用JavaMail开发邮件收发系统的资源,从理论到实践,从设计到实现,再到最终的答辩准备,对于学习和开发此类系统的人来说,是一份非常宝贵的参考资料。通过深入学习和实践这些...

Global site tag (gtag.js) - Google Analytics