【问题标题】:How to get the mail content from any xml file如何从任何 xml 文件中获取邮件内容
【发布时间】:2017-04-10 09:37:26
【问题描述】:

我在我的平均堆栈应用程序中使用 nodemailer。我正在使用它成功发送邮件。

现在我正在尝试根据情况发送邮件。为此,我将邮件内容存储在 xml 页面中,并且我需要根据 nodemailer 的 html 标记中的关键字来获取该邮件内容。

例如:如果用户注册了,那么注册邮件将通过获取xml文件中的注册关键字来发送。

XML文件如下图

   <?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>

节点邮件邮件选项如下

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

    html: '' // html body
};

在上面如何在 nodemailer 选项中获取该 xml 文件内容

【问题讨论】:

    标签: node.js xml email express nodemailer


    【解决方案1】:

    我已经解决了这个问题,通过引用Nodemailer快速解决,使用handlebars和fs渲染html页面。

    我已经创建了registrationcontent.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);
                            });
                        });
    

    对于快速解决方案,我已经为每封邮件使用了单独的 html,但我只需要使用一个文件 xml 或 html 或任何其他格式,该文件包含一个文件中的所有邮件正文并且可以通过关键字获取。

    Any solution is highly appreciated.
    

    谢谢

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-26
      • 2012-10-08
      • 2012-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多