使用 hmailserver 的 SMTP 服务器。主机无法解析为类型

SMTP server using hmailserver. Host cannot be resolved to a type

我正在尝试创建本地 SMTP 服务器。我根据这个配置了一切:Link to set-up hmailserver

在那之后,我 运行 我的诊断程序,它说主机(在我的情况下,noreply@bufferoverflow.com)无法解析。我用谷歌搜索并阅读了 hmailserver Docs 的文档和问题部分,发现我的机器上缺少 DNS 配置。

我按照这篇文章将 DNS ip 设置为名称:How to add ip domain mapping in windows

127.0.0.1 bufferoverflow.com

我的

C:\Windows\System32\drivers\etc>notepad hosts.ics

它仍然说主机无法解析为类型。我试图查看该端口是否真的打开并正在侦听。所以我在 CMD 中执行了这个命令:

netstat -a

它在听。我仔细检查了所有内容,但找不到我哪里出错了。我创建了一个简单的 nodejs 服务器并将其托管在本地主机的端口 80 上,并在我的浏览器中输入“bufferoverflow.com”,它打开了 127.0.0.1 aka localhost,这是因为它具有我提供的 ip 域映射。

现在我不知道为什么无法解析主机名。我的 DNS 很酷。 Everthing 的配置如文档所述,端口也已打开并正在侦听。请帮助我。

所以根据你所说的,你创建了自己的 SMTP 服务器,这很好,值得学习,但我建议使用 SendinBlue 第 3 方服务 免费 并给你 300 mails/day

sendinblue 入门:

  • Link: https://www.sendinblue.com/

  • 去免费创建一个帐户,直到你决定付款,你会在那里阅读

  • 一旦您的帐户设置完毕并经常激活,某个帐户的 SMTP 服务不会自动激活,因此您必须向他们发送电子邮件,他们会在 24 小时内回复 我喜欢服务(我不是在宣传或赞助炒作他们或任何只是说出我所经历的真相)。

现在您的帐户和 SMTP 服务已激活,现在问题是您如何使用 sendinBlue?

  • 在您右上角的仪表板中,您会看到您的用户名

  • 点击它,应该会出现一个下拉菜单

  • 然后你想去 SMTP & API

  • 然后您将看到一个菜单,左侧有 API 键 SMTP右边

  • 您要点击 SMTP。

  • 一旦你会看到登录那将是你注册的电子邮件,你会看到主密码 现在这就是您用来验证自己的方式。

实施:现在您已经对所有内容进行了排序,您知道密钥和登录位置

在 .env 文件中

sendinBlue__login=<Your email that your saw in that smtp tab>
sendinBlue__key= <Key you saw in that smtp tab>

在您要发送电子邮件的文件中

const nodemailer = require('nodemailer');
router.post('/api/email', (request, response)=>{

   const transporter = nodemailer.createTransport({

       service:'SendinBlue',
       auth:{
           user:process.env.sendinBlue__login,
           pass:process.env.sendinBlue__key
       }

   })


   const mailOptions = {
       from:process.env.sendinBlue__login
       to:'example@gmail.com',
       subject:'Order confirmation',
       html:`

           <h1>Confirmation of your received  order</h1>

       `
 
   }


   transporter.sendMail(mailOptions, (error, info)=>{

       if (error){
           console.log(error);
           return response.status(500).json({msg:"Email failed to send probably network problems or SMTP not activated"});

       }
       return reponse.status(200).json({msg:'Email sent'});

   })

})
  • 现在这就是 sendingBlue 工作的简单方式,只需简单的注册和帐户激活,如果未通过电子邮件客户支持激活,还可以激活 SMTP

如果上面的指南对你没有意义:无耻插件

  • 你可以去看看我做的视频,我使用 sendinBluenodemailer 来发送电子邮件 这是一个最后一点

  • Link: https://youtu.be/5vWXbGIdDQw

现在,如果您想使用带有 sendinBlue 的 noreply@domain.com 发送电子邮件,您甚至不必激活电子邮件,但仍然可以发送

  • 你如何处理这就是你设计邮件选项的方式
router.get("/api/test", (request, response) => {
  const transpoter = nodemailer.createTransport({
    service: "SendinBlue",
    auth: {
      user: process.env.sendinBlue__email,
      pass: process.env.sendinBlue__key,
    },
  });

  const mailOptions = {
    from: "noreply@Test.com",
    to: "juniorWebProjects@gmail.com",
    subject: "Confirmation Order",
    html: `
       
       <h1>Order Received</h1>
    
    `,
  };

  transpoter.sendMail(mailOptions, (err, info) => {
    if (err) {
      return console.log(err);
    }
    return console.log("Message sent");
  });
});
  • 在我的 mailOptions 上看到我明确地给自己写了我想要的电子邮件,当 sendinBlue 发送该电子邮件时,收件人会看到它来自 noreply@Test.com