node实现发送书籍到kindle
背景
平时给kinddle里面发送书籍都是通过邮件发送,每次都是打开浏览器上传附件等待…然后点击发送,时间久了就讨厌这种无聊的操作了,然后没事干就用node写了一个程序可以自动将本地目录下的文件自动发送到kinddle邮箱。
具体过程
创建一个目录来存放程序,凭自己的喜好啦。
- 用命令行进入到新建的目录下安装邮件中间件,安装完成后可以看到多出一个文件夹
npm install nodemailer
-
创建发送的代码,这个是主程序,里面分了三个部分。
- 获取附件
- 发送邮件
- 删除发送成功的附件
var nodemailer = require('nodemailer');
var files=require("./getdir");
//读取文件完毕后发送邮件
var lists=files //接收返回的附件数组信息
lists.then(function(arr){
var AttArrObj=[];
for(var i=0;i<arr.length;i++){
var attobj=new Object();
var filearr=arr[i].split("/");
var filename=filearr[filearr.length-1]
attobj.filename=filename
attobj.path=arr[i];
attobj.cid="kinddle"+i;
AttArrObj.push(attobj)
}
console.log(AttArrObj)
//导出后发送邮件
var transporter = nodemailer.createTransport({
service: '126',
auth: {
user: '###@126.com',
pass: '###' //授权码,通过126 这里直接取126网站获取
}
});
var mailOptions = {
from: '###@126.com', // 发送者
to: '###@126.com,###@kindle.cn,###@kindle.cn', // 接受者,可以同时发送多个,以逗号隔开
subject: 'kinddle', // 标题
//text: 'Hello world', // 文本
html: `kinddle电子书` ,
attachments: AttArrObj //附件信息
};
transporter.sendMail(mailOptions, function (err, info) {
if (err) {
console.log(err);
return;
}
console.log('发送成功');
//发送成功后删除目录下的所有文件
var deletefiles=require("./getdirdelete");
});
})
*获取附件
var fs=require("fs");
var path="F:\kiddle";
function getfiles(path){
return new Promise(function(resolve,reject){
fs.readdir(path,function(err,files){
if(err){
console.log('error:\n' + err);
resolve(err);
}
var arr=[];
files.forEach(function(file){
console.log('文件名:' + path + '/' + file);
console.log(arr)
arr.push(path + '/' + file)
console.log(arr)
})
resolve(arr)
})
})
}
console.log(11)
var list=getfiles(path)
module.exports=list
// list.then(function(arr){
// console.log("导出=="+arr)
// exports.files=arr
// })
*删除附件
var fs=require("fs");
var path="F:\kiddle";
function getfiles(path){
return new Promise(function(resolve,reject){
fs.readdir(path,function(err,files){
if(err){
console.log('error:\n' + err);
resolve(err);
}
var arr=[];
files.forEach(function(file){
console.log('清除文件名开始:' + path + '/' + file);
fs.unlinkSync(path + '/' + file);
console.log('清除文件名:' + path + '/' + file);
})
resolve(arr)
})
})
}
var list=getfiles(path)
module.exports=list
// list.then(function(arr){
// console.log("导出=="+arr)
// exports.files=arr
// })
- 执行 node 主方法即可。
7 回复
好东西.
不过,为什么不装个Foxmail?
@ugrg 程序员要有程序员的方式,棒棒哒
封装一个命令行cli工具,非常实用,棒棒哒
@i5ting 多谢建议,后期计划准备做个界面版然后用Electron打个包,弄成一个桌面应用的这样用起来更方便。
@ugrg 嘿嘿,其实主要是为了学习。
看到标题 强迫症要犯了
已经有人写过了: https://www.npmjs.com/package/kindle