Java开发系列-电子邮箱

概述

电子邮箱就是在邮箱服务器上开启的一块空间。邮箱服务器就是一个安装在计算机的服务软件,提供有邮件服务。

邮箱的发送流程

现在tom要发送一份邮件给jerry,首先tom将邮件通过客户端连接自己设置发送邮件服务器,通过邮件发送服务器将邮件发给了jerry的发送邮件服务器中。
jerry也是通过客户端连接自己的收件服务器,然后收件服务器从jerry的发件服务器中获取邮件。
如果jerry要发送邮件给tom也是相同的流程。

邮箱协议

邮件的发送和接收都是需要协议的,分别是发送邮件协议、接收邮件的协议。
发送邮件的协议:smtp
接收邮件的协议:pop/pop3 或者 imap

查看下126邮箱的发送和接收邮件协议服务器

Java实现发送邮件

主要涉及到三个核心类

Properties 邮件服务器会话对象 Session
Message 邮件内容
Transport 邮件发送者

邮件发送Utils

MailUtils

package com.coderhong.utils;

import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;

public class MailUtils {

	public static void sendMail(String email, String emailMsg)
			throws AddressException, MessagingException {
		// 1.创建一个程序与邮件服务器会话对象 Session
		Properties props = new Properties();
		//设置发送的协议
		props.setProperty("mail.transport.protocol", "SMTP");
		
		//设置发送邮件的服务器
		props.setProperty("mail.host", "smtp.163.com");
		props.setProperty("mail.smtp.auth", "true");// 指定验证为true

		// 创建验证器
		Authenticator auth = new Authenticator() {
			public PasswordAuthentication getPasswordAuthentication() {
				//设置发送人的帐号和密码
				return new PasswordAuthentication("hongketao1616", "hkt762100.");
			}
		};

		Session session = Session.getInstance(props, auth);

		// 2.创建一个Message,它相当于是邮件内容
		Message message = new MimeMessage(session);

		//设置发送者
		message.setFrom(new InternetAddress("hongketao1616@163.com"));

		//设置发送方式与接收者
		message.setRecipient(RecipientType.TO, new InternetAddress(email)); 

		//设置邮件主题
		message.setSubject("用户激活");
		// message.setText("这是一封激活邮件,请<a href='#'>点击</a>");

		//设置邮件内容
		message.setContent(emailMsg, "text/html;charset=utf-8");

		// 3.创建 Transport用于将邮件发送
		Transport.send(message);
	}
}

MailUtils说明

原文地址:https://www.cnblogs.com/CoderHong/p/9520793.html