You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Google Workspace邮件管道转发至URL?PHP解析需求

解决Google Workspace邮件管道转发+PHP解析的方案

一、优先管道方式的替代方案

Google Workspace本身没有原生的Piped URL转发功能,但可以通过以下两种方式模拟实现:

1. Google Apps Script中转触发PHP接口

  • 在Google Workspace邮箱中,打开「脚本编辑器」(右上角齿轮→查看所有设置→高级→脚本编辑器)
  • 创建新脚本,编写监听新邮件的函数,将邮件内容POST到你的PHP接口:
    function onNewEmail() {
      // 获取收件箱最新10封未读邮件
      const threads = GmailApp.getInboxThreads(0, 10);
      for (const thread of threads) {
        const messages = thread.getMessages();
        for (const message of messages) {
          if (!message.isUnread()) continue;
          
          // 整理邮件核心数据
          const emailData = {
            subject: message.getSubject(),
            from: message.getFrom(),
            to: message.getTo(),
            plainBody: message.getPlainBody(),
            htmlBody: message.getBody(),
            date: message.getDate().toISOString()
          };
          
          // 发送到PHP接口
          UrlFetchApp.post('https://your-domain.com/handle-email.php', {
            method: 'post',
            contentType: 'application/json',
            payload: JSON.stringify(emailData)
          });
          
          // 标记为已读,避免重复处理
          message.markRead();
        }
      }
    }
    
  • 设置触发器:点击「编辑→当前项目的触发器」,添加新触发器,选择onNewEmail函数,事件源选「Gmail」,事件类型选「新邮件到达」,完成权限授权即可自动触发

2. 自建中转邮件服务器实现管道转发

  • 用Postfix搭建简易中转服务器,配置步骤:
    1. 在Google Workspace中设置目标邮箱转发到中转服务器的邮箱(如pipe@your-relay-domain.com)
    2. 在Postfix的/etc/aliases中添加管道规则:
      pipe: "| php /var/www/your-script.php"
      
    3. 执行newaliases更新别名,重启Postfix服务
    4. 你的PHP脚本直接读取标准输入的原始邮件内容(和HostGator管道逻辑一致):
      // 读取管道传入的完整邮件内容
      $rawEmail = file_get_contents('php://stdin');
      
      // 用Mailparse扩展或自定义逻辑解析邮件头、正文、附件
      // 业务处理代码...
      
  • 注意:中转服务器需做好反垃圾邮件配置,避免被邮件服务商标记

二、PHP IMAP库抓取邮件方案

如果管道中转成本较高,IMAP是更直接的替代方案:

  1. 开启Google Workspace IMAP:登录邮箱→设置→转发和POP/IMAP→启用IMAP
  2. 生成应用专用密码(开启2FA时必填):Google账号→安全→应用专用密码→生成对应Workspace邮箱的密码
  3. PHP代码实现:
    // IMAP连接配置
    $imapHost = '{imap.gmail.com:993/imap/ssl}INBOX';
    $imapUser = 'your-workspace-email@domain.com';
    $imapPass = 'your-app-specific-password';
    
    // 连接IMAP服务器
    $inbox = imap_open($imapHost, $imapUser, $imapPass) or die('连接失败: ' . imap_last_error());
    
    // 搜索未读邮件(可自定义搜索条件,如SUBJECT "订单通知")
    $unseenEmails = imap_search($inbox, 'UNSEEN');
    
    if ($unseenEmails) {
        rsort($unseenEmails); // 优先处理最新邮件
        
        foreach ($unseenEmails as $emailId) {
            // 获取邮件头部信息
            $header = imap_headerinfo($inbox, $emailId);
            // 获取HTML正文(1.2对应HTML格式,1对应纯文本,根据邮件结构调整)
            $htmlBody = imap_fetchbody($inbox, $emailId, 1.2);
            // 解码内容编码
            $htmlBody = quoted_printable_decode($htmlBody);
    
            // 业务处理逻辑:解析内容、存入数据库、触发流程等
    
            // 标记邮件为已读
            imap_setflag_full($inbox, $emailId, '\\Seen');
        }
    }
    
    // 关闭连接
    imap_close($inbox);
    
  • 注意事项:
    • 服务器需安装PHP的imap扩展(执行php -m | grep imap检查)
    • 复杂邮件(含附件、多编码)需用imap_fetchstructure解析MIME结构
    • 可配置Cron定时任务,定期执行脚本抓取邮件

三、其他可选方案

  • Gmail API:适合需要精细控制(如标签管理、批量操作)的场景,需在Google Cloud Console创建项目并授权,使用官方PHP客户端库调用API
  • 第三方webhook服务:部分邮件工具提供邮件转webhook功能,可将Google Workspace邮件转发至该服务,再触发你的PHP接口

内容的提问来源于stack exchange,提问作者FutureShock

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 22:14:54