发送邮件

时间:2024-04-15 10:44:56

多处摘抄https://www.cnblogs.com/ysocean/p/7652934.html

 

按功能划分,邮件服务器可以划分为两种类型:

  ①、SMTP邮件服务器:用户替用户发送邮件和接收外面发送给本地用户的邮件,对应图的第一、二步。它相当于现实生活中邮局的邮件接收部门(可接收普通用户要投出的邮件和其他邮局投递进来的邮件)。

  ②、POP3/IMAP邮件服务器:用户帮助用户读取SMTP邮件服务器接收进来的邮件,对应图的第六步。它相当于专门为前来取包裹的用户提供服务的部门。

原理图:

 

 

手动发送smtp邮件:

 

 

使用smtp手动发送步骤:

telnet smtp.163.com 25

ehlo a18XXX845787

auth login

XXXXXXDI0ODQ1Nzg3QDE2My5jb20=   --邮箱的base64加密,如a18XXX845787@163.com

XXXXExMjM0NTY=   --邮箱授权码。 (邮箱-设置-选择smtp、pop3设置授权码,即设置允许第三方发送邮件)

mail from:<a1XXXXXX5787@163.com>

rcpt to:<18XXXXXX23240@163.com>

data

from:<a1XXXXX45787@163.com>

to:<18XXXXXX3240@163.com>
subject:helloworld         --这里需要空行,再写正文


this is mail       --这里需要空行后 写. 表示结束

完成后会显示250 mai OK即显示通过cmd命令行发送成功。

 

通过javamail实现发送邮件

@Test
	public void sendMail() throws Exception {
		Properties prop = new Properties();
		//设置认证方式
		prop.setProperty("mail.smtp.auth","true");
		//设置传输协议
		prop.setProperty("mail.transport.protocol","smtp");
		//设置发件人smtp服务器
		prop.setProperty("mail.smtp.host","smtp.163.com");
		Session session = Session.getInstance(prop);	
		session.setDebug(true);
		
		//创建邮件内容实例
		Message msg = new MimeMessage(session);
		//设置发件人
		msg.setFrom(new InternetAddress("a18XXXX5787@163.com"));
		//设置收件人
		msg.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress("18XXXXX240@163.com"));
		msg.setSubject("测试邮件标题");
		msg.setContent("简单的纯文本","text/plain;charset=utf-8");
		msg.setSentDate(new Date());

		Transport transport = session.getTransport();
		transport.connect("a1XXXX845787@163.com","Aaxxxx");  --此处为授权码
		transport.sendMessage(msg,msg.getAllRecipients());
		transport.close();
	}

  

 

 

 JavaMail API 按照功能可以划分为如下三大类:

  ①、创建和解析邮件的API

  ②、发送邮件的API

  ③、接收邮件的API

①、Message 类:javax.mail.Message 类是创建和解析邮件的核心 API,这是一个抽象类,通常使用它的子类javax.mail.internet.MimeMessage 类。它的实例对象表示一份电子邮件。客户端程序发送邮件时,首先使用创建邮件的 JavaMail API 创建出封装了邮件数据的 Message 对象,然后把这个对象传递给邮件发送API(Transport 类) 发送。客户端程序接收邮件时,邮件接收API把接收到的邮件数据封装在Message 类的实例中,客户端程序在使用邮件解析API从这个对象中解析收到的邮件数据。

  ②、Transport 类:javax.mail.Transport 类是发送邮件的核心API 类,它的实例对象代表实现了某个邮件发送协议的邮件发送对象,例如 SMTP 协议,客户端程序创建好 Message 对象后,只需要使用邮件发送API 得到 Transport 对象,然后把 Message 对象传递给 Transport 对象,并调用它的发送方法,就可以把邮件发送给指定的 SMTP 服务器。

  ③、Store 类:javax.mail.Store 类是接收邮件的核心 API 类,它的实例对象代表实现了某个邮件接收协议的邮件接收对象,例如 POP3 协议,客户端程序接收邮件时,只需要使用邮件接收 API 得到 Store 对象,然后调用 Store 对象的接收方法,就可以从指定的 POP3 服务器获得邮件数据,并把这些邮件数据封装到表示邮件的 Message 对象中。

  ④、Session 类:javax.mail.Session 类用于定义整个应用程序所需的环境信息,以及收集客户端与邮件服务器建立网络连接的会话信息,例如邮件服务器的主机名、端口号、采用的邮件发送和接收协议等。Session 对象根据这些信息构建用于邮件收发的 Transport 和 Store 对象,以及为客户端创建 Message 对象时提供信息支持。

 

 

 

 

.