在不安装 SMTP 服务器的情况下发送邮件
Posted
技术标签:
【中文标题】在不安装 SMTP 服务器的情况下发送邮件【英文标题】:Sending mail without installing an SMTP server 【发布时间】:2010-10-12 21:05:24 【问题描述】:我有一个 .Net 应用程序。我希望此应用程序向我发送电子邮件。如何在不安装 SMTP 服务器的情况下实现此功能?
【问题讨论】:
如果您需要示例代码,这里有一些向您展示如何使用 Gmail 的 SMTP 服务发送电子邮件。 gatekiller.co.uk/Post/Send_Emails_with_.NET_and_Gmail @GateKiller:谢谢你的链接,我很感激 【参考方案1】:如果没有 SMTP 服务器的服务,您将无法发送电子邮件,当然您无需安装,只需将您的代码指向您的 ISP SMTP 服务器或您公司的 Exchange 服务器(或他们使用的任何东西) .
【讨论】:
这个答案具有误导性。无需拥有自己的邮件服务器即可将电子邮件发送给收件人。连接到收件人域上的 MX 记录标识的服务器,并直接通信。 @Brendan:我想你可能误读了我。我说“没有 a SMTP 服务器的服务”。您说“直接通信”是与域的 MX 记录解析到的服务器。该服务器是 a SMTP 服务器。您如何直接与目标 SMTP 服务器通信?如果您尝试以客户身份这样做,则可能会感到不安(或至少应该这样做),因为您不是其客户之一。您可以与它交谈,就好像您是一个 SMTP 服务器一样,但工作量很大。 大多数理智的地方通过阻止出站端口 25 作为垃圾邮件过滤措施来防止这种情况发生。【参考方案2】:Peter Bromberg 在 eggheadcafe.com 上的这篇文章
C# SMTP Mail without SMTP Service or CDO
解释如何在不依赖 SMTP 客户端的情况下发送电子邮件:
使用本机通过 TCP 发送电子邮件 SMTP RFC 命令“HELO”、“MAIL From”、 RCPT TO”等没什么大不了的。那是 我们学习的第一个技巧 远程登录。查找或写入托管 可靠地这样做的代码是 另一个故事。类中的代码 以下不是我的原始代码 - 我从三个拼凑而成 不同的样品来源,固定 命名空间、错误处理和其他 次要项目,将控制台代码更改为 类库代码,并提供一个 完整的基于 Winforms 的测试工具 说明其正确的前端 用法。
我还包含了示例代码 正确处理和添加邮件 通过此处的 OpenFileDialog 进行附件。 此代码 MIME 编码和传输 附件根据 规范。
【讨论】:
这仍然依赖于另一端的 SMTP 服务器;我不确定不使用 SmtpClient 和 MailMessage 有什么好处... 嗯,在另一端总是必须有一个 SMTP 服务器。此示例显示您在代码中明确使用 SMTP 协议发送邮件。 @splattne:好的......我想自己实现协议可能会很有趣/有趣;]【参考方案3】:使用SmtpClient
发送MailMessage
不需要您在本地计算机上安装服务器。
您的电子邮件服务提供商是服务器(例如 smtp.gmail.com),您的SmtpClient
与它对话。
【讨论】:
以上是关于在不安装 SMTP 服务器的情况下发送邮件的主要内容,如果未能解决你的问题,请参考以下文章
我可以在不通过 SMTP 服务器验证的情况下发送电子邮件吗?
如何在没有身份验证的情况下直接向 SMTP 服务器发送邮件?