地质所 沉降监测网建设项目
zmk
2024-10-23 3f47c88e7cb4e53b3637620794420181f47b5a5e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
package com.javaweb.cms.util.email;
 
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail.internet.*;
import java.io.File;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.util.Properties;
 
public class SimpleMailSender {
    /**
     * 发送html格式邮件
     * @param mail
     * @return
     */
    public boolean sendHtmlMail(MailSenderInfo mail){
        boolean result=false;
        //身份认证器
        MyAuthenticator authenticator = null;
        if(mail.isValidate()){
        //身份认证
        authenticator=new MyAuthenticator(mail.getUserName(), mail.getPassword());
        }
        Properties props=mail.getProperties();
        //props.put("mail.smtp.ssl.enable", "true");
        //获取session
        Session sendMailSession=Session.getDefaultInstance(props, authenticator);
        try {
            //根据session获得一个邮件消息
            Message mailMsg=new MimeMessage(sendMailSession);
            //设置邮件发送者
            Address from=new InternetAddress(mail.getFromAddress());
            mailMsg.setFrom(from);
            //设置接受者
            int len=mail.getToAddress().length;//接收者个数
            Address[] to=new InternetAddress[len];
            for(int i=0;i<len;i++){
                to[i]=new InternetAddress(mail.getToAddress()[i]);
            }
            //Message.RecipientType.TO意思是接收者to的类型
            mailMsg.setRecipients(Message.RecipientType.TO, to);
            //设置邮件主题
            mailMsg.setSubject(mail.getSubject());
            //设置邮件时间
            mailMsg.setSentDate(new Date());
            //创建一个容器
            Multipart mainPart=new MimeMultipart();
            //创建一个包含html内容的MimeBodyPart
            BodyPart html=new MimeBodyPart();
            html.setContent(mail.getContent(),"text/html;charset=utf-8");
            mainPart.addBodyPart(html);
            //设置附件
            //创建一个附件容器
            //创建一个包含附件内容的MimeBodyPart
            String[] attachs=mail.getAttachs();
            if(attachs!=null){
                int size=attachs.length;//获得附件个数
                if(size>0){//如果附件个数大于0
                    for(int i=0;i<size;i++){
                        BodyPart attach=new MimeBodyPart();
                        DataSource source=new FileDataSource(attachs[i]);
                        attach.setDataHandler(new DataHandler(source));
                        File temp=new File(mail.getAttachs()[i]);
                        String fileName=temp.getName();//这里根据全路径获取文件名称
                        //设置附件文件名并且编码,否则中文会乱码
                        attach.setFileName(MimeUtility.encodeText(fileName));
                        mainPart.addBodyPart(attach);
                    }
                }
            }
            mailMsg.setContent(mainPart);
 
            //发送
            Transport.send(mailMsg);
            result=true;
        } catch (AddressException e) {
 
            e.printStackTrace();
        } catch (MessagingException e) {
 
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
 
            e.printStackTrace();
        }
 
 
        return result;
    }
}