!71 update 发送附件适配网络文件

Merge pull request !71 from Bleachtred/Feat_2.3_0706
This commit is contained in:
风如歌 2023-07-06 10:34:28 +00:00 committed by Gitee
commit 883f56f348
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
2 changed files with 19 additions and 2 deletions

View File

@ -0,0 +1,9 @@
package org.dromara.email.comm.constants;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class FileConstants {
public static final String IO_FILE_TYPE = "application/octet-stream";
}

View File

@ -5,8 +5,10 @@ import cn.hutool.core.io.IoUtil;
import cn.hutool.core.lang.UUID;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpUtil;
import org.dromara.email.api.MailClient;
import org.dromara.email.api.Parameter;
import org.dromara.email.comm.constants.FileConstants;
import org.dromara.email.comm.entity.MailMessage;
import org.dromara.email.comm.errors.MailException;
import org.dromara.email.comm.utils.HtmlUtil;
@ -325,7 +327,13 @@ public class MailService implements MailClient {
String v = entry.getValue();
// 设置附件消息部分
MimeBodyPart messageBodyPart = new MimeBodyPart();
DataSource source = new FileDataSource(v);
DataSource source;
if (v.startsWith("http")) {
byte[] bytes = HttpUtil.downloadBytes(v);
source = new ByteArrayDataSource(bytes, FileConstants.IO_FILE_TYPE);
}else {
source = new FileDataSource(v);
}
messageBodyPart.setDataHandler(new DataHandler(source));
messageBodyPart.setFileName(k);
multipart.addBodyPart(messageBodyPart);
@ -338,7 +346,7 @@ public class MailService implements MailClient {
ByteArrayOutputStream os = new ByteArrayOutputStream();
ZipUtils.zipFilePip(files, os);
ByteArrayInputStream stream = IoUtil.toStream(os);
DataSource source = new ByteArrayDataSource(stream, "application/octet-stream");
DataSource source = new ByteArrayDataSource(stream, FileConstants.IO_FILE_TYPE);
messageBodyPart.setDataHandler(new DataHandler(source));
messageBodyPart.setFileName(StrUtil.isNotBlank(zipName) ? zipName : UUID.fastUUID() + ".zip");
multipart.addBodyPart(messageBodyPart);