准备好开始抢答了,Java如何发送邮件
问题太简单了,开始抢答了。
问题1:比如oschina发送的通知邮件,是通过什么发送的?
我用了exim4 搭了一个smtp server,发现资源占用比较多。有没有更简单的方案?
问题2:有没有不通过smtp server就能发邮件的方案?
问题3:为什么邮件服务器,比如gmail,yahoo等,能接受另一个邮件服务器的转发的邮件,而不接受直接投到给用户的邮件。smtp的协议没有仔细去研究过。衍生一个问题,邮件服务器与邮件服务器之间也是smtp协议么?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(10)
James也不错,我原来用过!Jmail+James
http://en.wikipedia.org/wiki/MX_record
http://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol
看不太明白,但是有点了解了。谢谢各位!
我回答下问题2
以前没有自己的SMTP Server的时候用的是Aspirin作为测试用的服务器
:Aspirin is an embeddable send-only SMTP server
smtp协议制定的不好 你可以用别人的发件箱地址发件 就是说如果不验证的话 我模拟比尔盖茨的邮箱给你发邮件 你收到的邮件的发件人就是小盖 你说可怕不 有些邮箱做了验证就不会了 比如163 但是验证的策略确实不为我们所知 如果知道了 还是可以模拟
鬼知道啊,这种属于邮件提供商自己的策略了,反正gmail我知道是比较开放的,国内的一些邮箱 163 也不错,其他一般。
引用来自#3楼“红薯”的帖子
找到了,发到oschina上来了,请看
http://www.oschina.net/bbs/thread/11655
有什么不理解的,现在多数服务器都对邮件来源进行了验证
例如发送者邮箱是 test1@google.com ,接收者 test2@163.com
那么 163.com 对邮箱系统会对邮件发送客户端所在的IP地址与 google.com 这个邮箱对应的 ip 地址进行比较,如果不同的话,多数会被拒绝或者被当作垃圾邮件。
无需身份验证,大部分邮件服务器都是不支持。这个是关键。问题是从另外一个邮件服务器过来的邮件为什么就可以呢?
邮件服务器之间用的smtp协议,那就允许通过实现smtp协议就能给任何邮件服务器投递邮件才对啊。
这个很是不理解。
感谢红薯的迅速答复。
找到了,发到oschina上来了,请看
http://www.oschina.net/bbs/thread/11655
这家伙一口气问了这么多问题了!!!
1. oschina的做法:javamail + postfix,postfix 是安装在 oschina 服务器上的邮件服务器
2. 没有 smtp server 没法发邮件
3. 标准上任何邮件服务器都可以接收直接投递个用户的邮件,服务器和服务器之间的协议也是 SMTP
关于无需使用smtp服务器直接给对方发邮件的做法,我以前写了一个文章,我现在找不着了,原理是通过DNS查询用户邮箱地址对应的MX记录,然后直接连接对应的邮件服务器进行发送邮件,不过很多邮件服务器不支持,这种做法无需身份验证,大部分用来发垃圾邮件,我记得foxmail有个邮件特快专递的,就是这个思路。