【问题标题】:How can I get the SMTP host name from email address?如何从电子邮件地址获取 SMTP 主机名?
【发布时间】:2012-07-24 15:36:23
【问题描述】:

我正在开发一个应用程序,该应用程序会在特定时间间隔自动将电子邮件发送到有效电子邮件。通过互联网搜索,我发现大多数代码使用现有的电子邮件帐户(例如 gmail.com)通过作为 SMTP 客户端登录来发送电子邮件。但我的问题是我不会知道用户电子邮件的 smtp 服务器名称(因为用户通常不知道这些事情,尽管他会知道登录名/密码)。例如,

someone@gmail.com 应该提供 smtp.gmail.com 和端口号 (465)

someone@nextek.net 应该提供 mail.nextek.net 和端口号 (?)

someone@screaming.Net smtp.tiscali.co.uk 和端口号 (?)

我使用电子邮件地址的域名获取了 MX 记录,但我意识到它实际上提供了可用的传入 SMTP 服务器名称。

例如,如果我在命令提示符中使用 nslookup 进行 ping,gmail.com 将提供 gmail-smtp-in.l.google.com 以及其他四个服务器名称。

另外,与通过 dns 查找电子邮件服务器名称直接发送相比,使用现有的 SMTP 支持电子邮件发送电子邮件有什么优势?还是不可能?

如果我错了,请纠正我,因为我对协议不太熟悉。

【问题讨论】:

  • (1) 您的应用程序是否接收电子邮件或从某个来源(例如 Exchange 或任何其他服务器)获取电子邮件,或者您只是拥有电子邮件地址? (2) 我不明白为什么你需要知道用户的 SMTP 服务器。如果您有他们的电子邮件地址,那么您只需向他们发送消息即可。 (3) 您的应用程序的目标是什么:向某人发送电子邮件或发送电子邮件作为您是那个人?
  • 假设您是使用该应用程序的人。该应用程序需要在特定时间间隔自动向您自己的电子邮件地址发送电子邮件。最好的方法是什么?
  • 让我再问你一个问题:这个应用程序会发给我的消息,发件人是谁?是自动不回复还是我自己?
  • 自动不回复。这个应用程序应该在任何机器上执行此操作。
  • 好吧,那么最好的选择是:为您的应用程序创建一个电子邮件帐户(它甚至可以是免费帐户,例如 GMail 或任何其他帐户)并从该帐户的服务器发送此消息。您不需要知道接收服务器,SMTP + DNS 将为您完成。您需要做的就是使用您的私人凭据(您的应用帐户)将消息发送到 SMTP 服务器。

标签: c# .net vb.net smtp


【解决方案1】:

如果你不熟悉协议,那么尝试实现协议是没有意义的。

一般来说,像您这样的应用程序不需要担心 SMTP 协议的细节。您将为您的平台使用现有的 SMTP 客户端库(我确信您可以使用一个用于 .NET 的客户端库),并连接到 MTA(您的 MTA,而不是收件人的),给它要发送的电子邮件,您就完成了。 MTA 将处理所有 SMTP 协议细节,以确定如何将电子邮件发送给收件人。

发送电子邮件非常类似于将一封信放在角落的邮箱中,然后让邮局弄清楚如何投递。您不需要知道将它放在哪辆车上,或者收件人的当地邮局配送中心在哪里,或者任何这些细节。

您可以选择使用Postfix 之类的方式设置您自己的 MTA,或者您可以通过您自己的 Gmail 帐户发送电子邮件(当然,您需要一个 Gmail 帐户和密码才能让 Gmail 允许您这样做)。

【讨论】:

    猜你喜欢
    • 2013-05-24
    • 2013-09-29
    • 1970-01-01
    • 2018-04-16
    • 2014-01-10
    • 1970-01-01
    • 2019-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多