2017-07-28 57 views
1

我試圖從一個通過register365運行express的docker容器發送一些電子郵件。帶有Docker的Nodemailer

這是所使用的代碼

export class Emailer { 
transporter: nodemailer.Transporter; 
constructor() { 
    this.transporter = nodemailer.createTransport(smtpTransport({ 
     host: 'smtp.reg365.net', 
     auth: { 
      user: 'myuser', 
      pass: mypassword' 
     } 
    })); 
} 

public async sendEmail(to,body) { 
    try { 
     return await this.transporter.sendMail({to,from: '"TEST" <[email protected]>',text: body, subject: ' WE NEED THE CONTENT AND DESIGN OF THIS EMAIL!!!!'}); 
    } 
    catch(error) { 
     console.log('Email error'); 
     console.dir(error); 
    } 

} 
} 

這是所有工作的罰款,如果我跑快遞與故宮的開始,但如果我和搬運工運行它,它會失敗,此錯誤Error: Connection closed

它只是失敗使用smtp.reg.356.net,如果我使用的是Gmail,它會很好地工作

這是我使用

FROM node:8 

RUN mkdir -p /usr/src/app 
WORKDIR /usr/src/app 

RUN npm install -g nodemon 

COPY package.json /usr/src/app/ 
RUN npm install 

COPY ./dist /usr/src/app/dist 

EXPOSE 3005 
EXPOSE 25 
CMD [ "npm", "start" ] 
泊塢窗文件

非常感謝。

編輯: 按照要求,在運行Telnet smtp.reg365.net 25返回貓/etc/resolv.conf中的主機

domain Hitronhub.home 
nameserver 89.101.160.5 
nameserver 89.101.160.4 

這個telnet: could not resolve smtp.reg.356.net/25: Name or service not known

輸出在泊塢窗容器

search hitronhub.home 
nameserver 127.0.0.11 
options ndots:0 
+0

啓動容器並進入bash shell。執行命令'telnet smtp.reg.356.net 25'並在問題 –

+0

完成後輸出,這是輸出telnet:無法解析smtp.reg.356.net/25:名稱或服務未知。謝謝 – troyz

+0

主機上和docker容器內還有一個'cat/etc/resolv.conf'。很可能這是你需要的DNS設置。一旦我確認問題 –

回答

2

創建一個文件/etc/docker/daemon.json

{ 
"dns": ["89.101.160.5", "89.101.160.4"] 
} 

重新啓動docker服務,然後重試,看看它是否適用於您。

你可能在辦公室網絡上有你應該使用的自己的DNS服務器。所以你需要告訴Docker守護進程它的容器應該使用哪個DNS服務器。這就是造成這個問題的原因。 daemon.json文件可用於更改守護程序配置。

+0

解決了這個問題,謝謝! 你介意給我解釋是什麼問題? – troyz

+0

更新了答案,看看這個解釋是否有幫助? –

+0

是的,非常有幫助。非常感謝! – troyz