簡體   English   中英

email 中的空字段通過 cURL 和 PHP 發送

[英]empty fields in email sent via cURL with PHP

我正在嘗試通過 cURL 發送帶有 PHP 7.1 的 email。 我收到 email 但它沒有主題、正文(它是空的)並且在“收件人”字段中我得到“未公開的收件人”。 我是否缺少 curl_setopt_array 中的任何參數?

$postData = ["from" => John Doe,
             "body" => "this is a test",
             "to" => "xxxxxxxx@yyyyy.zzz",
             "subject" => A simple test,
];
$ch = curl_init();
curl_setopt_array($ch, [
     CURLOPT_URL => 'smtp.mydomain.com:25/mydomain.com',
     CURLOPT_MAIL_FROM => '<no-reply@mydomain.com>',
     CURLOPT_MAIL_RCPT => ['xxxxxxxx@yyyyy.zzz'],
     CURLOPT_HTTPHEADER => array(
         "Accept: application/json",
         "Content-Type: application/json"
      ),
     curl_setopt($ch, CURLOPT_POST, true),
     CURLOPT_POSTFIELDS => json_encode($postData),
     CURLOPT_UPLOAD => true,
]);

curl_exec($ch);
curl_close($ch);

您的代碼到處都是; 我假設既然你說你能夠發送 email 這些只是復制/粘貼錯誤。

我不確定您為什么要對所有標頭進行 JSON 編碼,或者為什么要將正文包含在標頭中。 從我看到的使用 cURL 為 email 的極少數示例中,您需要將郵件標題和正文放入 POST 數據中,如下所示:

$maildata = <<< EOF
From: John Doe <no-reply@my.domain.example.com>
To: xxxxxxxx@yyyyy.zzz
Subject: A simple test

this is a test
EOF;

$ch = curl_init();
curl_setopt_array($ch, [
     CURLOPT_URL => 'smtp://my.mailserver.com/my.domain.example.com',
     CURLOPT_MAIL_FROM => 'John Doe <no-reply@my.domain.example.com>',
     CURLOPT_MAIL_RCPT => ['xxxxxxxx@yyyyy.zzz'],
     CURLOPT_POST => true,
     CURLOPT_POSTFIELDS => $maildata,
     CURLOPT_UPLOAD => true,
]);

curl_exec($ch);
curl_close($ch);

請注意, 您使用的CURLOPT常量直到 PHP 7.2 才引入,因此您需要升級。 PHP 7.1 已經 EOL 一段時間了,所以我確定您無論如何都打算更新。

也就是說,使用 PHPMailer 或 SwiftMailer 等更常見的方法會更好地為您服務。 考慮到您正在使用 PHP 文檔中甚至沒有提到的常量和功能,您不太可能找到很多其他人在嘗試這個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM