发送邮件使用的协议是SMTP协议,其端口号为25,是一种应用层协议。
一、SMTP登录信息
1.创建一个Properties对象,将SMTP服务器连接信息放进Properties对象中。
SMTP服务器连接信息主要包括:SMTP主机名,主机端口号,是否需要用户认证,启用TLS加密等。
2.创建Session会话
调用Session中的getInstance()方法,getIntance()方法需要传入两个参数,一为SMTP服务器连接信息,二为账号和密码的授权认证对象。
创建邮箱发送账号和账号授权密码。
通过调用Authenticator匿名对象,重写它的getPasswordAuthentication()方法,返回用户名和授权密码。
3.设置Debug进行调试
4.将上述代码写入JavaMailUtil工具类的createSession静态方法中,避免代码冗余。
二、发送文本内容邮件
实例化MimeMessage对象,调用它的一系列方法完成文本邮件的发送。
三、抄送多个邮箱,文本内容含有html标签
抄送就是给收件人发邮件的时候也给抄送收件人发一份(相当于备份),抄送收件人不是主要接受邮件的人。
四、发送既包含正文又包含附件的邮件
创建一个BodyPart对象,如果添加正文就调用setContent()方法,写入html文本内容,并设置其格式(text/html;charset=utf-8);如果添加附件,设置附件文件显示名称,并调用setDataHandler()方法,传入附件路径和文件的类型(application/octet-stream:二进制文件)。
创建一个MultiPart对象,这个对象中可以添加多个BodyPart对象。将邮件正文和附件添加进MultiPart对象中,再调用MimeMessage对象的setContent()方法将MultiPart对象放入邮件中,最后发送邮件。
五、发送正文中包含图片的文件
创建StringBulider对象,将要添加的html文本添加进去,如果要将附件中的图片显示在正文中,可以在正文中加入html标签<img src=\"cid:child\"/>,再将StringBulider对象中的内容添加到邮件正文中。
在附件中要设置图片的内容(addHeader("Content-ID", "child")),此ID要与html标签中图片的ID保持一致。