【问题标题】:How to send an auto reply email with a html page as email in NodeJS如何在NodeJS中将带有html页面的自动回复电子邮件作为电子邮件发送
【发布时间】:2022-01-06 11:21:16
【问题描述】:

我最近开始使用 NodeJS 进行编程。我找不到任何方法如何发送自动回复电子邮件。当其他人向我发送电子邮件时,届时将向他/她的电子邮件发送自动回复电子邮件,该电子邮件为 HTML 电子邮件格式。

我该怎么做?

【问题讨论】:

    标签: node.js html-email


    【解决方案1】:

    首先,您需要使用通用的smtp or imap client,例如https://www.npmjs.com/package/imap,或者更好的实际监控新电子邮件的模块,例如https://www.npmjs.com/package/mail-notifier,来轮询或监控您的帐户接收邮件

    发布的例子是

    Start listening new mails :
    
    const notifier = require('mail-notifier');
     
    const imap = {
      user: "yourimapuser",
      password: "yourimappassword",
      host: "imap.host.com",
      port: 993, // imap port
      tls: true,// use secure connection
      tlsOptions: { rejectUnauthorized: false }
    };
     
    notifier(imap)
      .on('mail', mail => console.log(mail))
      .start();
    Keep it running forever :
    
    const n = notifier(imap);
    n.on('end', () => n.start()) // session closed
      .on('mail', mail => console.log(mail.from[0].address, mail.subject))
      .start();
    

    接下来,很难击败nodemailer 来发送您的回复。

    https://nodemailer.com/about/

    这是他们的例子。 (这段代码一半是cmets和logs)

    "use strict";
    const nodemailer = require("nodemailer");
    
    // async..await is not allowed in global scope, must use a wrapper
    async function main() {
      // Generate test SMTP service account from ethereal.email
      // Only needed if you don't have a real mail account for testing
      let testAccount = await nodemailer.createTestAccount();
    
      // create reusable transporter object using the default SMTP transport
      let transporter = nodemailer.createTransport({
        host: "smtp.ethereal.email",
        port: 587,
        secure: false, // true for 465, false for other ports
        auth: {
          user: testAccount.user, // generated ethereal user
          pass: testAccount.pass, // generated ethereal password
        },
      });
    
      // send mail with defined transport object
      let info = await transporter.sendMail({
        from: '"Fred Foo ?" <foo@example.com>', // sender address
        to: "bar@example.com, baz@example.com", // list of receivers
        subject: "Hello ✔", // Subject line
        text: "Hello world?", // plain text body
        html: "<b>Hello world?</b>", // html body
      });
    
      console.log("Message sent: %s", info.messageId);
      // Message sent: <b658f8ca-6296-ccf4-8306-87d57a0b4321@example.com>
    
      // Preview only available when sending through an Ethereal account
      console.log("Preview URL: %s", nodemailer.getTestMessageUrl(info));
      // Preview URL: https://ethereal.email/message/WaQKMgKddxQDoou...
    }
    
    main().catch(console.error);
    

    【讨论】:

      猜你喜欢
      • 2014-03-06
      • 1970-01-01
      • 1970-01-01
      • 2015-06-27
      • 2013-04-01
      • 1970-01-01
      • 2011-01-04
      • 2014-02-24
      • 1970-01-01
      相关资源
      最近更新 更多