Gmail节目已在邮件详细信息中永久移动

问题描述 投票:0回答:1

我通过php代码发送电子邮件。我使用api Aws\Ses\SesClient发送电子邮件。

这是我的代码:

function sendOrderInfoToCustomer($sTo){
    $ch = curl_init($this->sMainUrl."/content_email_order_info.php?orderID=".$this->iOrderID);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
    $sContentOrderInfo = curl_exec($ch);
    curl_close($ch);
    $sSubject = $this->oPublicFunction->getSiteName()." [".$this->oPublicFunction->parseFormatTime("d/m/Y H:i A",time())."]";
    $this->oPublicFunction->sendMailAWS($sTo,$sSubject,$sContentOrderInfo);
}

function sendMailAWS($sTo,$sSubject,$sBody){
        global $aws_access_key, $aws_secret_access_key, $aws_from;
        $client = Aws\Ses\SesClient::factory(array(
            'version'=> 'latest',
            'region' => 'us-east-1',
            'credentials' => array(
                'key'    => $aws_access_key,
                'secret' => $aws_secret_access_key
            )
        ));
        $request = array();
        $request['Source'] = $aws_from;
        $request['Destination']['ToAddresses'] = array($sTo);
        $request['Message']['Subject']['Data'] = $sSubject;
        $request['Message']['Body']['Html']['Data'] = $sBody;

        try {
            $result = $client->sendEmail($request);
            $messageId = $result->get('MessageId');
            //echo("Email sent! Message ID: $messageId"."\n");

        } catch (Exception $e) {
            echo("The email was not sent. Error message: ");
            echo($e->getMessage()."\n");
        }
    }

发送邮件成功。但是我在gmail上检查邮件,发现电子邮件效果不佳。

Gmail detail

请帮助我修复它。

php gmail amazon-ses
1个回答
0
投票

这不是电子邮件的结果,它实际上是CURL在构建消息正文时从您自己的服务器获取的内容。您可能只需要告诉curl遵循重定向:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

但是,您可能在这里遇到了更严重的问题。您的应用程序(通常)不应使用对其自身的Web请求。电子邮件内容应通过呈现订单模板的内部方法调用以及通过调用网页的not创建。在这里,您似乎已经打开了整个网络的订单详细信息页面。也就是说,网络上的任何人都可以点击content_email_order_info.php?orderID=123并获取任何订单的详细信息,因为那里没有进行身份验证。这可能是一个非常严重的安全漏洞。

© www.soinside.com 2019 - 2024. All rights reserved.