当前位置: 首页 > 知识库问答 >
问题:

Apache Commons-email 1.4发送HtmlEmail不翻译html标签,也看不到附件

步嘉德
2023-03-14

我正在使用apache Commons email 1.4发送带有附加pdf的html电子邮件。但是,我收到的电子邮件是

<p>B600003292</p>
MIME-Version: 1.0
Content-Type: multipart/mixed;
        boundary="----=_Part_0_407006327.1513053130072"

------=_Part_0_407006327.1513053130072
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 7bit

<html><p>asdfb B600003292</p></html>
------=_Part_0_407006327.1513053130072
Content-Type: application/octet-stream; name=eee1_12122017043204284.pdf
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=eee1_12122017043204284.pdf

JVBERi0xLjQKJeLjz9MKMyAwIG9iaiA8PC9MZW5ndGggMTM0L0ZpbHRlci9GbGF0ZURlY29kZT4+
c3RyZWFtCnicK+RyCuEyUDC3NFIISeFyDeEK5CrkMtAzMDY3VSjnMlLwAkpmcRkaKPhyRccaKKRw
mZoomBsZKORymZpagFk5UJaegQmIbYLKBMlncIVz5QHNAcGidJCF+m6GCoZAG9O4DMGihgpAxWaW
pnoWhgohuVwaxYkpaSCsGZIFc1MgFwCOPyOjCmVuZHN0cmVhbQplbmRvYmoKMSAwIG9iajw8L1Bh
cmVudCA0IDAgUi9Db250ZW50cyAzIDAgUi9UeXBlL1BhZ2UvUmVzb3VyY2VzPDwvUHJvY1NldCBb
L1BERiAvVGV4dCAvSW1hZ2VCIC9JbWFnZUMgL0ltYWdlSV0vRm9udDw8L0YxIDIgMCBSPj4+Pi9N
ZWRpYUJveFswIDAgNjEyIDc5Ml0+PgplbmRvYmoKMiAwIG9iajw8L0Jhc2VGb250L1RpbWVzLVJv
bWFuL1R5cGUvRm9udC9FbmNvZGluZy9XaW5BbnNpRW5jb2RpbmcvU3VidHlwZS9UeXBlMT4+CmVu
ZG9iago0IDAgb2JqPDwvVHlwZS9QYWdlcy9Db3VudCAxL0tpZHNbMSAwIFJdPj4KZW5kb2JqCjUg
MCBvYmo8PC9UeXBlL0NhdGFsb2cvUGFnZXMgNCAwIFI+PgplbmRvYmoKNiAwIG9iajw8L1Byb2R1
Y2VyKGlUZXh0IDIuMS4wIFwoYnkgbG93YWdpZS5jb21cKSkvTW9kRGF0ZShEOjIwMTcxMjExMjMz
MjEwLTA1JzAwJykvQ3JlYXRpb25EYXRlKEQ6MjAxNzEyMTEyMzMyMTAtMDUnMDAnKT4+CmVuZG9i
agp4cmVmCjAgNwowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAyMTYgMDAwMDAgbiAKMDAwMDAw
MDM3MiAwMDAwMCBuIAowMDAwMDAwMDE1IDAwMDAwIG4gCjAwMDAwMDA0NjEgMDAwMDAgbiAKMDAw
MDAwMDUxMSAwMDAwMCBuIAowMDAwMDAwNTU1IDAwMDAwIG4gCnRyYWlsZXIKPDwvUm9vdCA1IDAg
Ui9JRCBbPGI0NzlhYjhiZWY0ZmM4Y2RhMWVjZDZjMzM2NTM0NDFhPjxlMjU1M2M4Y2UyMGM3ODk2
NzkxYmZjZGQzYjc5YzJhZj5dL0luZm8gNiAwIFIvU2l6ZSA3Pj4Kc3RhcnR4cmVmCjY4NgolJUVP
Rgo=
------=_Part_0_407006327.1513053130072--

我在上述电子邮件中有三个问题。

1) <代码>

2)它有很多意想不到的内容被写入电子邮件正文和我想要的实际正文内容,”

3)没有附件。我相信底部的加密代码是附件。不确定为什么它显示为正文内容而不是pdf。

下面是我的代码。

public void send(EmailType emailType) throws EmailException, MalformedURLException {
        org.apache.commons.mail.Email email;
        if (emailType == EmailType.SimpleEmail) {
            email = new SimpleEmail();
        } else if (emailType == EmailType.MultiPartEmail) {
            email = new MultiPartEmail();
            loadEmailAttachments(email);
        } else {
            email = new HtmlEmail();
            loadEmailAttachments(email);
        }
        email.setHostName(host);
        email.setSmtpPort(Integer.valueOf(port));
        //email.setAuthenticator(new DefaultAuthenticator(null, null));//.setAuthentication(new ());
        email.setCharset("utf-8");
        email.setFrom(from.getEmailAddress(), from.getDisplayName());
        for (TemplateEngineEmailer receiver : to) {
            email.addTo(receiver.getEmailAddress(), receiver.getDisplayName());
        }

        email.setSubject(subject);
        if (emailType == EmailType.HtmlEmail) {
            ((HtmlEmail) email).setHtmlMsg(body);
        } else {
            email.setMsg(body);
        }
        email.send();
    }

private void loadEmailAttachments(org.apache.commons.mail.Email email) throws EmailException, MalformedURLException {
    List<EmailAttachment> attachments = getEmailAttachment();
    if (attachments != null && !attachments.isEmpty()) {
        for (EmailAttachment attachment : attachments) {
            ((HtmlEmail) email).attach(attachment);
        }
    }
}

private List<EmailAttachment> getEmailAttachment() throws MalformedURLException {
    List<EmailAttachment> emailAttachments = new ArrayList<>();
    for (TemplateEngineAttachment attachment : attachments) {
        EmailAttachment emailAttachment = new EmailAttachment();
        if (attachment.isLocalFile()) {
            emailAttachment.setPath(attachment.getPath());
        } else {
            emailAttachment.setURL(new URL(attachment.getPath()));
        }
        emailAttachment.setDisposition(EmailAttachment.ATTACHMENT);
        emailAttachment.setDescription(attachment.getDescription());
        emailAttachment.setName(attachment.getName());
        emailAttachments.add(emailAttachment);
    }
    return emailAttachments;
}

共有1个答案

弓玉书
2023-03-14

事实证明,破坏一切的原因是html标记

 类似资料:
  • 本书现在已经可以在多种不同的人类语言下阅读,感谢这些无私的志愿者们! 如果你希望协助这些翻译工作,请先参阅下方的翻译语言与志愿者列表,再来决定是要帮助现有的翻译项目,还是重新开始翻译。 如果你计划开始一项新的翻译项目,请阅读如何翻译本书。 阿拉伯语 下方提供了本书阿拉伯语版本的链接。感谢 Ashraf Ali Khalaf 翻译了本书,你可以在 http://www.khaledhosny.org

  • There are many translations of the book available in different human languages, thanks to many tireless volunteers! If you want to help with these translations, please see the list of volunteers and l

  • 我试图使用gettext翻译我的PHP项目,但它不起作用。PHP输出gettext字符串名称,而不是实际的翻译。. po文件在POEditor中编译。 设置区域设置: PO文件:(在locale/en/LC_MESSAGES/filename.PO中) 在PHP中回声: 是的,我尝试了从stackoverflow到Google的一切,用了3个多小时。我已经在PHP中安装了gettext,还尝试重新

  • 本书的完整源代码可在 {{ book.sourceUrl }} 获得。 请 Fork 整个库。 然后,将库提取至你的电脑上。你需要了解如何通过 Git 来实现这一过程。 阅读 GitBook 文档 ,尤其是 Markdown 章节。 开始编辑 .md 文件,将其翻译至你的本地语言。 在 GitBook.com 上注册帐号,创建一本书籍,然后你便可以呈现出的精美网站,还包括 PDF、EPUB 等格式

  • 问题内容: 我有Yii2高级模板,我想为前端视图设置翻译,这是我所做的: 然后我加在 和 我在视图中使用它为: 但翻译无效,显示为 问题答案: 您只需按照以下步骤操作…… 步骤1: 在目录中,创建文件夹。 步骤2:在目录内创建文件,内容如下: 注意: 确保将所有必需的语言添加到“语言”数组中。在上面的示例中,我为Generate Yii2 Framework多语言添加了英语和俄语。 步骤3:在文件

  • 我有实体对象: 但当我添加排序信息时却不起作用:将引发以下异常(我使用的是Oracle数据库): 排序字段似乎没有用翻译,而是内联到SQL查询中。 是否有任何方法使可分页排序翻译,使它将不使用字段名,而使用列名?