JavaMail 发送邮件

//JavaMail 发送邮件 

 

//工具类

 

 

import javax.activation.*;

import javax.mail.Header;

import javax.mail.Multipart;

import javax.mail.internet.*;

import java.io.File;

import java.io.IOException;

import java.util.*;

 

import org.apache.commons.lang.StringUtils;

import org.apache.log4j.Appender;

import org.apache.log4j.Logger;

import org.springframework.mail.javamail.JavaMailSenderImpl;

import org.springframework.mail.javamail.MimeMailMessage;

 

 

public class MailSender {

    protected final Logger logger = Logger.getLogger(getClass());

 

    //服务器地址

    private String smtpServer;

    //服务器用户名

    private String smtpUser;

    //登陆服务器密码

    private String smtpPassword;

 

    private Appender appender;

 

    public void addAppender(Appender appender) {

        this.appender = appender;

        logger.addAppender(appender);

    }

 

    public void removeAppender() {

        logger.removeAppender(this.appender);

    }

 

    public Appender getAppender() {

        return appender;

    }

 

    /**

     * send mail

     * @param from 邮件显示地址  

     * @param to   邮件到发送地址(如果是有抄送,邮件以“,”隔开 。如:124@d.com,sss@w.com)

     * @param subject 标题

     * @param content 内容

     * @param fileAttachments 附件sourceFileName

     * @param sourceFileName 附件显示名称

     * @throws Exception

     */

    public void sendMail(String from, String to, String subject,

                         String content, List fileAttachments, List sourceFileName) throws Exception

    {

        JavaMailSenderImpl mailSender = new JavaMailSenderImpl();

        if (!StringUtils.isEmpty(this.smtpUser) && !StringUtils.isEmpty(this.smtpPassword)) {

            logger.info("Use Smtp Auth:" + this.smtpUser + "/" + this.smtpPassword);

            Properties p = new Properties();

            p.put("mail.smtp.auth", "true");

            mailSender.setJavaMailProperties(p);

    //设置用户名

            mailSender.setUsername(this.smtpUser);

    //设置密码

            mailSender.setPassword(this.smtpPassword);

        }

        mailSender.setDefaultEncoding("gb2312");

//设置主机

        mailSender.setHost(this.smtpServer);

        logger.info("Set properties complete.");

 

//生成消息

        MimeMessage message = mailSender.createMimeMessage();

        MimeMailMessage mm = new MimeMailMessage(message);

//处理抄送

        String[] cc = to.split(",");

        String[] bcc = new String [cc.length-1];

        if (cc.length > 1) {

            for(int i = 0;i<cc.length;i++){

                if(i==0){

                    to = cc[0].trim();

                }else {

                    bcc[i-1] = cc[i].trim();

                }

            }

            mm.setBcc(bcc);

        }

  //设置显示邮件

        mm.setFrom(from);

//设置发送到邮箱

        mm.setTo(to);

//设置标题

        mm.setSubject(subject);

 

        //multipart 设置附件

        Multipart mp = new MimeMultipart();

 

        MimeBodyPart mbp1 = new MimeBodyPart();

        mbp1.setContent(content, "text/html;charset=gb2312");

        mp.addBodyPart(mbp1);

 

        logger.info("Set MimeMailMessage complete.");

        int i = 0;

//处理附件

        for (Object Attachment : fileAttachments) {

            String fileAttachment = Attachment + "";

            if (!StringUtils.isBlank(fileAttachment)) {

                File file = new File(fileAttachment);

                if (!file.exists()) {

                    throw new IOException("File Not Exists:" + fileAttachment);

                }

 

                MimeBodyPart mbp2 = new MimeBodyPart();

 

                DataSource source = new FileDataSource(file);

                mbp2.setDataHandler(new DataHandler(source));

                String h = MimeUtility.encodeText(file.getName());

                mbp2.setFileName(MimeUtility.encodeText(sourceFileName.get(i) + ""));

                i++;

                logger.info(mbp2.getFileName());

                Enumeration e = mbp2.getAllHeaders();

                while (e.hasMoreElements()) {

                    Header header = (Header) e.nextElement();

                    logger.info(header.getName() + "->" + header.getValue());

                }

 

                mp.addBodyPart(mbp2);

            }

        }

//设置内容

        message.setContent(mp);

        //multipart end

//发送消息

        mailSender.send(message);

        logger.info("email sent to:" + to);

    }

 

    public void setSmtpServer(String smtpServer) {

        this.smtpServer = smtpServer;

    }

 

 

    public void setSmtpUser(String smtpUser) {

        this.smtpUser = smtpUser;

    }

 

    public void setSmtpPassword(String smtpPassword) {

        this.smtpPassword = smtpPassword;

    }

 

}

最后方法调用:
_mailSender = new MailSender();
                _mailSender.setSmtpServer("smtp.126.com");
                _mailSender.setSmtpUser("you mail name");
                _mailSender.setSmtpPassword("you mail password ");
List  _files  = new ArrayList<String>();//文件路径
//添加文件路径
List  _sourceFileName= new ArrayList<String>();//名称
//添加名称
_mailSender.sendMail("showmail" , "kkk@126.com,kkk@163.com" , "nihao" , "bucuo" , _files, _sourceFileName);

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值