亞馬遜有一個很棒的功能,你可以透過 email 將有支援的檔案寄到亞馬遜帳號﹝個人設置﹞,便可以在個人文檔中看到此電子書,理論上是跟 Amazon Drive 共用容量﹝5 GB﹞,但大陸亞馬遜似乎沒有連動?
底下是有支援的檔案格式:
Kindle格式(.MOBI、.AZW)
Microsoft Word(.DOC、.DOCX)
HTML(.HTML、.HTM)
RTF (.RTF)
文本(.TXT)
JPEG(.JPEG、.JPG)
GIF (.GIF)
PNG (.PNG)
BMP (.BMP)
PDF (.PDF)
既然身為一個程式設計師,寫程式自動發 email 應該是一件很合理的事。
個人用的是 Node.js﹝nodemailer﹞,這幾天在傳送時都一直遇到下列錯誤,"您发送至Kindle的邮件未附任何文件附件"。
原本以為是類似編碼等設定沒有設定好,但在下載了郵件原始檔後也看不出任何異狀。
後來靈機一動,想說會不會是沒有郵件本文的原因,就隨便插了一段空白區塊,果然就成功了。注意不能是空字串,之前就是用空字串才有問題。
底下是我目前的設定,提供給有需要的人參考。
var user = config.gmail.user;
var clientID = config.gmail.clientID;
var clientSecret = config.gmail.clientSecret;
var redirectURL = config.gmail.redirectURL;
var refresh_token = config.gmail.refresh_token;
var amazonEmail = config.amazonEmail;
const smtpTransport = nodemailer.createTransport({
service: "gmail",
auth: {
type: "OAuth2",
user: user,
clientId: clientID,
clientSecret: clientSecret,
refreshToken: refresh_token,
accessToken: accessToken
}
});
const mailOptions = {
from: user,
to: amazonEmail,
subject: "Convert",
attachments: attachments,
generateTextFromHTML: true,
html: "<div></div>"
};
smtpTransport.sendMail(mailOptions, (error, response) => {
if (error) return reject(error);
smtpTransport.close();
resolve(response);
});