https://msdn.microsoft.com/office/office365/APi/mail-rest-operations#SendMessageOnTheFlyの添付ファイルを添付した電子メールをPHPで送信しようとしています。これまでのところ、私は添付ファイルのない普通の電子メールを送ることができます。しかし、どのように私は添付ファイルでそれを行うのですか?電子メールを送信するには、Webサーバー上のファイルをどのように添付しますか?
ドキュメントによれば、これは、応答がどのように見えるかされています
POST https://outlook.office.com/api/v2.0/me/sendmail
{
"Message": {
"Subject": "Meet for lunch?",
"Body": {
"ContentType": "Text",
"Content": "The new cafeteria is open."
},
"ToRecipients": [
{
"EmailAddress": {
"Address": "[email protected]"
}
}
],
"Attachments": [
{
"@odata.type": "#Microsoft.OutlookServices.FileAttachment",
"Name": "menu.txt",
"ContentBytes": "bWFjIGFuZCBjaGVlc2UgdG9kYXk="
}
]
},
"SaveToSentItems": "false"
}
私は何を持っていることはこれです:
public static function sendMessage($access_token, $user_email, $subject, $Content, $email)
{
$url = "https://example.com/upload.txt";
$base64 = base64_encode(file_get_contents($url));
$arr= array(
"Message" =>array(
'Subject' => $subject,
"Body"=>array(
"ContentType"=>"HTML",
"Content"=>$Content,
),
"ToRecipients"=>array(
array(
"EmailAddress"=>array(
"Address"=>$email,
)
),
),
"Attachments"=> array(
array(
"@odata.type"=> "#Microsoft.OutlookServices.FileAttachment",
"Name" => "upload.txt",
"ContentLocation"=> $url,
"ContentBytes"=> $base64,
"ContentType" => "text/plain"
)
)
));
$json=json_encode($arr, true);
$getMessagesUrl = self::$outlookApiUrl."/me/sendmail";
return self::makeApiCall($access_token, $user_email, "POST",$getMessagesUrl,$json);
}
、その後、私は外でメソッドを呼び出す:
var_dump(OutlookService::sendMessage($tokens['access_token'], $_SESSION['user_email'], 'subject', 'body', '[email protected]'));
私はこれと一緒に行くことについてはうんざりです。これは動作していないと私に400エラーを与える。私は400のエラーを認識していますが、何が原因か分かりません。
ここで何をしていますか?適切なフォーマットは何ですか?あなたの例での作業
あなたのリクエストをhttp://oauthplay.azurewebsites.net/で試してみることをお勧めします。迅速に状況を調整し、効果を確認するのに役立ちます。私はあなたのJSONペイロード生成コードを実行し、結果のJSONをサンドボックスに入れました。うまくいきましたので、あなたのファイルに関するデータや何かをどのように送信するのかが分かります。 –
400個のエラーには、しばしばエラー情報を含む応答本体があることに注意してください。それはここでヒントを提供するかもしれません。 –
@JasonJohnstonあなたの2番目のコメントは私のヒントでした。 400エラーにはエラーに関する情報がありました。なんらかの理由で、私は実際のコードでJson配列に 'SavetoSentItems'を置くのを間違えました。何らかの理由で正しい場所にあると仮定しました。手伝ってくれてどうもありがとう。 –