用java写一个发送邮件的小组件

package com.example.demo;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import java.io.*;
import java.security.Security;
import java.util.Properties;
@SpringBootApplication
public class SendMailFinal {
    public SendMailFinal() {
    }

    public static void CreateMessage(String zhuti,final Session session, String from,final String[] to,String[] copyto,final String sourcePath) throws MessagingException {
        try{
            final String subjectStr=zhuti;//主题
            final StringBuffer contentStr=new StringBuffer();//内容
            //创建默认的 MimeMessage 对象
            final MimeMessage message = new MimeMessage(session);
            // 设置发件人
            message.setFrom(new InternetAddress(from));
            // 设置收件人
            if (to != null && to.length > 0) {
                String toListStr = getMailList(to);
                message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(toListStr));
            }
            //Set Subject: 头部头字段
            message.setSubject(subjectStr);
            //创建消息部分
            final BodyPart messageBodyPart = new MimeBodyPart();
            //消息
            messageBodyPart.setContent(contentStr.toString(),"text/html;charset=UTF-8");
            //创建多重消息
            final Multipart multipart = new MimeMultipart();
            //设置文本消息部分
            multipart.addBodyPart(messageBodyPart);
            //为邮件添加多个附件
            MimeBodyPart attachment = null;
            final File source = new File(sourcePath);
            if (!source.exists()) {
                System.out.println(sourcePath + " not exists");
                return;
            }
            final File[] files = source.listFiles();
            for (final File f : files) {
                attachment = new MimeBodyPart();
                final String filePath =f.getPath();
                //根据附件文件创建文件数据源
                final DataSource ds = new FileDataSource(filePath);
                attachment.setDataHandler(new DataHandler(ds));
                //为附件设置文件名
                attachment.setFileName(ds.getName());
                multipart.addBodyPart(attachment);
            }
            // 设置抄送人
            if (copyto != null && copyto.length > 0) {
                String ccListStr = getMailList(copyto);
                message.setRecipients(Message.RecipientType.CC, InternetAddress.parse(ccListStr));
            }


            // 发送完整消息
            message.setContent(multipart);
            // 发送消息
            Transport.send(message);
        }catch (final MessagingException mex) {
            mex.printStackTrace();
        }
    }
    public static String getMailList(String[] mailArray) {
        StringBuffer toList = new StringBuffer();
        int length = mailArray.length;
        if (mailArray != null && length < 2) {
            toList.append(mailArray[0]);
        } else {
            for (int i = 0; i < length; i++) {
                toList.append(mailArray[i]);
                if (i != (length - 1)) {
                    toList.append(",");
                }

            }
        }
        return toList.toString();
    }


    /**
     *
     * @param args
     * @throws FileNotFoundException
     * @throws MessagingException
     */
    public static void main(final String[] args) throws FileNotFoundException, MessagingException {

        String zhuti=args[0];
        //发件人的 邮箱 和 密码
        final String fromAccount =args[1] ;
        final String fromPassword =args[2] ;
        //指定发送邮件的主机
        final String host = "smtp.163.com";
        //收件人
        String toUrl=args[3];
        String[] to= toUrl.split(",");
        //抄送人
        String copy=args[4];
        String[] copyto = copy.split(",");
        //创建参数配置, 获取系统属性
        final Properties properties = System.getProperties();
        Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
        final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
        properties.setProperty("mail.transport.protocol", "smtp");
        properties.setProperty("mail.smtp.socketFactory.fallback", "false");
        properties.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY);
        //传统的25端口已经不能再用  需要改成465
        properties.setProperty("mail.smtp.port", "465");
        properties.setProperty("mail.smtp.socketFactory.port", "465");
        properties.setProperty("mail.smtp.host", host);
        properties.put("mail.smtp.auth", "true");

        //根据配置创建会话对象,获取默认session对象
        final Session session = Session.getDefaultInstance(properties,new Authenticator(){
            @Override
            public PasswordAuthentication getPasswordAuthentication()
            {
                return new PasswordAuthentication(fromAccount, fromPassword); //发件人邮件用户名、密码
            }
        });
        session.setDebug(true);

        final String xmlPath=args[5];

        CreateMessage(zhuti,session,fromAccount,to,copyto,xmlPath);
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值