2017-04-10 11 views
0

평균 스택 applicaion에 nodemailer를 사용하고 있습니다. 나는 그것을 사용하여 성공적으로 메일을 보내고있다.모든 XML 파일에서 메일 내용을 가져 오는 방법

이제 상황에 따라 메일을 보내려고합니다. 이를 위해 xml 페이지에 메일 내용을 저장하고 있으며 nodemailer의 html 태그에있는 핵심 단어에 따라 해당 메일 내용을 가져와야합니다.

예 : 사용자가 등록한 경우 xml 파일에 등록 키워드를 가져 와서 등록 메일이 전송됩니다.

XML 파일을 nodemailer 옵션에서 해당 XML 파일의 내용을 얻는 방법 이상에서

let mailOptions = { 
    from: 'mailid', // sender address 
    to: 'mailid', // list of receivers 
    subject:, // Subject line 

    html: '' // html body 
}; 

아래로

<?xml version="1.0" standalone="yes"?> 
<MailContent> 
    <registration> 
    <AfterSignUp> 
    <html><body><p> 
     Hello #FirstName #LastName 
    </p> 
     <p> 
     <br/> 
     You recently registered for #ProjectName.To complete your registration, please <a href="#URL">Click Here </a> to confirm 'your' account. 
     </p> 
    <br/> 
     <p> 
     Warm Regards, 
     </p> 
     <br/> 
     <p> 
     System Administrator 
     </p> 
     <br/> 
     <p> 
     #ProjectName. 
     </p></body></html></AfterSignUp> 
    <SignUpSubject>Registration confirmation for #ProjectName</SignUpSubject> 
    </registration> 

    <ForgotPassword> 
    <ForgetContent><html><body><p> 
     Hello #FirstName #LastName 
     </p> 
     <p> 
     You have requested to have your password reset for your account at #ProjectName. 
     </p> 
     <p> 
     Click the below link to reset your account password 
     </p> 
     <p> 
     <a href="#URL">Reset Password </a> 
     </p> 
     <br/> 
     <p> 
     Warm Regards, 
     </p> 
     <br/> 
     <p> 
     System Administrator 
     </p> 
     <br/> 
     <p> 
     #ProjectName. 
     </p></body></html></ForgetContent> 
    <ForgetSubject>#ProjectName password recovery.</ForgetSubject> 
    </ForgotPassword> 

</MailContent> 

노드 메일러 mailoptions 아래와 같이는

답변

0

나는 문제를 해결 한 빠른 해결을 위해 Nodemailer을 참조하여 핸들 바 및 fs를 사용하여 html 페이지를 렌더링합니다.

나는 registrationcontent.html을 생성하고 난 모든 메일에 대해 별도의 HTML의와 함께 수행 한 빠른 솔루션을

var readHTMLFile = function (path, callback) { 
         fs.readFile(path, { encoding: 'utf-8' }, function (err, html) { 
          if (err) { 
           throw err; 
           callback(err); 
          } 
          else { 
           callback(null, html); 
          } 
         }); 
        }; 

        console.log("Sending", user, done); 
        var smtpConfig = { 
         host: mailconfig.host, 
         port: mailconfig.port, 
         auth: { 
          user: mailconfig.USER, 
          pass: mailconfig.PASSWORD 
         } 

        }; 
        console.log(smtpConfig); 
     var transporter = nodemailer.createTransport(smtpConfig); 

    readHTMLFile(__dirname + '/../MailContents/mail.html', function (err, html) { 
         var template = handlebars.compile(html); 
         var replacements = { 
          FirstName: user.FirstName, 
          LastName: user.LastName, 
      URL :`http://sample.com` 
          }; 
         var htmlToSend = template(replacements); 
         var mailOptions = { 
          to: user.Email, 
          from: 'mail', 
          subject: 'Registration confirmation', 
          html: htmlToSend 
         }; 
transporter.sendMail(mailOptions, (err) => { 
    console.log("An e-mail has been sent to with further instructions."); 
    res.json("Thank you for registering. An Email has been sent to you. Go to registered email inbox to complete the registration process."); 
          done(err); 
         }); 
        }); 

다음과 같이 노드 우편물에 렌더링하지만 난 하나 개의 파일 XML 또는 하나 HTML을 사용할 필요가있다 또는 하나의 파일에 모든 메일 본문을 포함하고 키워드로 가져올 수있는 다른 형식.

Any solution is highly appreciated. 

감사