php中邮件的应用程序,将电子邮件发送到PHP应用程序

作者分享了如何使用Slim框架构建的PHP应用通过子域名接收邮件,并将其转发到处理脚本。遇到的问题在于如何正确发送请求到应用程序进行后续处理,包括数据库操作。解决方案是使用cURL发起HTTP请求,而非仅返回Location标头。

我有一个使用Slim路由框架构建的PHP应用程序.该应用程序需要从订单发送动态电子邮件,以便用户可以仅响应这些电子邮件,并且响应直接返回到应用程序(存储在MySQL中).我可以轻松地为每个订单创建动态地址,结果很好.我的问题是找回来.

我设置了一个子域(mailer.example.com),并在cPanel中设置了一个转发器,以捕获到该子域的所有邮件并将其转发到特定的PHP文件.该php文件读取stdin并获取mime消息,当前将其写入文件:

#!/usr/bin/php -q

// read from stdin

$fd = fopen("php://stdin", "r");

$email = "";

while (!feof($fd))

{

$email .= fread($fd, 1024);

}

fclose($fd);

$filename = "mail_".date("mdYHis").rand(1,99999999);

file_put_contents("mailfiles/".$filename, $email);

header("Location: http://www.example.com/public/mailer/process/".$filename);

如您所见,最后,我想将其转发到我的实际应用程序,该应用程序具有所有数据库调用和其他处理电子邮件的例程.但是我不知道如何将请求发送到应用程序中.似乎忽略了上面的标头调用.

我做错了吗?还是应该只执行此脚本中需要的所有处理?我意识到这可能是最简单的方法,但我也尝试使用非常适合我的应用程序的邮件解析库.

不知道这一切是否有意义.让我知道您还需要什么其他信息.

解决方法:

我认为您要执行的操作不是返回带有Location标头的HTTP响应,而是向您的Web服务器发起HTTP请求.

在这种情况下,应将header()调用替换为:

$ch = curl_init('http://localhost/public/mailer/process/' . $filename);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$result = curl_exec($ch);

请注意,您的脚本(称为保存邮件内容的脚本)将等待您的应用完成请求的处理.如果您遇到问题,则需要使用一种技术来运行PHP processes in the background.

标签:email,php

来源: https://codeday.me/bug/20191025/1931177.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值