2017-10-22 8 views
2

사용자가 내 사이트에 가입 할 때 전자 메일을 보내려고합니다. 나는 Nodemailer와 MailGun을 사용하기로 결정했고 함께 작업하는 많은 자습서 나 좋은 문서가 없다는 것을 알게되었습니다. MailGun과 같은 나머지 서비스들도 비슷한 문제로 보입니다. 아래 코드는 작동시키려는 시도입니다. 나는 그것이 일하는 것을 얻는 것에 관한 튜토리얼을 보았다. 그러나 그것을 알아낼 수없는 것처럼 보인다. 코드가 맞다고 생각하지만 인증이 잘못되었을 수도 있습니다. 아니면 두 가지 일을 모두 끝낼 수 있습니다. 내 dev 환경을 위해 cloud9.io 사용하고 그래서 어쩌면 그게 문제가 무엇입니까? 또는 내 도메인이 아직 확인되지 않았습니까?Nodemailer with MainGun

경로 : mailgun.com에서

app.post('/signup', 
    setRedirect({auth: '/dashboard', success: '/dashboard', failure: '/signup'}), 
    isUnauthenticated, 
    registrations.postSignup, 
    (req, res) =>{ 
     const output = ` 
     <h1>Your email is: ${req.body.email}</h1> 
     `; 

     // create reusable transporter object using the default SMTP transport 
     let transporter = nodemailer.createTransport({ 
     host: '[email protected]', 
     port: 587, 
     secure: false, // true for 465, false for other ports 
     auth: { 
      user: '[email protected]', // generated ethereal user 
      pass: 'MYPASSWORD' // generated ethereal password 
     }, 
     tls:{ 
      rejectUnauthorized:false 
     } 
     }); 

     // setup email data with unicode symbols 
     let mailOptions = { 
      from: '"Nodemailer Contact" <[email protected]>', // sender address 
      to: '`${req.body.email}`', // list of receivers 
      subject: 'Node Contact Request', // Subject line 
      text: 'Hello world?', // plain text body 
      html: output // html body 
     }; 

     // send mail with defined transport object 
     transporter.sendMail(mailOptions, (error, info) => { 
      if (error) { 
       return console.log(error); 
      } 
      console.log('Message sent: %s', info.messageId); 
      console.log('Preview URL: %s', nodemailer.getTestMessageUrl(info)); 

      // render view here and pass in data/message 
     }); 
    }); 

그런 다음 도메인 정보 :

State 
Unverified 
IP Address 
IPASSIGNED Manage IPs 
SMTP Hostname 
smtp.mailgun.org 
Default SMTP Login 
[email protected] 
API Base URL 
https://api.mailgun.net/v3/MYSUBDOMAIN 
Default Password 
MYPASSWORD SMTP credentials 
API Key 
MYKEY 
+0

스택 오버플로에 오신 것을 환영합니다. 귀하가 받고있는 오류를 보여주십시오. – Mikkel

+0

@Mikkel이 질문에 대한 답변을 이미 올렸습니다. 내가 코드를 다시 깨지 않으면 합리적으로 돌아가서 오류를 얻을 수 없습니다. 대답은 설명이 있습니다. 또한 오류는 단지 표현 파일을 참조하는 것이 아닙니다. 솔직히 말해서 무용지물이었습니다. 어쨌든 나는 그것을 고정시키고 다른 사람들은 해결책을 볼 수있다. – joshk132

답변

1

나는 차이를 보여주기 위해이 답변을 업데이트해야합니다 나타냈다. 나는 587에서 2525으로 변경했습니다. Google 서버에서 호스팅되는 클라우드 9를 사용 중이기 때문에 포트 587이 차단되었지만 SMTP는 2525이 허용됩니다. 둘째로 to 이메일을 새로운 사용자의 이메일 인 req.body.email으로 설정된 변수로 변경했습니다. 회사는 b) 등록하기가 마찰이 많고 전환율을 약간 낮추기 때문에 양식에 이름이 없습니다. 양식에 이름이있는 경우 서식 파일 문자열에 해당 이름을 사용합니다. 여기서 다시 전자 메일을 사용했습니다.

app.post('/signup', 
    setRedirect({auth: '/dashboard', success: '/dashboard', failure: '/signup'}), 
    isUnauthenticated, 
    registrations.postSignup, 
    (req, res) =>{ 
     var newUserEmail = req.body.email; 
     const output = ` 
     <h1>Your email is: ${req.body.email}</h1> 
     `; 

     // create reusable transporter object using the default SMTP transport 
     let transporter = nodemailer.createTransport({ 
     host: 'smtp.mailgun.org', 
     port: 2525, 
     secure: false, // true for 465, false for other ports 
     auth: { 
      user: '[email protected]', // generated ethereal user 
      pass: 'MYPASSWORD' // generated ethereal password 
     }, 
     tls:{ 
      rejectUnauthorized:false 
     } 
     }); 

     // setup email data with unicode symbols 
     let mailOptions = { 
      from: '"Nodemailer Contact" <[email protected]>', // sender address 
      to: newUserEmail, // list of receivers 
      subject: 'Node Contact Request', // Subject line 
      text: 'Hello world?', // plain text body 
      html: output // html body 
     }; 

     // send mail with defined transport object 
     transporter.sendMail(mailOptions, (error, info) => { 
      if (error) { 
       return console.log(error); 
      } 
      console.log('Message sent: %s', info.messageId); 

      // render view here and pass in data/message 
     }); 
    });