JAVA发送带附件邮件

JAVA发送带附件邮件

package com.linktai.utils;

import java.io.File;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.MessagingException;
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 javax.mail.internet.MimeUtility;

import org.junit.Test;
import org.springframework.stereotype.Component;

import com.linktai.pojo.Mail;

/**
 * 邮箱工具类,用于发送邮件
 * 
 * @author chenlijia
 *
 */
@Component
public class MailUtils {
    // 邮箱配置
    public static String myEmailAccount = "[email protected]";
    public static String myEmailPassword = "********";
    public static String myEmailSMTPHost = "smtp.exmail.qq.com";
    public String subjectEn;
    public String ContentEn;
    public String subjectCn;
    public String ContentCn;

    public String getSubjectEn() {
        return subjectEn;
    }

    public void setSubjectEn(String subjectEn) {
        this.subjectEn = subjectEn;
    }

    public String getContentEn() {
        return ContentEn;
    }

    public void setContentEn(String contentEn) {
        ContentEn = contentEn;
    }

    public String getSubjectCn() {
        return subjectCn;
    }

    public void setSubjectCn(String subjectCn) {
        this.subjectCn = subjectCn;
    }

    public String getContentCn() {
        return ContentCn;
    }

    public void setContentCn(String contentCn) {
        ContentCn = contentCn;
    }

    public boolean sendMessage(Mail mail, String name, String lang) {
        Properties props = new Properties();
        props.setProperty("mail.transport.protocol", "smtp");
        props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
        props.setProperty("mail.smtp.host", myEmailSMTPHost);
        props.setProperty("mail.smtp.auth", "true"); 
        final String smtpPort = "465";
        props.setProperty("mail.smtp.port", smtpPort);
        props.setProperty("mail.smtp.socketFactory.fallback", "false");
        props.setProperty("mail.smtp.socketFactory.port", smtpPort);
        props.setProperty("mail.smtp.ssl.enable", "true");
        Session session = Session.getInstance(props);
        // session.setDebug(true);
        MimeMessage message = new MimeMessage(session);
        try {
            message.setFrom(new InternetAddress(myEmailAccount, "linktime", "utf-8"));
            message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(mail.getRecever(), name, "utf-8"));
            message.setSubject(lang.equals("en") ? subjectEn : subjectCn);
            //body内容
            MimeBodyPart text = new MimeBodyPart();
            text.setContent(lang.equals("en") ? ContentEn : ContentCn, "text/html; charset=utf-8");
            //附件
            MimeBodyPart attachment = new MimeBodyPart();
            DataHandler dh2 = new DataHandler(new FileDataSource((mail.getFiles()))); 
            attachment.setDataHandler(dh2); 
            attachment.setFileName(MimeUtility.encodeText(dh2.getName()));

            MimeMultipart mm = new MimeMultipart();
            mm.addBodyPart(text);
            mm.addBodyPart(attachment); 
            mm.setSubType("mixed"); 

            message.setContent(mm);
            message.setSentDate(new Date());
            message.saveChanges();

            Transport transport = session.getTransport();
            transport.connect(myEmailAccount, myEmailPassword);
            transport.sendMessage(message, message.getAllRecipients());
            transport.close();
            return true;
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (MessagingException e) {
            e.printStackTrace();
        }

        return false;
    }

    

}

猜你喜欢

转载自blog.csdn.net/momomoniqwer/article/details/79373184