1. ホーム
  2. php

[解決済み] Mandrillメール添付ファイルパス

2022-02-16 03:53:58

質問内容

php ラッパー経由で mandrill api を使用して送信されるメールに、いくつかの添付ファイルを追加しようとしています。様々な方法を試してみましたが、うまくファイルを添付することができません。 私は cakephp 2.x を使用していますが、この例では特に意味があるとは思えません (あるかも?!)。 私は、mandrill がメンテナンスしている php ラッパーを次の場所で使用しています。 https://bitbucket.org/mailchimp/mandrill-api-php

以下はそのコードです。

$mandrill = new Mandrill(Configure::read('Site.mandrill_key'));
    $params = array(
        'html' => '
            <p>Hi '.$user['User']['name'].',</p>
            <p>tIt is that time of the year again.<br />
            <a href="http://my-site.com/members/renewal">Please login to the website members area and upload your renewal requirements</a>.</p>
            <p>Kind regards.</p>',
        "text" => null,
        "from_email" => Configure::read('Site.email'),
        "from_name" => Configure::read('Site.title'),
        "subject" => "Renewal Pending",
        "to" => array(array('email' => $user['User']['email'])),
        "track_opens" => true,
        "track_clicks" => true,
        "auto_text" => true,
        "attachments" => array(
            array(
                'path' => WWW_ROOT.'files/downloads/renewals',
                'type' => "application/pdf",
                'name' => 'document.pdf',
            )
        )
    );

    $mandrill->messages->send($params, true);

}

これは、メールに添付ファイルが追加され、それがpdfであることを示しますが、実際のpdfは添付されていません。 また、次のようにファイルに直接パスを追加して試してみました。

"attachments" => array(
            array(
                'type' => "application/pdf",
                'name' => WWW_ROOT.'files/downloads/renewals/document.pdf',
            )

ググってあらゆる記事を読みましたが、mandrill が添付ファイルを正しく添付するためのパスをどのように指定すればよいか、具体的な言及が見当たりません。

何かお手伝いいただけると幸いです。

解決方法は?

というパラメータを渡しているようですね。 path しかし、Mandrill API は添付ファイルにファイルのパスを受け取りません。 send または send-template 呼び出しを使用している場合、添付ファイルは type、name、content の 3 つのキーを持つ連想配列 (ハッシュ) であるべきです。

content パラメータには、ファイルの内容を Base64 エンコードした文字列を指定します。したがって、パスの代わりに、ファイルの内容を取得して Base64 エンコードし、それを content の代わりに path .

添付ファイルを含むパラメータの詳細については、こちらの Mandrill API ドキュメントを参照してください。 https://mandrillapp.com/api/docs/messages.html#method=send