2017-10-04 26 views
0

私はPHPMailerを使用して電子メールをMIME文字列として作成しており、curlを使用して/v3/[mydomain]/messages.mimeエンドポイントに接続するMailgun API経由で送信したいとします。Mailgun API経由でMailgunライブラリ経由で送信

Mailgun documentationは、MIME文字列をmessageパラメータとして送信する必要があり、multipart/form-dataをファイルアップロードとして送信する必要があると言います。

libcurl documentationによると、CURLOPT_POSTFIELDSオプションに配列を指定すると、Content-typeはmultipart/form-dataに設定されます。次のように

curl_setopt($ch, CURLOPT_POSTFIELDS, ["message" => $mimeData]); 

しかしMailgunのAPIの答え:

$mimeFile = tmpfile(); 
fwrite($mimeFile, $mimeData); 

{ "message": "'message' parameter is not a file" } 

答えて

0

が、私はそれが最初の一時ファイルを作成することで、作業を取得するために管理

は、私はこれを試してみましたそれをCURLファイルに渡す:

$mime = new CURLFile(stream_get_meta_data($mimeFile)['uri']); 

その後、私は新しいエラーメッセージ'to' parameter is missingを取得しましたので、最終的にはPHPメーラーから受信者アドレスを取得する必要がありました(既にMIME文字列にありますが、APIはそれを認識していないようです)。

curl_setopt($ch, CURLOPT_POSTFIELDS, [ 
    "to" => implode(", ", array_keys($this->getAllRecipientAddresses())), 
    "message" => $mime 
]); 
関連する問題