Nodemailer发送base64数据URI作为附件。怎么样?

 zhuzhuxiaozhuzhu 发布于 2023-01-09 17:59

基本上,我有一个使用Canvas创建的图像,它使用base64编码的数据URI。然后将此数据URI附加到电子邮件。

...,
 attachments:[{
 fileName: "cat.jpg",
 contents: new Buffer(cat, 'base64')
}],

电子邮件已收到,但附件不可见。$ file cat.jpg在linux中运行会返回:

cat.jpg: ASCII text, with very long lines, with no line terminators

为什么使用ASCII?我已经提到过base64。我该如何解决这个问题?谢谢。

1 个回答
  • 该变量cat可能包含“ data:image / jpeg; base64”部分。您不应该将该位传递给Buffer构造函数。

    看来,如果您传递无效数据,new Buffer()就不会抱怨:

    var pixel = "data:image/gif;base64,"
        + "R0lGODlhAQABAIABAP///wAAACH5"
        + "BAEKAAEALAAAAAABAAEAAAICTAEAOw==";
    var buffer = new Buffer(pixel, "base64"); // does not throw an error.
    

    您甚至可以获取有效的缓冲区。缓冲区是损坏的图像(或者,它不是以图像头开始的)。

    您必须自己剥离数据URI的第一部分:

    var buffer = new Buffer(pixel.split("base64,")[1], "base64");
    

    2023-01-09 18:02 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有