Meteor + node-imap(nodejs) + mailparser(nodejs) 实现完整收发邮件

摘要:
版本信息:Meteor:windowsMIS安装0.6.4节点imap:npm指定的0.8.0版本,该版本不是默认版本0.7。x、 然后process.env.MAIL _ URL应写成:“smtp://xxx%40unitedstack.com:YOUR_PASSWORD@smtp.googlemail.com:465“确保将第一个@写为“%40”。只需安装visual studio并重新启动它。因为在线找到的所有节点imap+mailparser示例都存在版本问题。下面是一个可以在上述版本中运行的示例:varImap=requirevarMailParser=require.MailParservars=requirevarimap=newImap;functionopenInbox{imap.openBox;}varmessages=[]imap.once('ready',function(){openInbox(function(err,box){console.log(“open”)if(err)throrrr;imap.search(['UNSEEN',['SINCE','May202010']],function(err,results){if(err)throrr;varf=imap.fetch(results,{bodies:“”});f、 on('message',function(msg,seqno){varmailparser=newMailParser()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)throrrr;console.log(seqno+已保存!

版本信息:

Meteor:windows MIS安装  0.6.4

node-imap:npm指定的0.8.0版,不是默认的0.7.x版。

mailparser:npm安装0.3.6

以下是记录踩到的坑:

1. 使用meteor的email来发送邮件时,设置process.env.MAIL_URL要注意,如果你的gmail账号是自己设置了domain的,如“xxx@unitedstack.com”。那么process.env.MAIL_URL的写法应该是:“smtp://xxx%40unitedstack.com:YOUR_PASSWORD@smtp.googlemail.com:465”。一定注意第一个@写成“%40”。

2.github上node-imap的版本和例子都是适用于0.8.0的。使用npm如果安装默认的0.7.x版则跑不通官网例子。

3.windows下安装mailparser时会出现 “MSBuild” 报出的错误。安装 visual studio 然后重启就行了。

因为线上搜到的node-imap+mailparser的例子都有版本的问题。以下给出一个能在上面描述的版本中跑通的例子:

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();

免责声明:文章转载自《Meteor + node-imap(nodejs) + mailparser(nodejs) 实现完整收发邮件》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇SQL查询表中的有那些索引【C#.NET Core】 跨平台执行javascript下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

npm和package.json那些不为常人所知的小秘密

此文已由作者黄锴授权网易云社区发布。 欢迎访问网易云社区,了解更多网易技术产品运营经验。 强大的命令功能 如果你没使用过script,那你可算是从来没手动编辑过package.json。script作为package.json里最强大的功能,它赋予你新增脚本的能力。特别是从npm@2.0.0 之后,你可以用自定义参数执行脚本。甚至有人宣言,有了npm你可...

log4net 配置

1.在项目中引入log4net.dll组件; 2.在App.congfig中做如下修改(可省略) 在加入如下内容: 这个节点最好放在<configuration>下的第一个位置,不然在服务里会报错。 <configSections> <section name="log4net" type="log4net.Config.Lo...

moment的使用

1. 下载安装npm install moment -s 2. 引入 import moment from "moment" 3. 使用 console.log( moment().format("LLLL")) // Friday, March 26, 2021 11...

Centos6.5安装nodejs13

下载nodejs13二进制压缩包,解压后运行./node提示缺库文件。在网上面试并试了好多次后,记录一下。 缺失库文件的错误提示:   [root@localhost bin]# ./node   ./node: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (req...

syslogng配置

绚丽也尘埃 » syslog-ng配置 syslog-ng配置 March 13th, 2012绚丽也尘埃Leave a commentGo to comments syslog-ng的配置非常简单直观,于是乎配置好看看怎么用它实时收集日志。有两台服务器,一台服务器盯着error_log文件,一旦发现其有新数据,立即将日志发到另一台收集服务器。 c...

Oracle之物化视图

来源于:http://www.cnblogs.com/Ronger/archive/2012/03/28/2420962.html 近期根据项目业务需要对oracle的物化视图有所接触,在网上搜寻关于这方面的资料,便于提高,整理内容如下: 物化视图是一种特殊的物理表,“物化”(Materialized)视图是相对普通视图而言的。普通视图是虚拟表,应用的局限...