【发布时间】:2018-04-27 06:30:56
【问题描述】:
我正在尝试通过 Gmail API 发送带有附件的邮件。
我正在成功发送我的邮件,如下所示:
function sendmail(to, subject, message) {
var email =
"To: " + to + "\r\n" +
"Subject: " + subject + "\r\n" +
'Content-Transfer-Encoding: 8bit\r\n' +
'Content-Type: text/html; charset="UTF-8"\r\n' +
"" +
message + "\r\n\r\n";
var sendRequest = gapi.client.gmail.users.messages.send({
'userId': 'me',
'resource': {
'raw': window.btoa(unescape(encodeURIComponent(email))).replace(/\+/g, '-').replace(/\//g, '_')
}
});
sendRequest.execute();
}
现在我想将一些文件作为附件发送并尝试以下方式:
<input id="inputFile" type="file" onChange="convertToBase64();"/>
<script>
var file_ = '';
function convertToBase64() {
//Read File
var file = document.getElementById("inputFile").files[0];
var reader = new FileReader();
reader.onload = function () {
file_ = reader.result.split('base64,')[1];
};
reader.onerror = function (error) {
console.log('Error: ', error);
};
reader.readAsDataURL(file);
}
function sendmail(to, subject, message, date) {
console.log(date);
if (typeof file_ !== "undefined" && file_ != '') {
var email =
"To: " + to + "\r\n" +
"Subject: " + subject + "\r\n" +
'Content-Transfer-Encoding: 8bit\r\n' +
'Content-Type: text/html; charset="UTF-8"\r\n' +
"" +
message +
"\r\n\r\n" +
"--foo_bar_baz\r\n" +
"Content-Type: application/pdf\r\n" +
"MIME-Version: 1.0\r\n" +
"Content-Disposition: attachment; filename=example.pdf\r\n\r\n" +
file_ + "\r\n\r\n";
var sendRequest = gapi.client.gmail.users.messages.send({
'userId': 'me',
'resource': {
'raw': window.btoa(unescape(encodeURIComponent(email))).replace(/\+/g, '-').replace(/\//g, '_')
}
});
sendRequest.execute();
} else {
alert('boo');
}
}
</script>
我会收到邮件,但我看不到任何文字,并且由于“编码错误!”而无法打开文件。
我确实检查了整个 gmail 文档,但没有用。
有人可以帮帮我吗?
【问题讨论】:
-
您可以参考此thread,这可能与#172 中的问题相同。看起来消息和附件需要是一个单一的 mime 文档。 “查看developers.google.com/gmail/api/guides/sending 并阅读Java,似乎消息正文和附件必须进入单个mime 文档,然后才能上传。”
标签: javascript email gmail-api