为什么有些 PHP 网站可以做到直接发送邮件?

2022-02-23 07:22:36 +08:00
 LeeReamond

相关讨论:https://www.v2ex.com/t/834118

之前发了个贴是说自建邮箱失败,又要折腾域名解析,又要折腾反垃圾邮件,又要 IP 段等等等等,楼下老哥们都说无论如何自建服务能成功发出邮件已经不容易。

但是最近我注意到网上一些经典的 php 开源项目很多都是不需要安装任何依赖,不需要折腾任何解析,直接就能提供邮件服务的,比如 chevereto 图床,还有 wordpress 博客,在用户注册和密码找回这种场景,都是直接可以发邮件确认的。

我昨天试了一下 chevereto 居然发送成功了邮件,且没有被归类到垃圾邮箱。而且似乎我输入没有解析的二级域名它也能正常显示发件人,比如我的网站是 example.com ,它管理后台要求输入确认邮件的发件地址,我输入 no-reply@mail.example.com ,即使这个地址没有解析也能正常发送到用户,这都是怎么实现的?

1504 次点击
所在节点    问与答
11 条回复
vvhhaaattt
2022-02-23 07:32:13 +08:00
这下楼主应该明白邮件伪装有多容易了吧。
本身邮件发送就是不需要任何保证的,你看到的发件人可以任意伪造的,能连接到对方邮件服务器就可以给对方发送,没被归为垃圾邮件只是短时间侥幸而已。
你开头那些措施都是为了长时间稳定发送邮件证明自己不是垃圾邮件发送者。
LeeReamond
2022-02-23 07:52:22 +08:00
@vvhhaaattt 生产环境肯定是基于企业邮箱服务,但个人中小型项目自建也有方便之处,想知道是如何实现的,我看不懂 php 代码。
xiaoz
2022-02-23 08:00:15 +08:00
@LeeReamond PHP 内置一个 mail()函数,无需其他依赖可直接发邮件,参考 https://m.runoob.com/php/func-mail-mail.html
但是不建议用这个函数,可能会被直接拒收或进入垃圾箱。
vvhhaaattt
2022-02-23 08:01:38 +08:00
@LeeReamond 你上一个帖子三楼说的很明白,smtp 协议,跟 http 一样是个文本传输的协议,发个邮件跟向对方邮件服务器进行了一次 post http 请求类似,当然细节不一样……
LeeReamond
2022-02-23 08:05:31 +08:00
@xiaoz 如果只是归入垃圾邮箱作为惩罚的话,如果其他方面合适,作为取舍感觉也不是不可接受,比如我只有 1000 个用户,有人要找回密码的话显然邮件找回是最合适的,少数被归入垃圾邮件就请用户自己翻一翻就是了。。。如果是 php 的 bif 的话我想知道底层是咋实现的,我能不能在其他语言里在 tcp 层上复现一个?百度搜邮件协议说的都比较复杂,我怎么知道 php 默认用的是哪种协议
xiaoz
2022-02-23 08:09:51 +08:00
@LeeReamond 底层实现我就不是很清楚了,没仔细研究过。
ztxcccc
2022-02-23 08:34:55 +08:00
我记得是调用 linux 的 sendmail 函数的,这个是个 os 级别的基本功能
Kinnice
2022-02-23 08:49:31 +08:00
1. 服务器提供商没有封禁相关邮件端口
2. 大部分都会进垃圾箱或者被拒信
dzdh
2022-02-23 08:56:07 +08:00
难道不是在说 smtp 吗
loginv2
2022-02-23 09:17:30 +08:00
用 php 实现的 smtp 客户端,给别的邮件服务器发信息,让服务器给其他邮箱发邮件
involvements
2022-02-23 09:20:50 +08:00
@LeeReamond
1 、基本上所有邮件都是进垃圾箱或者拒收
2 、长时间下来就直接屏蔽你的 IP 了
3 、拒收多了后你的云服务器厂商也会屏蔽的你 25 端口
4 、你说的小量发送,但是密码找回这种邮件理论上不应该出现拒收,必须稳定

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/835802

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX