Meteor+node-i map(nodejs)+malparser(nodejs)完全送受信メールを実現します.
5231 ワード
バージョン情報:
Meteor:windows MISインストール 0.4.4
node-map:npm指定の0.8.0版は、デフォルトの0.7.x版ではありません.
mail parser:npmインストール0.0.6
記録が踏まれた穴は以下の通りです.
1.meteorのemailを使ってメールを送る場合、process.env.MAIL_を設定します.URLは注意してください.もしあなたのgmailアカウントが自分でdomainを設定した場合、「[email protected]」をクリックします.ではプロcess.env.MAIL_URLの書き方はsmtp://xxx%40unitedstack.com:[email protected] mail.com:465」.最初の@は必ず「%40」と書くように注意します.
2.github上のnode-i mapのバージョンと例はいずれも0.8.0に適用されます.npmを使ってデフォルトの0.7.x版をインストールすると、公式サイトの例が分かりません.
3.windowsでmail parserをインストールすると「MSBuild」のエラーが発生します.visual studioをインストールして再起動すればいいです.
オンラインで検索したnode-i map+malparserの例にはバージョンの問題があります.上記のバージョンで走れる例を以下に示す.
Meteor:windows MISインストール 0.4.4
node-map:npm指定の0.8.0版は、デフォルトの0.7.x版ではありません.
mail parser:npmインストール0.0.6
記録が踏まれた穴は以下の通りです.
1.meteorのemailを使ってメールを送る場合、process.env.MAIL_を設定します.URLは注意してください.もしあなたのgmailアカウントが自分でdomainを設定した場合、「[email protected]」をクリックします.ではプロcess.env.MAIL_URLの書き方はsmtp://xxx%40unitedstack.com:[email protected] mail.com:465」.最初の@は必ず「%40」と書くように注意します.
2.github上のnode-i mapのバージョンと例はいずれも0.8.0に適用されます.npmを使ってデフォルトの0.7.x版をインストールすると、公式サイトの例が分かりません.
3.windowsでmail parserをインストールすると「MSBuild」のエラーが発生します.visual studioをインストールして再起動すればいいです.
オンラインで検索したnode-i map+malparserの例にはバージョンの問題があります.上記のバージョンで走れる例を以下に示す.
var Imap = require('imap')
var MailParser = require("mailparser").MailParser
var fs = require("fs")
var imap = new Imap({
user: 'YOUR_USERNAME',
password: 'YOUR_PASSWORD',
host: 'imap.gmail.com',
port: 993,
tls: true,
tlsOptions: { rejectUnauthorized: false }
});
function openInbox(cb) {
imap.openBox('INBOX', true, cb);
}
var messages = []
imap.once('ready', function() {
openInbox(function(err, box) {
console.log("open")
if (err) throw err;
imap.search([ 'UNSEEN', ['SINCE', 'May 20, 2010'] ], function(err, results) {
if (err) throw err;
var f = imap.fetch(results, { bodies: '' });
f.on('message', function(msg, seqno) {
var mailparser = new MailParser()
msg.on('body', function(stream, info) {
stream.pipe( mailparser );
mailparser.on("end",function( mail ){
fs.writeFile('msg-' + seqno + '-body.html', mail.html, function (err) {
if (err) throw err;
console.log(seqno + 'saved!');
});
})
});
msg.once('end', function() {
console.log(seqno + 'Finished');
});
});
f.once('error', function(err) {
console.log('Fetch error: ' + err);
});
f.once('end', function() {
console.log('Done fetching all messages!');
imap.end();
});
});
});
});
imap.once('error', function(err) {
console.log(err);
});
imap.once('end', function() {
console.log('Connection ended');
});
imap.connect();