电子邮件地址中的c++smtp服务器主机名

c++ smtp server hostname from email address

本文关键字:主机 服务器 c++smtp 电子邮件地址      更新时间:2023-10-16

是否有通用的解决方案可以从c/c++中的电子邮件地址查找smtp服务器主机名或ip?

到目前为止,我只是在域名前面加了"smtp.",但我不确定这是否是一般的保证?

最后一件事,我仍然使用getaddrinfo来获取实际的IP。它仍然是标准的吗?至少我觉得它现在应该已经过时了:D。

是否有通用的解决方案可以从c/c++中的电子邮件地址查找smtp服务器主机名或ip?

不是一个通用的解决方案,不是。尽管肯定有第三方SMTP库可以提供这种功能,如果你环顾四周的话。

到目前为止,我只是在域名前面加了"smtp.",但我不确定这是否是一般的保证?

不,不是。正确的解决方案是提取电子邮件地址的域部分(@之后的所有内容(,然后执行DNS查找,询问该域的MX记录。这些记录将提供域的SMTP服务器的主机名以及使用它们的优先级。然后,您可以根据需要使用额外的DNS查找将这些主机名解析为IP地址,要求提供A(IPv4(和AAAA(IPv6(记录。

但是,如果您的目标是直接向给定域的SMTP系统发送电子邮件,请不要。正确的解决方案是通过您自己的电子邮件提供商的SMTP服务器发送电子邮件,并根据需要将电子邮件中继到其他SMTP系统。作为一项反垃圾邮件措施,大多数SMTP服务器不允许来自未知来源的电子邮件传递,只允许来自其自己的用户,以及来自其他已知和受信任的ISP/SMTP系统的电子邮件传递。

最后一件事,我仍然使用getaddrinfo来获取实际的IP。它仍然是标准的吗?

为了将主机名解析为IP地址,可以。

但是您不能使用getaddrinfo()来检索域的SMTP主机名。你必须直接查询DNS服务器(有很多可用的DNS库,或者你可以在自己的代码中手动实现DNS协议(。