[测评系统]--测评系统核心代码库
吴祝攀
2024-06-14 499b1d27da156ddd25c7adb58a5601805d8149fe
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
package com.ots.project.tool.email;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.extra.mail.MailUtil;
import com.ots.common.enums.MailMode;
import com.ots.framework.web.service.ConfigService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Objects;
 
@Slf4j
@Component
public class EmailMessageImpl implements EmailMessage {
    public final static String userName = "2040239371";
    public final static String password = "ivaikhcfclvlefbj";
    private final static String mailServerHost = "smtp.qq.com";
    private final static String mailServerPort = "465";
    private final static String fromAddress = "2040239371@qq.com";
    @Autowired
    private ConfigService configService;
    @Override
    public RushMailResult sendEmail(String emails, String title, String context) {
        return callSendEmail(emails, title, context, null);
    }
    private RushMailResult callSendEmail(String emails, String title, String context, String[] attachFileNames) {
        String mailMode = configService.getKey("MailMode");
        if (Objects.equals(MailMode.RushMail.name(), mailMode)) {
            return rushMailMode(emails, title, context, attachFileNames);
        } else if (Objects.equals(MailMode.HtMail.name(), mailMode)) {
            return htMailMode(emails, title, context, attachFileNames);
        } else {
            return javaMailMode(emails, title, context, attachFileNames);
        }
    }
    private RushMailResult rushMailMode(String emails, String title, String context, String[] attachFileNames) {
        try {
            String rushMailRemoteUrl = configService.getKey("RushMailRemoteUrl");
            
            SimpleMailSender sms = new SimpleMailSender();
            RushMailInfo info = new RushMailInfo();
            info.setUrl(rushMailRemoteUrl + "mail/sendattach");
            info.setAccount("rushmail");
            info.setEmails(emails);
            info.setTitle(title);
            info.setContext(context);
            info.setAttachFileNames(attachFileNames);
            RushMailResult rushMailResult = sms.sendPushMail(info);
            return rushMailResult;
        } catch (Exception ex) {
            log.error("rushMailMode 邮件目标:{} 发送失败:{}", emails, ex.getMessage(), ex);
            RushMailResult rushMailResult = new RushMailResult();
            rushMailResult.setResult(false);
            return rushMailResult;
        }
    }
    private RushMailResult htMailMode(String emails, String title, String context, String[] attachFileNames) {
        RushMailResult result = new RushMailResult();
        
        try {
            String[] split = emails.split(",");
            ArrayList<String> tos = CollUtil.newArrayList(split);
            if (Objects.nonNull(attachFileNames) && attachFileNames.length > 0) {
                File[] files = Arrays.stream(attachFileNames).map(p -> FileUtil.file(p)).toArray(File[]::new);
                MailUtil.send(tos, title, context, true, files);
            } else {
                MailUtil.send(tos, title, context, true);
            }
            result.setResult(true);
        } catch (Exception e) {
            log.error("邮件目标:{} 发送失败:{}", emails, e.getMessage(), e);
            result.setResult(false);
        }
        return result;
    }
    RushMailResult javaMailMode(String emails, String title, String context, String[] attachFileNames) {
        String mailServerHost = configService.getKey("MailServerHost");
        String mailServerPort = configService.getKey("MailServerPort");
        String mailUserName = configService.getKey("MailUserName");
        String mailPassword = configService.getKey("MailPassword");
        String fromAddress = configService.getKey("FromAddress");
        MailSenderInfo mailInfo = new MailSenderInfo();
        mailInfo.setMailServerHost(mailServerHost);
        mailInfo.setMailServerPort(mailServerPort);
        mailInfo.setValidate(true);
        mailInfo.setUserName(mailUserName);
        mailInfo.setPassword(mailPassword);
        mailInfo.setFromAddress(fromAddress);
        mailInfo.setToAddress(emails);
        mailInfo.setSubject(title);
        mailInfo.setContent(context);
        if (Objects.nonNull(attachFileNames)) {
            mailInfo.setAttachFileNames(attachFileNames);
        }
        
        SimpleMailSender sms = new SimpleMailSender();
        RushMailResult rushMailResult = new RushMailResult();
        try {
            sms.sendTextMail(mailInfo);
            rushMailResult.setResult(true);
        } catch (Exception e) {
            log.error("邮件目标:{} 发送失败:{}", emails, e.getMessage(), e);
            rushMailResult.setResult(false);
        }
        return rushMailResult;
    }
    @Override
    public RushMailResult sendEmailwithAttachment(String emails, String title, String context, String[] attachFileNames) {
        return callSendEmail(emails, title, context, attachFileNames);
    }
}