瀏覽代碼

feat: 发件人配置化开发

chenjianhua 6 月之前
父節點
當前提交
b82b73e714

+ 12 - 0
service-base/pom.xml

@@ -131,6 +131,18 @@
             </exclusions>
             <version>2.0.1</version>
         </dependency>
+        <!-- https://mvnrepository.com/artifact/jakarta.mail/jakarta.mail-api -->
+        <dependency>
+            <groupId>jakarta.mail</groupId>
+            <artifactId>jakarta.mail-api</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.eclipse.angus</groupId>
+                    <artifactId>angus-mail</artifactId>
+                </exclusion>
+            </exclusions>
+            <version>2.0.1</version>
+        </dependency>
         <dependency>
             <groupId>commons-fileupload</groupId>
             <artifactId>commons-fileupload</artifactId>

+ 25 - 3
service-base/src/main/java/com/simuwang/base/common/util/EmailUtil.java

@@ -261,10 +261,10 @@ public class EmailUtil {
         return props;
     }
 
-    public static void senEmail(MailboxInfoDTO mailboxInfoDTO, String emails, File file, JavaMailSender javaMailSender,String htmlText) throws Exception {
+    public static void senEmail(MailboxInfoDTO mailboxInfoDTO, String emails, File file,String htmlText) throws Exception {
         logger.info("send email begin .........");
         // 根据Session 构建邮件信息
-        MimeMessage message = javaMailSender.createMimeMessage();
+        MimeMessage message = new MimeMessage(getSession(mailboxInfoDTO));
         // 创建邮件发送者地址
         Address from = new InternetAddress(mailboxInfoDTO.getAccount());
         String[] emailArr = emails.split(";");
@@ -300,6 +300,28 @@ public class EmailUtil {
         // 保存邮件
         message.saveChanges();
         // 发送邮件
-        javaMailSender.send(message);
+        Transport.send(message);
+    }
+    public static Session getSession(MailboxInfoDTO mailboxInfoDTO){
+        try{
+            final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
+            Properties properties = new Properties();
+            properties.put("mail.smtp.host", mailboxInfoDTO.getHost());
+            properties.put("mail.smtp.auth", true);
+            properties.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY);
+            properties.setProperty("mail.smtp.socketFactory.fallback", "false");
+            properties.setProperty("mail.smtp.port", mailboxInfoDTO.getPort());
+            properties.setProperty("mail.smtp.socketFactory.port", mailboxInfoDTO.getPort());
+            properties.put("mail.smtp.ssl.enable", true);
+            // 根据邮件的会话属性构造一个发送邮件的Session,
+            //这里需要注意的是用户名那里不能加后缀,否则便不是用户名了
+            //还需要注意的是,这里的密码不是正常使用邮箱的登陆密码,而是客户端生成的另一个专门的授权码
+            JakartaUserPassAuthenticator authenticator = new JakartaUserPassAuthenticator(mailboxInfoDTO.getAccount(), mailboxInfoDTO.getPassword());
+            Session session = Session.getInstance(properties, authenticator);
+            return session;
+        }catch(Exception e){
+            logger.error("getSession : "+e.getMessage());
+        }
+        return null;
     }
 }

+ 0 - 13
service-deploy/src/main/resources/application.yml

@@ -49,19 +49,6 @@ spring:
   jackson:
     date-format: yyyy-MM-dd HH:mm:ss
     time-zone: Asia/Shanghai
-
-  mail:
-    host: smtp.exmail.qq.com
-    port: 465
-    protocol: smtp
-    username: chenjianhua@simuwang.com
-    password: Cjh@2021
-    properties:
-      mail:
-        smtp:
-          auth: true
-          ssl:
-            enable: true
 email-rule:
   nav: "净值,业绩报酬,规模"
   valuation: "估值表"

+ 1 - 3
service-manage/src/main/java/com/simuwang/manage/service/impl/CompanyEmailConfigServiceImpl.java

@@ -53,8 +53,6 @@ public class CompanyEmailConfigServiceImpl implements CompanyEmailConfigService
     private FundInfoMapper fundInfoMapper;
     @Autowired
     private DeletionInfoMapper deletionInfoMapper;
-    @Resource
-    private JavaMailSender javaMailSender;
 
     @Autowired
     private SysConfigMapper sysConfigMapper;
@@ -168,7 +166,7 @@ public class CompanyEmailConfigServiceImpl implements CompanyEmailConfigService
                 MailboxInfoDTO dto = getFromEmailInfo();
                 // "<p>您好,附件为产品的数据未发送到最新,麻烦尽快发送缺失的数据。若是产品清算或者有其他原因不再发送数据,还请将产品的清算日期或者不再发送数据的原因发送给我们,非常感谢~\n</p>";
                 String htmlText = sysConfigMapper.selectConfigByKey("deletion_email_body");
-                EmailUtil.senEmail(dto,emails,file,javaMailSender,htmlText);
+                EmailUtil.senEmail(dto,emails,file,htmlText);
                 //发送成功之后修改数据为已发送
                 deletionInfoMapper.updateSendStatusByFundId(fundIdList);
                 //写入发送历史