`

java发送邮件,Authenticator,Session,Message,Multipart,BodyPart

阅读更多

使用java实现发送邮件功能,主要用到了Authenticator,Session,Message,Multipart,BodyPart。

Authenticator:抽象类,继承该类要实现getPasswordAuthentication方法,该方法主要是获取邮箱账户密码,用于用户验证。

Session:根据Properties属性,和用户验证信息创建MimeMessage;

Message:即MimeMessage,用户填写邮件的一些信息,如发送者,接收者,主题,内容,附件等;

Multipart:容器类,用于装作封装了邮件正文内容和附件的BodyPart;

BodyPart:封装邮件正文和附件及编写附件名称,有一点需要注意,如果邮件中有附件,一定要先添加附件后添加邮件正文,如果顺序颠倒,你编写的邮件正文内容会被附件覆盖掉;

以下为正式代码:

package cn.tongmap.global;

import java.io.File;
import java.io.IOException;
import java.util.Date;
import java.util.List;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.Authenticator;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
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;

public class Mail extends Authenticator{
	//账号
	private static String ACCOUNT_NUMBER;
	//密码
	private static String SECURITY_CODE;
	//邮箱主机
	private static String MAIL_SMTP_HOST;
	//邮箱端口
	private static int MAIL_SMTP_PORT;
	//是否验证
	private static boolean MAIL_SMTP_AUTH;
	
	static {
		Properties pro = null;
		try {
			pro = new Properties();
			pro.load(Mail.class.getResourceAsStream("/mail.properties"));
			//人流量数据SFTP服务器信息
			ACCOUNT_NUMBER = pro.getProperty("ACCOUNT_NUMBER").trim();
			SECURITY_CODE = pro.getProperty("SECURITY_CODE").trim();
			MAIL_SMTP_HOST = pro.getProperty("MAIL_SMTP_HOST").trim();
			MAIL_SMTP_PORT = Integer.parseInt(pro.getProperty("MAIL_SMTP_PORT").trim());
			MAIL_SMTP_AUTH = Boolean.parseBoolean(pro.getProperty("MAIL_SMTP_AUTH").trim());
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	//邮件主题
	private String subject;
	//邮件内容,可以使用html
	private String content;
	//附件源
	private String fileDataSource;
	//邮件接收者
	private List<String> recipients;
	
	public Mail() {
	}

	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;
	}

	public String getFileDataSource() {
		return fileDataSource;
	}

	public void setFileDataSource(String fileDataSource) {
		this.fileDataSource = fileDataSource;
	}

	public List<String> getRecipients() {
		return recipients;
	}

	public void setRecipients(List<String> recipients) {
		this.recipients = recipients;
	}
	/**
	 * 此方法一定要实现,否侧会连接出错,因为要进行用户名密码验证
	 */
	protected PasswordAuthentication getPasswordAuthentication() {
		return new PasswordAuthentication(ACCOUNT_NUMBER, SECURITY_CODE);
	}

	/**
	 * 邮件发送,在实例化对象的时候会需要填写一些发送邮件必要参数
	 * 在发送邮件时不需要任何参数
	 * @return 返回内容为字符串,用于提示邮件发送结果或错误提示
	 * @throws Exception
	 */
	public String send() throws Exception {
		if(null == recipients || recipients.size() == 0) {
			return "请填写邮件接收者!";
		}
		if(null == subject || "".equals(subject)) {
			return "请填写邮寄主题!";
		}
		if(null == content || "".equals(content)) {
			return "请填写邮寄内容!";
		}
		Authenticator auth = new Mail();
		Properties pro = new Properties();
		pro.put("mail.smtp.host", MAIL_SMTP_HOST);
		pro.put("mail.smtp.port", MAIL_SMTP_PORT);
		pro.put("mail.smtp.auth", MAIL_SMTP_AUTH);
		Session sendMailSession = Session.getDefaultInstance(pro, auth);
		// 根据session创建一个邮件消息
		Message mailMessage = new MimeMessage(sendMailSession);
		// 创建邮件发送者地址
		Address from = new InternetAddress(ACCOUNT_NUMBER);
		// 设置邮件消息的发送者
		mailMessage.setFrom(from);
		// 创建邮件的接收者地址,并设置到邮件消息中
		Address[] tos = new Address[recipients.size()];
		for (int i = 0; i < tos.length; i++) {
			tos[i] = new InternetAddress(recipients.get(i));
		}
		// Message.RecipientType.TO属性表示接收者的类型为TO
		mailMessage.setRecipients(Message.RecipientType.TO, tos);
		// 设置邮件消息的主题
		mailMessage.setSubject(subject);
		// 设置邮件消息发送的时间
		mailMessage.setSentDate(new Date());
		// MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象
		Multipart mainPart = new MimeMultipart();
		// 创建一个包含HTML内容的MimeBodyPart
		BodyPart html = new MimeBodyPart();
		//是否存在附件
		if(null != fileDataSource && !"".equals(fileDataSource)) {
			File file = new File(fileDataSource);
			if(file.exists()) {
				FileDataSource data = new FileDataSource(file);
				html.setDataHandler(new DataHandler(data));
				//避免文件名中文乱码
				String name = MimeUtility.encodeWord(file.getName());
				html.setFileName(name);
			} else {
				return "邮件中存在无效附件!";
			}
		}
		// 设置HTML内容,设置内容步骤要放在设置附件之后,以免内容被覆盖
		html.setContent(content, "text/html; charset=utf-8");
		mainPart.addBodyPart(html);
		// 将MiniMultipart对象设置为邮件内容
		mailMessage.setContent(mainPart);
		// 发送邮件
		Transport.send(mailMessage);
		return "邮件发送成功!";
	}
}

 其中mail.properties为邮件配置文件,单独放出来便于管理:

ACCOUNT_NUMBER = You Email@163.com
SECURITY_CODE = You Email Password
MAIL_SMTP_HOST = smtp.163.com
MAIL_SMTP_PORT = 25
MAIL_SMTP_AUTH =true

 

  • mail-1.4.3.jar (451.3 KB)
  • 描述: 发送邮件所需的jar包
  • 下载次数: 0
分享到:
评论

相关推荐

    Java发送outlook邮件

    首先,Java发送邮件主要依赖于JavaMail API,这是一个开源的Java库,它提供了标准的JavaMail API规范,允许开发者发送、接收和处理邮件。在发送Outlook邮件时,我们通常不是直接与Outlook交互,而是使用SMTP(Simple...

    JAVA发送邮件实现,消息格式化

    本文将详细讲解如何使用Java发送邮件,并着重介绍消息格式化的概念及其重要性。 首先,发送邮件的核心类是JavaMail API提供的`javax.mail`包中的`Session`, `Message`, `Transport`等类。为了发送邮件,我们需要...

    java 发送邮件sdk

    JavaMail SDK是Java发送邮件的核心工具,通过配置Session,创建并设置Message,以及使用Transport发送邮件,开发者可以轻松地在Java应用中实现邮件功能。同时,JavaMail还提供了丰富的功能,如HTML邮件、附件、抄送...

    java发送邮件的jar包

    Java发送邮件功能主要依赖于JavaMail API,这是一个用于处理电子邮件的开源库,广泛应用于Java应用程序中。在JavaMail API中,我们通常会用到 javax.mail 和 javax.mail.internet 这两个包,它们包含了发送邮件所需...

    JavaMain(java发送邮件)

    `JavaMain(java发送邮件)`这个主题就是关于如何在Java的主方法(`main`)中实现邮件发送的教程。 首先,发送邮件的基本步骤包括以下几个关键点: 1. **配置属性**:设置邮件服务器的相关参数,如SMTP服务器地址、...

    java 发送邮件 Demo 项目源码

    Java发送邮件是开发过程中常见的需求,特别是在需要向用户发送通知、报告或附件时。这个"java 发送邮件 Demo 项目源码"包含了实现这一功能的示例代码,可以帮助开发者快速理解并应用到自己的项目中。下面我们将详细...

    java发送邮件示例---可直接使用运行

    首先,`java发送邮件示例`涉及到的主要技术是JavaMail API,这是一个开源的Java库,用于处理电子邮件。它允许开发者通过SMTP(简单邮件传输协议)或其他邮件传输协议发送邮件,同时也能处理接收邮件。JavaMail API...

    java发送邮件最全源代码

    Java发送邮件是软件开发中常见的功能,特别是在企业级应用中,用于发送通知、报表或验证用户的电子邮件地址。本文将深入探讨Java如何通过SMTP(Simple Mail Transfer Protocol)协议发送邮件,并结合提供的"javamail...

    java实现发送邮件

    Java发送邮件是软件开发中常见的需求,特别是在自动化通知、服务端消息传递等方面。Java Mail API 是Java平台用于处理邮件收发的核心库。本教程将详细讲解如何使用Java实现发送邮件,包括发送图片和附件。 首先,你...

    java邮件发送(含附件发送)源码

    此外,对于不同的邮件服务商,可能需要启用“不安全应用”或使用应用特定的授权码,以允许程序通过SMTP发送邮件。 在提供的"javamail"压缩包文件中,通常会包含示例代码或库文件,帮助你理解和实践上述概念。通过...

    java发送邮件

    4. **发送邮件**:最后,使用Transport类的send方法发送邮件。 ```java Transport transport = session.getTransport("smtp"); transport.connect(); transport.sendMessage(message, message.getAllRecipients...

    java发送邮件jar包

    Java发送邮件功能是Java开发中常见的一项任务,主要用于企业级应用中的通知、验证或客户服务等场景。在Java中实现邮件发送,通常会依赖特定的库,例如本话题中提到的"java发送邮件jar包"。这个jar包可能包含了两个...

    java 发送邮件 sendEmail

    Java发送邮件,通常涉及到JavaMail API的使用,这是一个强大的库,允许Java开发者通过SMTP(简单邮件传输协议)或ESMTP(扩展SMTP)发送和接收电子邮件。以下将详细讲解Java发送邮件的过程及其关键技术点。 首先,...

    java 发送邮件+附件.rar

    7. 连接管理:在发送邮件前,需要通过Session对象的getTransport()方法获取Transport对象,并调用其connect()方法建立与SMTP服务器的连接。发送邮件后,记得调用Transport.close()来关闭连接。 下面是一个简单的...

    使用Java发送邮件

    本文将详细讲解如何...总的来说,Java发送邮件涉及了JavaMail API的使用,包括配置SMTP服务器、创建Message对象、设置邮件内容以及发送邮件。通过理解和实践这些概念,你可以轻松地实现跨邮箱服务商的邮件发送功能。

    javaEmail,利用java发送邮件

    本教程将详细讲解如何利用Java发送邮件,包括所需的库、基本概念以及具体实现步骤。 首先,Java邮件API(JavaMail API)是Java平台中用于处理电子邮件的标准API,它定义了一组接口和类,允许程序员创建和发送电子...

    java发送邮件代码SendMailEx

    总之,Java发送邮件涉及到JavaMail API的使用,主要步骤包括设置环境属性、创建Session、构建Message、添加附件(如有需要)以及发送邮件。`SendMailEx`类可能是对这些步骤的封装,提供一个简单易用的接口来实现邮件...

    java发送邮件示例

    Java发送邮件是Java开发中的一项常见任务,尤其在企业级应用和自动化通知系统中非常普遍。Java Mail API是Java平台上用于处理电子邮件的主要工具,它提供了一系列接口和类,使得开发者可以方便地创建、发送和接收...

    java实现邮件发送功能

    5. **发送邮件**:最后,使用`Transport`类的`send`方法发送邮件: ```java Transport.send(message); ``` 以上就是Java实现邮件发送功能的基本步骤。通过调整`Properties`和`Message`的配置,可以实现邮件的...

    java开发中发送邮件使用的jar包

    在Java Web开发中,发送邮件是一项常见的功能,用于与用户进行互动,如验证注册、通知更新或发送报表等。为了实现这一功能,开发者通常需要引入特定的JavaMail API库,也就是我们所说的jar包。JavaMail API是Java...

Global site tag (gtag.js) - Google Analytics