2014-11-05 4 views
1

Я пытаюсь отправить почту с nodemailer. Скрипт работает на локальной машине, но я не могу включить nodemailer в лазурную мобильную службу. Добавлен «nodemailer»: «*» в моем пакете.json, но все еще не в состоянии его включить.nodemailer на лазурном мобильном телефоне не работает

Бревна говорит

TypeError: Не удается прочитать свойство «прототип» неопределенной

Я закомментирована полную логику, но ошибка все еще там. Наконец прокомментировал var nodemailer = require ('nodemailer');

и ошибка исчезла.

+0

Вы используете тот же (или аналогичные) версии 'node'? Используете ли вы nodemailer 0.7 локально, но 1.0 удаленно? Можете ли вы дать полную стеклу? – RikkusRukkus

+0

Вы правы. Версия узла моей машины - 0.10.29, а на моей машине - 0.8.28. Любая идея, как обновить версию nodejs на azure-mobile-service? Или как установить зависимости, совместимые с этой версией. Я проверил версию nodemailer, и она одинакова (1.3.0) на обеих машинах. – ribhu

+1

Не могу вам помочь, извините. [Согласно разработчику] (https://github.com/andris9/Nodemailer/issues/346), nodemailer 0.7.1 - последняя 0,8-совместимая версия. Вам нужно внести некоторые изменения в свой код. Nodemailer 1.x не полностью совместим с версиями 0.x. – RikkusRukkus

ответ

0

Чтобы обойти эту проблему, вам необходимо установить более раннюю версию nodemailer, чтобы она могла работать на мобильной службе Azure. Я добавил версию 0.7.1 nodemailer в package.json для Azure, затем сделал необходимые изменения кода, и это сработало для меня.

Код меняется, что вам нужно сделать, чтобы поддержать 0.7.1 очень незначительны, вот полный код из документации:

var nodemailer = require("nodemailer"); 

// create reusable transport method (opens pool of SMTP connections) 
var smtpTransport = nodemailer.createTransport("SMTP",{ 
    service: "Gmail", 
    auth: { 
     user: "[email protected]", 
     pass: "userpass" 
    } 
}); 

// setup e-mail data with unicode symbols 
var mailOptions = { 
    from: "Fred Foo ✔ <[email protected]>", // sender address 
    to: "[email protected], [email protected]", // list of receivers 
    subject: "Hello ✔", // Subject line 
    text: "Hello world ✔", // plaintext body 
    html: "<b>Hello world ✔</b>" // html body 
} 

// send mail with defined transport object 
smtpTransport.sendMail(mailOptions, function(error, response){ 
    if(error){ 
     console.log(error); 
    }else{ 
     console.log("Message sent: " + response.message); 
    } 

    // if you don't want to use this transport object anymore, uncomment following line 
    //smtpTransport.close(); // shut down the connection pool, no more messages 
}); 

Nodemailer 0.7.1 documentation