最后再以 javax.mail.Transport 的静态 send()方法传送信息:
Transport.send(message);
2.发送多重内容邮件
如果邮件可以包括 HTML 或附加文件等多重内容,则必须要有 javax.mail.Multipart
对象,并在这个对象中增加代表多重内容的javax.mail.internet.MimeBodyPart 对象。
举个例个来说,如果要让邮件内容包括HTML 内容,则可以如下:
//代表 HTML 内容类型的对象
MimeBodyPart htmlPart = new MimeBodyPart();
htmlPart.setContent(text,"text/html;charset=UTF-8");
//创建可包括多重内容的邮件内容
Multipart multiPart = new MimeMultipart();
//新增 HTML 内容类型
multiPart.addBodyPart(htmlPart);
//设定为邮件内容
message.setContent(multiPart);
将以代码取代范例中 getMessage()方法中 message.setText(text)该行。
实际上为了安全,在邮件里直接编写的HTML 都会被过滤掉。现在邮件中通常会
使用 JavaScript 制作所见即所得的画面编辑,而不是直接让用户编写 HTML。
如果要附加文件,则可以创建 MimeBodyPart,设定文件名与内容之后,再加入
MultiPart 中:
Byte[] file = ...;
MimeBodyPart filePart = new MimeBodyPart();
filePart.setFileName(MimeUtility.encodeText(filename,"UTF-8","B"));
filePart.setContent(file,part.getContentType());
在使用 MimeBodyPart 的 setFileName()设定附件名称时,必须做 Mime 编码,所以
借助 MimiUtility.encodeText()方法,在使用 setContent()设定内容时,还需指定内容
类型。