V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
LeeReamond
V2EX  ›  问与答

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

  •  
  •   LeeReamond · 2022-02-23 07:22:36 +08:00 · 1414 次点击
    这是一个创建于 794 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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