dns - 使用 hmailserver 的 SMTP 服务器。主机无法解析为类型
问题描述
我正在尝试创建一个本地 SMTP 服务器。我根据这个配置了一切:Link to setup 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>记事本hosts.ics
它仍然说主机无法解析为类型。我试图查看端口是否真的打开并正在监听。所以我在 CMD 中做了这个命令:
网络统计 -a
它在听。我仔细检查了所有内容,但找不到哪里出错了。我创建了一个简单的 nodejs 服务器并将其托管在 localhost 的端口 80 上,并在我的浏览器中键入“bufferoverflow.com”,它打开了 127.0.0.1 aka localhost,这是因为它具有我提供的 ip 域映射。
现在我迷失了为什么无法解析主机名。我的 DNS 很酷。Everthing 已按照文档所述进行配置,并且端口也已打开并正在侦听。请帮我。
解决方案
因此,根据您所说,您创建了自己的 SMTP 服务器,这很好,值得学习,但我建议您免费使用SendinBlue 3rd 方服务,每天为您提供300 封邮件
sendinblue 入门:
在您决定付款之前免费制作一个帐户,您将在那里阅读
一旦您的帐户全部设置并经常激活,一个帐户的 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'});
})
})
- 现在这就是 sendinBlue 的工作原理,只需简单的注册和帐户激活,如果未通过电子邮件客户支持激活,还可以激活 SMTP
如果上面的指南对您没有意义:Shameless plug
你可以去看看我做的视频,我使用sendinBlue和nodemailer 来发送电子邮件,最后有点
现在,如果您想使用 noreply@domain.com 和 sendinBlue 发送电子邮件,您甚至不必激活电子邮件,但仍然可以发送
- 您如何处理这就是您制作 mailOptions 的方式
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
推荐阅读
- google-chrome-extension - 如何在我的系统中本地设置 Metamask?
- python - 如何将unicode日语从一个文件写入另一个文件?
- java - 使用 Spring Data JPA 在 Mongodb 文档中进行 PrePersist 和 PreUpdate
- amazon-web-services - 当用户说出诸如“双九”之类的内容时,如何以数字形式输入用户?
- matlab - 从 Simulink 模型生成代码时是否需要创建 MEX 文件?
- android - Android中的android.os.TransactionTooLargeException错误
- proxy - 测试 Squid 性能(kerberos 身份验证)
- c# - 通过提供字符串更改控制台颜色
- java - Tomcat 7:在 webapp 的子目录中部署一个 war 文件
- json - 如何使用 Docker 扩展烧瓶 webapp 构建