Caminho do arquivo de anexos de e-mail do Mandrill

Estou tentando adicionar alguns anexos a um e-mail que está sendo enviado usando o mandrill api através de um wrapper php. Eu tentei várias coisas diferentes para tentar append com sucesso o arquivo, mas sem sucesso. Estou usando o cakephp 2.x, mas eu não acho que tenha algum significado particular nesta instância (talvez ele faça ?!). Estou usando o wrapper php mantido por mandrill em https://bitbucket.org/mailchimp/mandrill-api-php

Aqui está o código:

$mandrill = new Mandrill(Configure::read('Site.mandrill_key')); $params = array( 'html' => ' 

Hi '.$user['User']['name'].',

tIt is that time of the year again.
Please login to the website members area and upload your renewal requirements.

Kind regards.

', "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); }

Isso mostra que um anexo foi adicionado ao e-mail e é um pdf, mas o pdf atual não foi anexado. Eu também tentei adicionando o caminho diretamente no arquivo como em:

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

Eu tenho pesquisado e lido todos os artigos que posso encontrar, mas não consigo encontrar nenhuma referência específica sobre como eu deveria especificar o caminho para mandrill para append corretamente meu anexo.

Qualquer ajuda será muito apreciada.

Parece que você está passando um parâmetro chamado path , mas a API Mandrill não leva o caminho de um arquivo para anexos. Se você estiver usando a chamada enviar ou enviar-modelo, os anexos devem ser uma matriz associativa (hash) com três chaves: tipo, nome e conteúdo.

O parâmetro de conteúdo deve ser o conteúdo do arquivo como uma seqüência codificada Base64, então, em vez do caminho, você deseja obter o conteúdo do arquivo, o Base64 codificá-los e, em seguida, passá-los em um parâmetro chamado content vez de path .

Você pode ver os detalhes completos dos parâmetros, inclusive para anexos, nos documentos da API Mandrill aqui: https://mandrillapp.com/api/docs/messages.html#method=send

ESTÁ BEM. Então, graças a Kaitlin por sua contribuição. O modo PHP para lidar com isso é obter o arquivo e, em seguida, base64_encode ele:

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

e, em seguida, na parte de anexos da matriz de mandrill você passa o:

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

Tão fácil! Agradeço novamente Kaitlin!