在 Javascript 中使用 GMAIL API 发送带有附件文件(超过 10 MB)的电子邮件

Posted

技术标签:

【中文标题】在 Javascript 中使用 GMAIL API 发送带有附件文件(超过 10 MB)的电子邮件【英文标题】:Send Email with attachment file (more than 10 MB) using GMAIL API in Javascript 【发布时间】:2021-06-13 14:37:14 【问题描述】:

如何使用 javascript 中的 GMAIL API 发送带有附件 PDF 文件(超过 10 MB)的电子邮件。我尝试使用一些 PDF 文件附件代码并发送电子邮件,如下所示。

const base64Data = 'Base64 PDF File string here (10 MB)'
const mixedB = 'mixedB';
const relatedB = 'relatedB';
const alternativeB = 'alternativeB';
const To = 'test@gmail.com'
const message = '<p>This is TEST EMAIL with PDF Attachment</p>'
const messageParts = [
  'From: ' + 'vijay@test.com',
  'To: ' + To,
  `Subject: This is Test Email`,
  'MIME-Version: 1.0',
  'Content-Type: multipart/mixed; boundary="' + mixedB + '"',
  '',
  '--' + mixedB,
  'Content-Type: multipart/related; boundary="' + relatedB + '"',
  '',
  '--' + relatedB,
  'Content-Type: multipart/alternative; boundary="' + alternativeB + '"',
  '',
  '--' + alternativeB,
  'Content-Type: text/html; charset=utf-8',
  '',
  message, // html content.
  '',
  '--' + alternativeB + '--',
  '',
  '--' + relatedB + '--',
  '',
  '--' + mixedB,
  'Content-Type: application/pdf;name="attachedFile.pdf"',
  'Content-Transfer-Encoding: base64',
  'Content-Disposition: attachment;filename="attachedFile.pdf"',
  '',
  base64Data, // base64 data of the file.
  '',
  '--' + mixedB + '--'
]

let aaa = messageParts.join('\r\n')

var sendRequest = gapi.client.gmail.users.messages.send(
  'userId': 'me',
  'uploadType': 'multipart',
  'resource': 
    'raw': window.btoa(aaa).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '')
  
);

return sendRequest.execute();

我收到一封电子邮件,但附件的 PDF 文件在下载后无法打开。 代码中有什么愚蠢的错误吗?请指导。

【问题讨论】:

代码是否适用于不同的、更小的 base64 字符串?您确定 base64 字符串是正确的,并且没有一个字节丢失或损坏吗? 是的,适用于较小的文件(PDF 和 PNG) base64.guru/converter/encode/pdf,我正在使用此站点从 PDF 进行 Base64 转换 【参考方案1】:

你应该做一个Resumable Upload 而不是多部分的。

正如Upload options 中提到的,可恢复上传更适合较大的文件:

可恢复上传:uploadType=resumable。对于可靠的传输,对于较大的文件尤其重要。

【讨论】:

以上是关于在 Javascript 中使用 GMAIL API 发送带有附件文件(超过 10 MB)的电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

gmail中的超链接不可点击

使用 Python IMAP 阅读 Gmail 邮件

使用 gmail 从本地主机发送电子邮件

在 GAS/Javascript 中保存带有特定主题行的 Gmail 附件

如何将JavaScript数据放入Gmail识别为URL的网址中?

javascript 使用javascript登录Gmail