Nodemailer 连接到本地 docker-mailserver
Nodemailer connect to local docker-mailserver
我需要设置本地邮件服务器并从中发送电子邮件。我使用 docker-mailserver and try to connect to it from simple NodeJS script that uses Nodemailer。
对于 docker-mailserver
设置,我遵循其文档中的指南,仅将 DOMAINNAME
env var 更改为我服务器的域名。容器的结果 docker port
是:
993/tcp -> 0.0.0.0:993
143/tcp -> 0.0.0.0:143
25/tcp -> 0.0.0.0:25
587/tcp -> 0.0.0.0:587
在 运行s 邮件服务器 docker 容器的同一台机器上,我尝试 运行 邮件发送脚本,代码如下:
const nodemailer = require('nodemailer');
let transporter = nodemailer.createTransport({
host: '0.0.0.0',
port: 587,
secure: false, // true for 465, false for other ports
auth: {
user: 'user@domain.com',
pass: 'password'
},
tls: { rejectUnauthorized: false },
debug: true,
});
let mailOptions = {
from: '"" <user@domain.com>',
to: 'some_account@gmail.com',
subject: 'Hello ✔',
text: 'Hello world?',
html: '<b>Hello world?</b>'
};
transporter.verify((error) => {
if (error) {
return console.error(error);
}
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
return console.error(error);
}
console.log('Message sent: %s', info.messageId);
});
});
但我只收到 Error: Connection closed
错误。
我在这里缺少什么来设置脚本和容器之间的正确连接?
默认情况下,容器在 docker 中是隔离的。
您可以通过在创建容器时添加 link 参数来允许 docker 中容器之间的连接
用法:
Docker run -d --name node_mailer --link EMAIL_SERVER_CONTAINER_NAME nodemailer_image
我需要设置本地邮件服务器并从中发送电子邮件。我使用 docker-mailserver and try to connect to it from simple NodeJS script that uses Nodemailer。
对于 docker-mailserver
设置,我遵循其文档中的指南,仅将 DOMAINNAME
env var 更改为我服务器的域名。容器的结果 docker port
是:
993/tcp -> 0.0.0.0:993
143/tcp -> 0.0.0.0:143
25/tcp -> 0.0.0.0:25
587/tcp -> 0.0.0.0:587
在 运行s 邮件服务器 docker 容器的同一台机器上,我尝试 运行 邮件发送脚本,代码如下:
const nodemailer = require('nodemailer');
let transporter = nodemailer.createTransport({
host: '0.0.0.0',
port: 587,
secure: false, // true for 465, false for other ports
auth: {
user: 'user@domain.com',
pass: 'password'
},
tls: { rejectUnauthorized: false },
debug: true,
});
let mailOptions = {
from: '"" <user@domain.com>',
to: 'some_account@gmail.com',
subject: 'Hello ✔',
text: 'Hello world?',
html: '<b>Hello world?</b>'
};
transporter.verify((error) => {
if (error) {
return console.error(error);
}
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
return console.error(error);
}
console.log('Message sent: %s', info.messageId);
});
});
但我只收到 Error: Connection closed
错误。
我在这里缺少什么来设置脚本和容器之间的正确连接?
默认情况下,容器在 docker 中是隔离的。 您可以通过在创建容器时添加 link 参数来允许 docker 中容器之间的连接 用法:
Docker run -d --name node_mailer --link EMAIL_SERVER_CONTAINER_NAME nodemailer_image