山魈电子邮件附件的文件路径(Mandrill email attachments file path

2019-08-17 07:26发布

我想一些附件添加到正在通过一个PHP包装使用山魈API发送的电子邮件。 我已经尝试了一些不同的东西,试图成功地附加的文件,但无济于事。 我使用CakePHP的2.x的,但我不认为在这个实例(也许它?!)什么特别的意义。 我使用的山魈维护的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',
            )

我用Google搜索和阅读每一篇文章我能找到,但无法找到任何具体的参考,以我应该如何指定路径山魈正确地将我的执着。

任何帮助将不胜感激。

Answer 1:

它看起来像你传递一个名为参数path ,但山魈API不承担附件的文件的路径。 如果您使用的发送或发送模板电话,附件,应该是一个关联数组(哈希)与三把钥匙:类型,名称和内容。

内容参数应该是文件作为Base64编码字符串的内容,所以不是路径,你会希望得到的文件内容,Base64编码它们,然后把它们放入一个参数调用content ,而不是path

:你可以在这里看到这些参数的全部细节,包括附件,在山魈API文档https://mandrillapp.com/api/docs/messages.html#method=send



Answer 2:

好。 所以感谢凯特林为她输入。 PHP的方式来处理,这是获得该文件,然后BASE64_ENCODE它:

$attachment = file_get_contents(WWW_ROOT.'files/downloads/file.pdf');
$attachment_encoded = base64_encode($attachment); 

然后在您通过山魈阵列的附件部分:

"attachments" => array(
        array(
            'content' => $attachment_encoded,
            'type' => "application/pdf",
            'name' => 'file.pdf',
        )

太简单! 再次感谢凯特林!



文章来源: Mandrill email attachments file path