所谓可替换的意思就是说,同时发送两个内容,一个是HTML的,一个是纯文本的,具体现实那个内容要依据用户邮件客户端的配置来定
当需要对MIME消息就行更多的控制,你可以建立一个MimeMessagePreparator回调借口的实例,并把它传入JavaMailSender.send()方法,替换掉MimeMessage





























































































































































这里,prepare方法先设置发件人和收件人,还有主题,注意在设置发件人和收件人地址,我们必须使用InternetAddres.parse()的方法从一个String里建立一个InternetAddress实例,这是MimeMessageHelper方法隐藏的细节之一,一般总是使用MimeMessageHelper来配置消息属性,甚至是直接封装消息的时候
接下来,我们建立一个MimeMultipart实例,一个保存分段消息的封装类,我们指定MIME类型为Multipart/alternative,说明这里包含同一数据的可选格式,这个MimeMultipart实例被MimeMessage.setContent()方法指定为MimeMessage实例的正文
然后,我们创建两个MimeBodyPart,一个针对纯文本,一个针对html,前者会设置格式为Text/plain,后者再调用setContext方法时候,加一个参数"text/html",作为结果,他们都被被加入MimeMessage里,其中添加的顺序最为重要,应该把最希望显示的消息格式最后添加
这个代码结果是构造一个MimeMessage实例它顶层的Mime类型是multipart/alternative,包含两个消息,一个是text/plain,另一个是text/html
测试代码:


























发送成功后,客户端可以分别用html和纯文本方式查看邮件,可以看到不同的内容