C#-C#如何实现发直接EMAIL,不通过smtp?

发布于 2016-11-17 01:46:07 字数 110 浏览 1072 评论 2

如题,网上有很多信息,找到的几乎只有操作smtp的,而smtp的接口操作原理其实也可以通过C#实现。
这样的话,要是能在C#里直接建立smtp对象,则可以不用在系统安装smtp就可以发匿名邮件了。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

清晨说ぺ晚安 2017-03-23 18:02:29

是可行的。SMTP协议很简单,可以直接用SOCKET实现。关键在于将自己当做一台邮件服务器(SMTP服务器),通过中转SMTP服务器将邮件转发出去。你需要完成的工作有两件:
(1) 自己实现一个DNS。C#的DNS类只能查询A DNS即域名解析为IP,无法查询MX DNS即Mail Exchange服务器地址。需要用UDP协议来自己进行一次查询。结果可以参考nsloopup -type=MX返回的结果,比如126.com应该是:
126.com MX preference = 10, mail exchanger = 126mx01.mxmail.netease.com
126.com MX preference = 10, mail exchanger = 126mx02.mxmail.netease.com
126.com MX preference = 50, mail exchanger = 126mx00.mxmail.netease.com

(2) 用Socket(TCP)连接Exchange服务器地址126mx01.mxmail.netease.com,然后按照流程执行SMTP协议,注意用你自己预设的域名:
HELO mydomain.com
MAIL FROM:myname@mydomain.com
RCPT TO:someone@126.com
...

不过这种发出去的邮件能收到,但是无法回复,因为返回时无法查找到你的Domain。但愿你不是用来发垃圾邮件……

归属感 2017-02-20 13:29:13

可以,smtp就是邮件发送协议的一种,并不是唯一,其它的还有很多。但是smtp是目前通用的一种,其它的协议估计很多人都没听说过,所以,网上现在基本都是smtp协议的例子。如果不想使用,换其它协议的就可以了。
另外关于匿名发送邮件,估计应该会被很多的邮件服务器给当做垃圾邮件拒收掉,连信任机制都建立不起来

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文