首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从transporter.sendMail创建可观察对象

从transporter.sendMail创建可观察对象
EN

Stack Overflow用户
提问于 2016-08-23 00:07:45
回答 1查看 249关注 0票数 0

我正在尝试从sendMail创建一个可观察对象,目前我的测试是这样的:

代码语言:javascript
复制
/// <reference path="../../typings/index.d.ts" />
import * as chai from "chai";
let assert = chai.assert;
const Rx = require('rxjs');
var nodemailer = require('nodemailer');

describe("emailPlugin", function() {
   it.only('should emit one value from a callback', function () {
       let mailOptions = {
          from: '"Fred Foo ?" <MY@gmail.com>', // sender address
          to: 'YOUR@gmail.com', // list of receivers; comma seperated
          subject: 'Hello ✔', // Subject line
          text: 'Hello world ?', // plaintext body
          html: '<b>Hello world ?</b>' // html body
      };
      let transporter = nodemailer.createTransport('smtps://MY%40gmail.com:MY@smtp.gmail.com');

      let boundCallback = Rx.Observable.bindNodeCallback(transporter.sendMail);
      boundCallback(mailOptions, function(error, info){
          if(error){
              return error;
          }
          return info.response;
      }).subscribe(x => console.log(x), e => console.error(e));
  });   
});

结果是一个错误:

[TypeError: Cannot convert undefined or null to object]

有人能帮帮我吗?

EN

回答 1

Stack Overflow用户

发布于 2016-12-13 18:40:25

我和你有完全一样的问题,我找到了解决它的方法。而不是:

代码语言:javascript
复制
let boundCallback = Rx.Observable.bindNodeCallback(transporter.sendMail);

这对我来说很有效:

代码语言:javascript
复制
let boundCallback = Rx.Observable.bindNodeCallback((options: any, callback: any) => {
  return transporter.sendMail(options, callback);
});

我不知道为什么,在我看来,原来的形式应该是正确的。看起来TypeScript在处理sendMail函数的类型上有些困难。希望这能有所帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39084119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档