javamail邮件Multipart支持同时发text和html混合消息,alternative纯文本与超文本共存

JavaMail混合邮件发送
本文介绍如何使用JavaMail API通过Multipart/alternative方式发送包含纯文本与HTML格式的混合邮件,实现不同客户端的最佳阅读体验。

         javamail邮件Multipart支持同时发text和html混合消息,alternative纯文本与超文本共存

 

转载:http://www.cnblogs.com/zdz8207/p/java-javamail-multipart-alternative.html
 

javamail邮件Multipart支持同时发text和html混合消息alternative纯文本与超文本共存

multipart/mixed:附件。

multipart/related:内嵌资源。

multipart/alternative:纯文本与超文本共存。



 

/**
     * 以Multipart混合格式发送邮件
     * 
     * @param mailInfo
     *            待发送的邮件信息
     */
    public boolean sendMultipartMail(MailSenderInfo mailInfo) {
        if(Common.isNullOrEmpty(mailInfo.getFromAddress())) {
            System.out.println("FromAddress is empty");
            return false;
        }
        // 判断是否需要身份认证
        MailAuthenticator authenticator = null;
        Properties pro = mailInfo.getProperties();
        // 如果需要身份认证,则创建一个密码验证器
        if (mailInfo.isValidate()) {
            authenticator = new MailAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());
        }
        // 根据邮件会话属性和密码验证器构造一个发送邮件的session
        Session sendMailSession = Session.getDefaultInstance(pro, authenticator);
        try {
            // 根据session创建一个邮件消息
            Message mailMessage = new MimeMessage(sendMailSession);
            // 创建邮件发送者地址
            Address from = new InternetAddress(mailInfo.getFromAddress());
            // 设置邮件消息的发送者
            mailMessage.setFrom(from);
            // 创建邮件的接收者地址,并设置到邮件消息中
            Address to = new InternetAddress(mailInfo.getToAddress());
            // Message.RecipientType.TO属性表示接收者的类型为TO
            mailMessage.setRecipient(Message.RecipientType.TO, to);
            // 设置邮件消息的主题
            mailMessage.setSubject(mailInfo.getSubject());
            // 设置邮件消息发送的时间
            mailMessage.setSentDate(new Date());
            
//            System.out.println("mailInfo.getText=" + mailInfo.getText());
//            System.out.println("mailInfo.getHtml=" + mailInfo.getHtml());
            
            MimeBodyPart textPart = new MimeBodyPart();
            textPart.setContent(mailInfo.getText(), "text/plain; charset=utf-8"); 
            MimeBodyPart htmlPart = new MimeBodyPart();
            htmlPart.setContent(mailInfo.getHtml(), "text/html; charset=utf-8");
            // MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象
            Multipart mp = new MimeMultipart("alternative");//mixed related alternative
            mp.addBodyPart(textPart);
            mp.addBodyPart(htmlPart);
            // 将MiniMultipart对象设置为邮件内容
            mailMessage.setContent(mp);
            // 发送邮件
            Transport.send(mailMessage);
            return true;
        } catch (MessagingException ex) {
            ex.printStackTrace();
        }
        return false;
    }


 

import java.util.Properties;

public class MailSenderInfo {

    // 发送邮件的服务器的IP和端口
    private String mailServerHost;
    private String mailServerPort = "25";
    // 邮件发送者的地址
    private String fromAddress;
    // 邮件接收者的地址
    private String toAddress;
    // 登陆邮件发送服务器的用户名和密码
    private String userName;
    private String password;
    // 是否需要身份验证
    private boolean validate = false;
    // 邮件主题
    private String subject;
    // 邮件的文本内容
    private String html;
    // 邮件的文本内容
    private String text;

    // 邮件附件的文件名
    private String[] attachFileNames;

    private String iwallHost;

    /**
     * 获得邮件会话属性
     */
    public Properties getProperties() {
        Properties p = new Properties();
        p.put("mail.smtp.host", this.mailServerHost);
        p.put("mail.smtp.port", this.mailServerPort);
        p.put("mail.smtp.auth", validate ? "true" : "false");
        p.put("mail.smtp.userName", this.userName);
        p.put("mail.smtp.password", this.password);
        return p;
    }

    public String getMailServerHost() {
        return mailServerHost;
    }

    public void setMailServerHost(String mailServerHost) {
        this.mailServerHost = mailServerHost;
    }

    public String getMailServerPort() {
        return mailServerPort;
    }

    public void setMailServerPort(String mailServerPort) {
        this.mailServerPort = mailServerPort;
    }

    public boolean isValidate() {
        return validate;
    }

    public void setValidate(boolean validate) {
        this.validate = validate;
    }

    public String[] getAttachFileNames() {
        return attachFileNames;
    }

    public void setAttachFileNames(String[] fileNames) {
        this.attachFileNames = fileNames;
    }

    public String getFromAddress() {
        return fromAddress;
    }

    public void setFromAddress(String fromAddress) {
        this.fromAddress = fromAddress;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getToAddress() {
        return toAddress;
    }

    public void setToAddress(String toAddress) {
        this.toAddress = toAddress;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getSubject() {
        return subject;
    }

    public void setSubject(String subject) {
        this.subject = subject;
    }

    public String getHtml() {
        return html;
    }

    public void setHtml(String html) {
        this.html = html;
    }

    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }

    public String getIwallHost() {
        return iwallHost;
    }

    public void setIwallHost(String iwallHost) {
        this.iwallHost = iwallHost;
    }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值