Java邮件发送

Java发送邮件示例


import java.util.Properties;

import javax.mail.BodyPart;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * 邮件发送工具类
 * 
 *
 */
public class MailUtils {
    
    private static final Logger logger = LoggerFactory.getLogger(MailUtils.class);

    private MimeMessage mimeMsg = null;  //邮件内容
    private MailMessage message = null;  //邮件对象
    private Session session = null;
    private Properties props = null;     //邮件服务器信息
    
    private Multipart mp = null;
    
    public MailUtils() {}

    public void sendMail(MailMessage message, String smtpServer, boolean needAuth) throws Exception {
        
        this.message = message;
        mailSetting(smtpServer, needAuth);
        // modify by wy for 安全扫描
        Transport transport =null;
        try {
            mimeMsg.setContent(mp);
            mimeMsg.saveChanges();
            Session mailSession = Session.getInstance(props, null);
            transport = mailSession.getTransport("smtp");
            transport.connect((String) props.getProperty("mail.smtp.host"), message.getUsername(), message.getPassword());
            transport.sendMessage(mimeMsg, mimeMsg.getRecipients(javax.mail.Message.RecipientType.TO));
            if (message.getAddrsCopyTo() != null) {
                transport.sendMessage(mimeMsg, mimeMsg.getRecipients(javax.mail.Message.RecipientType.CC));
            }
            
        } catch (Exception e) {
            logger.error(e.getMessage(), e);
            throw new Exception("邮件发送失败");
        }
        finally{
            if(null != transport){
                transport.close();
            }
        }
        // end modify by wy
    }
    
    private void mailSetting(String smtpServer, boolean needAuth) throws Exception {
        
        if (props == null) {
            props = System.getProperties();
        }
        props.put("mail.smtp.host", smtpServer);
        if (needAuth) {
            props.put("mail.smtp.auth", "true");
        }
        try {
            session = Session.getDefaultInstance(props, null);
            mimeMsg = new MimeMessage(session);
            mp = new MimeMultipart();
        } catch (Exception e) {
            logger.error("邮件初始化失败,错误信息:", e);
            throw new Exception("邮件初始化失败.");
        }
        
        if (message == null) {
            throw new Exception("配置邮件信息为空.");
        }
        
        try {
            mimeMsg.setSubject(message.getSubject());
            BodyPart bp = new MimeBodyPart();
            bp.setContent(message.getContent(), "text/html;charset=gb2312");
            mp.addBodyPart(bp);
            mimeMsg.setFrom(new InternetAddress(message.getAddrFrom()));
            //修改为支持多个收件人
            String addTo = message.getAddrTo();
            String[] addTos = addTo.split(";");
            InternetAddress[] ias = new InternetAddress[addTos.length];
            for (int i = 0; i < addTos.length; i++) {
                ias[i] = new InternetAddress(addTos[i]);
            }
            mimeMsg.setRecipients(javax.mail.Message.RecipientType.TO, ias);
            
            if (message.getAddrsCopyTo() != null) {
                mimeMsg.setRecipients(javax.mail.Message.RecipientType.CC, InternetAddress.parse(message.getAddrsCopyTo()));
            }
        } catch (Exception e) {
            logger.error("邮件初始化失败,错误信息:" + e.getMessage(),e);
            throw new Exception("邮件初始化失败.");
        }
    }
    
}


import java.io.Serializable;

/**
 * 邮件
 * 
 */
public class MailMessage implements Serializable {

    private static final long serialVersionUID = -8538474071920662118L;

    private String subject;
    private String content;
    private String addrFrom;
    private String addrTo;
    private String addrsCopyTo;
    private String fileAffix;

    private String username;
    private String password;

    public String getSubject() {
        return subject;
    }

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

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public String getAddrFrom() {
        return addrFrom;
    }

    public void setAddrFrom(String addrFrom) {
        this.addrFrom = addrFrom;
    }

    public String getAddrTo() {
        return addrTo;
    }

    public void setAddrTo(String addrTo) {
        this.addrTo = addrTo;
    }

    public String getAddrsCopyTo() {
        return addrsCopyTo;
    }

    public void setAddrsCopyTo(String addrsCopyTo) {
        this.addrsCopyTo = addrsCopyTo;
    }

    public String getFileAffix() {
        return fileAffix;
    }

    public void setFileAffix(String fileAffix) {
        this.fileAffix = fileAffix;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

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

原文地址:https://www.cnblogs.com/claindoc/p/9850654.html