准备好开始抢答了,Java如何发送邮件

nile 发布于 2010/09/30 09:48
阅读 1K+
收藏 5

问题太简单了,开始抢答了。
问题1:比如oschina发送的通知邮件,是通过什么发送的?
我用了exim4 搭了一个smtp server,发现资源占用比较多。有没有更简单的方案?

问题2:有没有不通过smtp server就能发邮件的方案?
问题3:为什么邮件服务器,比如gmail,yahoo等,能接受另一个邮件服务器的转发的邮件,而不接受直接投到给用户的邮件。smtp的协议没有仔细去研究过。衍生一个问题,邮件服务器与邮件服务器之间也是smtp协议么?

加载中
0
红薯
红薯

这家伙一口气问了这么多问题了!!!

1. oschina的做法:javamail + postfix,postfix 是安装在 oschina 服务器上的邮件服务器

2. 没有 smtp server 没法发邮件

3. 标准上任何邮件服务器都可以接收直接投递个用户的邮件,服务器和服务器之间的协议也是 SMTP

关于无需使用smtp服务器直接给对方发邮件的做法,我以前写了一个文章,我现在找不着了,原理是通过DNS查询用户邮箱地址对应的MX记录,然后直接连接对应的邮件服务器进行发送邮件,不过很多邮件服务器不支持,这种做法无需身份验证,大部分用来发垃圾邮件,我记得foxmail有个邮件特快专递的,就是这个思路。

0
红薯
红薯

找到了,发到oschina上来了,请看

http://www.oschina.net/bbs/thread/11655

0
nile
nile

原理是通过DNS查询用户邮箱地址对应的MX记录,然后直接连接对应的邮件服务器进行发送邮件,不过很多邮件服务器不支持,这种做法无需身份验证,大部分用来发垃圾邮件,我记得foxmail有个邮件特快专递的,就是这个思路。


无需身份验证,大部分邮件服务器都是不支持。这个是关键。问题是从另外一个邮件服务器过来的邮件为什么就可以呢?
邮件服务器之间用的smtp协议,那就允许通过实现smtp协议就能给任何邮件服务器投递邮件才对啊。

这个很是不理解。

感谢红薯的迅速答复。

0
红薯
红薯

有什么不理解的,现在多数服务器都对邮件来源进行了验证

例如发送者邮箱是 test1@google.com ,接收者 test2@163.com

那么 163.com 对邮箱系统会对邮件发送客户端所在的IP地址与 google.com 这个邮箱对应的 ip 地址进行比较,如果不同的话,多数会被拒绝或者被当作垃圾邮件。

0
nile
nile

引用来自#3楼“红薯”的帖子

找到了,发到oschina上来了,请看

http://www.oschina.net/bbs/thread/11655

谢谢红薯!

21DN发邮件必须保证发件人信箱的后缀与地点的机器IP地址想匹配。

这个就是邮件服务器之间的验证的可信任验证?

0
红薯
红薯

鬼知道啊,这种属于邮件提供商自己的策略了,反正gmail我知道是比较开放的,国内的一些邮箱 163 也不错,其他一般。

0
川口人
川口人

smtp协议制定的不好  你可以用别人的发件箱地址发件  就是说如果不验证的话  我模拟比尔盖茨的邮箱给你发邮件  你收到的邮件的发件人就是小盖   你说可怕不  有些邮箱做了验证就不会了   比如163   但是验证的策略确实不为我们所知   如果知道了   还是可以模拟

0
Jeff_Lau_NUAA
Jeff_Lau_NUAA

我回答下问题2

以前没有自己的SMTP Server的时候用的是Aspirin作为测试用的服务器

:Aspirin is an embeddable send-only SMTP server

0
nile
nile

http://en.wikipedia.org/wiki/MX_record

http://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol

看不太明白,但是有点了解了。谢谢各位!

0
罪恶的花生
罪恶的花生

James也不错,我原来用过!Jmail+James

返回顶部
顶部