отправить письмо из приложения node.js с помощью nodemailer - PullRequest
2 голосов
/ 18 августа 2011

Из моей коробки с Ubuntu (10.04) у меня нет проблем, отправьте письмо с:

echo "hello" | mail -s 'test email' my_gmail_nickname@gmail.com

Когда я пытаюсь отправить электронное письмо из приложения node.js, запущенного на том же компьютере, оно не работает.

var nodemailer = require('nodemailer');
nodemailer.SMTP = {
  host: 'localhost'
}
nodemailer.send_mail(
{
    sender: 'me@example.com',
    to:'my_gmail_nickname@gmail.com',
    subject:'Hello!',
    html: 'test',
    body:'test'
},
function(error, success){
    console.log(error);
    console.log(success);
    console.log('Message ' + success ? 'sent' : 'failed');
});

У меня есть сообщение об ошибке:

me@luc:~/gridteams/services/gpshop$ cat nohup.out 
{ stack: [Getter/Setter],
  arguments: undefined,
  type: undefined,
  message: 'ECONNREFUSED, Connection refused',
  errno: 111,
  code: 'ECONNREFUSED',
  syscall: 'connect' }
null
sent

Я вижу, что соединение отказано, но не понимаю, почему я получаю эту ошибку. Как вы думаете, что недостающий кусок?

1 Ответ

7 голосов
/ 18 августа 2011

Я думаю, что ваша проблема такова:

Программа командной строки mail использует двоичный файл с именем / usr / sbin / sendmail для отправки почты.sendmail - это программа командной строки, которая пытается доставить почту.Он использует локальное соединение с почтовой инфраструктурой.

Узел узла узла попытается подключиться к SMTP-серверу на хосте localhost на TCP-порту 25, который не существует.Просто попробуйте установить соединение с помощью программы telnet для проверки.

Вот сервер, на котором работает:

$ telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 xxxx.de ESMTP Postfix
QUIT
221 2.0.0 Bye
Connection closed by foreign host.

здесь не работает сервер:

$ telnet localhost 25
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused

ЕслиВы получаете второе, у вас есть проблема с вашим SMTP, который не запускается / не включается прослушивание через порт 25 - что является значением по умолчанию (по соображениям безопасности).Сначала вы должны настроить его.

Или - в соответствии с документацией nodemail вы также можете использовать двоичный файл sendmail:

'sendmail' alternative

Alternatively if you don't want to use SMTP but the sendmail

, а затем установить для свойства sendmail значение true (илив качестве пути к sendmail, если команда не находится в пути по умолчанию).

nodemailer.sendmail = true;

or

nodemailer.sendmail = '/path/to/sendmail';

If sendmail is set, then SMTP options are discarded.
...