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

在Meteor中附加base 64 PDF作为电子邮件附件

仇正豪
2023-03-14

我正在使用Meteor并尝试将pdf附加到电子邮件中。我目前将pdf作为base 64字符串返回给客户端,该字符串在新窗口中打开并显示pdf。我想以pdf的形式将base 64附加为电子邮件附件。

邮寄服务器方法

Meteor.methods({
  sendEmail: function (to, from, subject, html,attachment ) {
    check([to, from, subject, html,attachment], [String]);

    // Let other method calls from the same client start running,
    // without waiting for the email sending to complete.
    this.unblock();

    Email.send({
      to: to,
      from: from,
      subject: subject,
      html: html,
      attachment:attachment
    });
  }
});

将base64字符串返回给客户端的代码段:

webshot(html_string, fileName, options, function(err) {
  fs.readFile(fileName, function (err, data) {
     if (err) {
        return console.log(err);
     }

     fs.unlinkSync(fileName);
     fut.return(data);
  });
});
console.log("------------Waiting till PDF generated-----------");   

pdfData = fut.wait();
base64String = new Buffer(pdfData).toString('base64');

console.log("------------Return result-----------"); 

return base64String;

当前显示pdf的客户端代码:

        Meteor.call('screenshot',html,style,function(err, res) {
          if (err) {
                console.error(err);
          } else if (res) {
                window.open("data:application/pdf;base64, " + res);//view PDF result

                    if(localbool===true) { 
                        Meteor.call('sendEmail',
                              'rambat1010@gmail.com',//to
                              'courtsec@courtsec.com',//from
                              'Hello from Meteor!',//subject
                              'Sample HTML'//html
                              **What do I put here to attach base64 PDF**

                        );//close call for email send
                    alert("email sent!");
                      }
          }
        });

为了将base64字符串作为pdf附件附加,我应该做些什么?我似乎无法获得流星邮件发送的数据,因为我收到了错误“expected String and get object”。

谢谢

共有1个答案

董权
2023-03-14

您可以直接从服务器发送电子邮件。

...
pdfData = fut.wait();
base64String = new Buffer(pdfData).toString('base64');

let fileName = 'screenshot.pdf'
fs.writeFile(fileName, base64String, 'base64', function (err, res) {
    if (err) {console.log('Err ', err); }
});
Email.send({
  to: to,
  from: from,
  subject: subject,
  html: html,
  attachments: [
      {
        filePath: fileName
      }
    ]
});
...
 类似资料:
  • 问题内容: 我正在使用sendgrid发送电子邮件,并且使用以下代码可以正常工作,但没有附件。 但是我需要发送附件,因此我搜索了github源和Web文档API,由于某种原因,没有javadocs,但是有一个示例GitHub sendgrid, 所以我一直在尝试直到它起作用为止,我缩小了一些异常和响应代码,起初我是被禁止的未经授权,最好是响应202,表示有效且已排队(在此处检查),这是我的代码发送

  • 我想用mailto标签发送电子邮件,附带一个pdf文件作为附件。mailto标记使用以下方法打开邮件窗口,其中包含传递的参数,如to和subject: 但是,附件作为一个参数不起作用。请建议如何在手机中发送pdf附件。 谢啦

  • 使用Jenkins1.499和版本2.25的Jenkins电子邮件扩展插件。当电子邮件被发送时,电子邮件的内容显示为通知的附件,而不是在电子邮件的正文中。事实上,邮件正文是空白的。更改电子邮件的内容类型没有任何效果。我们使用Exchange/Outlook,这可能是问题所在吗?有什么想法可以在邮件的正文中获得邮件的内容吗?

  • 问题内容: 有没有办法将图像附加到用PHP创建的html格式的电子邮件中? 我们需要确保在发送给可能在阅读电子邮件时无法访问Internet的客户的电子邮件上带有公司徽标(显然,他们可以下载文件)。 问题答案: 尝试使用PEARMail_Mime软件包,该软件包可以为您嵌入图像。 您需要使用addHTMLImage()方法并传递内容ID(cid),这是一个唯一的文本字符串,您还将在img的src属

  • 问题内容: 我想发送带有PDF附件的电子邮件。我创建了PDF文件,然后执行了以下操作,但我认为这是错误的: 在发送电子邮件之前,我可以看到附件,但是当我发送电子邮件时,它的发送没有附件,这是因为我没有正确附加文件。 问题答案: 您错了。使用代替。

  • 我已经成功地让我的nodejs应用程序IMAP“附加”一封新邮件到Gmail,并带有自定义日期/时间。一切都很好。但是,如何使Gmail将其视为实际的新传入电子邮件?(需要根据现有过滤器进行排序,如果需要,可以推送到垃圾邮件等)。基本上,Gmail对新传入的电子邮件执行的所有功能。是否可以在新创建的电子邮件上引发任何此类事件,也许是使用其UID的内容?Gmail 是否通过 IMAP 支持此类功能?