美文网首页
java 发送邮件

java 发送邮件

作者: TheUnforgiven | 来源:发表于2019-06-26 09:28 被阅读0次

    依赖:

     <dependency>
              <groupId>javax.mail</groupId>
              <artifactId>mail</artifactId>
              <version>1.4.7</version>
     </dependency>
    

    代码:

    public class MailUtil {
    
        private static final String HOST = "stmp.xxxxx.com";
    
        private static final String SENDER = "xxxxxxx@qq.com";
    
        private static final String PASS_TOKEN = "xfvraxxxxxhirxxxbighe";
    
        private Session session;
    
        private Message msg;
    
        private InternetAddress[] sendTo;
    
        private String subject;
    
        private String content;
    
    
        public MailUtil(String subject, String content, List<String> toList) throws Exception {
            this.init(subject, content, toList);
        }
    
        private void init(String subject, String content, List<String> toList) throws MessagingException {
            this.subject = subject;
            this.content = content;
            Properties props = new Properties();
            props.setProperty("mail.smtp.auth", "true");
            props.setProperty("mail.transport.protocol", "smtp");
            props.put("mail.smtp.HOST", HOST);//服务器地址
            //初始化session
            this.session = Session.getInstance(props);
            session.setDebug(true);
            //初始化发送地址列表
            this.sendTo = new InternetAddress[toList.size()];
            for (int i = 0, j = toList.size(); i < j; i++) {
                this.sendTo[i] = new InternetAddress(toList.get(i));
            }
            //初始化message
            this.msg = new MimeMessage(session);
            this.msg.setSubject(this.subject);
            this.msg.setSentDate(new Date());
            //发件人邮箱
            this.msg.setFrom(new InternetAddress(this.SENDER));
            //收件人邮箱
            this.msg.setRecipients(Message.RecipientType.TO,
                    this.sendTo);
        }
    
    
        private void sendMessage() throws Exception {
            //这时Transport对象与相应传输协议通信,这里是SMTP协议
            Transport transport = session.getTransport();
            // 登录邮箱 。配置发件人邮箱,密码或授权码
            transport.connect(SENDER, PASS_TOKEN);
            //发送邮件
            transport.sendMessage(msg, msg.getAllRecipients());
            transport.close();
        }
    
        public void send() throws Exception {
            msg.setText(content);
            this.sendMessage();
        }
    
        public void send(List<String> files) throws Exception {
    
            List<File> fileList = new ArrayList<>(files.size());
            files.forEach(x -> fileList.add(new File(x)));
    
            Multipart multipart = new MimeMultipart();
    
            // 设置正文
            BodyPart messageBodyPart = new MimeBodyPart();
            messageBodyPart.setContent(content, "text/html;charset=utf-8");
            multipart.addBodyPart(messageBodyPart);
    
            if (files.size() > 0) {
                for (File file : fileList) {
                    BodyPart attachmentPart = new MimeBodyPart();
                    DataSource source = new FileDataSource(file);
                    attachmentPart.setDataHandler(new DataHandler(source));
                    //避免中文乱码的处理
                    attachmentPart.setFileName(file.getName());
                    multipart.addBodyPart(attachmentPart);
                }
            }
            // 发送完整消息
            msg.setContent(multipart);
            msg.saveChanges();
            this.sendMessage();
        }
    
    
        public static void main(String[] args) throws Exception {
            List<String> sendTo = new ArrayList<>();
            sendTo.add("1111111@qq.com");
    
            List<String> files = new ArrayList<>();
            files.add("C:\\阿里巴巴Java开发...1528268103.pdf");
            files.add("C:\\Desktop\\数据库.txt");
            //带附件
            new MailUtil("java主题", "java内容 hello world", sendTo).send(files);
           //不带附件
            new MailUtil("java主题", "java内容 hello world", sendTo).send();
    
        }

    相关文章

      网友评论

          本文标题:java 发送邮件

          本文链接:https://www.haomeiwen.com/subject/vndqcctx.html