多处摘抄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 对象时提供信息支持。
.