2017-10-06 8 views
0

내가 Meteor.methods() 내 사용자에게 개인화 된 전자 메일 알림을 보내고 폐쇄하지 :유성 이메일 : 연결이

Orders._collection.rawCollection() 
     .distinct('user', { day: dayId }) 
     .then((result) => { 
     let mailList = [] 
     User.find({ _id : { $in : result } }).forEach((user) => { 
      mailList.push({ to: user.emails[0].address, room: user.profile.room }); 
     }); 
     console.log('setting mail queue...') 
     mailList.forEach((user, index) => { 
      let delay = 0; 
      let time = delay + (index*200); 
      console.log('queue set for user '+user.to+" for "+ time/1000 +' seconds') 
      Meteor.setTimeout(() => { 
      console.log('sending mail to: ' + user.to); 
      Email.send({ 
       to: 'user.to', 
       from: "[email protected]", 
       subject: "test ", 
       html: template, 
      }); 
      }, time) 
     }) 
     }); 

이 예는 모든 메시지를 보내지 만, 10 개 이상의 메시지가있는 경우 다음 EXIM은 오류를 반환 하나의 SMTP 연결에 10 개 이상의 전자 메일이 있고 30 분 후에 메일이 대기열로 이동하여 전송됩니다. 이것은 모든 메일 이후 2.5 분 지연으로도 발생합니다.

메일을 보낸 후 서버와의 SMTP 연결을 종료 할 수있는 방법이 있습니까? 메일 URL은 smtp://localhost:25입니다.

+0

당신이 mailgun를 시도? Meteor의 이메일 패키지는 일회용과 제한된 사용에는 좋지만 Mailgun은 사용 사례에 더 좋을 수 있습니다. –

+0

인트라넷을 통해 데이터를 전송하는 데 외부 서비스를 실제로 사용할 수 없습니다. ( – jmwierzbicki

+0

이 유적 코드를 실행하는 동일한 컴퓨터에 EXIM이 설치되어 있습니까? – Styx

답변

2

Email 패키지는 node4mailer (노드 4에서 실행하려면 nodemailer으로 작은 수정)을 기반으로합니다.

기본적으로 전송 옵션의 경우 Email sets pool=true입니다. 즉, default pool options have maxMessages=100인데 반해, 보낸 메시지의 양이 제한에 도달 할 때까지 열린 연결을 다시 사용한다는 의미입니다 ( ). nodemailer 운송 maxMessages

  1. 패스 10 :

    smtp://localhost:25/?maxMessages=10

  2. 안 풀 (그 의지

    따라서, 귀하의 MAIL_URL을 수정하여, 당신은 당신의 문제를 해결하는 두 가지 방법이 있습니다 nodemailer에서 모든 이메일에 대해 새 연결을 열도록하십시오.

    smtp://localhost:25/?pool=false

유용한 링크 : nodemailer 문서 : Pooled SMTP

+0

완벽한 대답! – jmwierzbicki