Usando wp_mail com anexos, mas nenhum anexo recebido


15

Eu estive olhando para vários exemplos, incluindo este .

Recebo o email sem problemas, mas não há anexos. Estou faltando o conteúdo / tipo de tipo de arquivo? Todos os exemplos que eu vi usam apenas text / html como tipo de conteúdo.

Aqui está o que eu tenho (adicionado a pedido de Stephen)

if( isset( $_POST['to'] ) && isset( $_POST['from'] ) ) {
global $wpdb;

$to = $_POST['to'];
$from = $_POST['from']; 
$name = get_bloginfo('name');
$attachment = $_POST['file'];
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: multipart/mixed; charset=iso-8859-1' . "\r\n";

$headers .= 'From: ' . $name . ' <' . $from . '>' . "\r\n";   
$subject = 'Send to Kindle';
$msg = 'Yay! Your book has <a href="http://yahoo.com">arrived</a>';

$mail_attachment = array( $attachment );
wp_mail($to, $subject, $msg, $headers, $mail_attachment);
echo 'Email sent';
} else {
echo 'Email not sent';
}

Você poderia postar algum código sobre o que você tentou?
Stephen Harris

Oi Stephen, acabou de atualizar a postagem com o código. Obrigado!
tbm

Respostas:


27

O $attachmentargumento para wp_mailpega um arquivo (ou matriz de arquivos) - mas o caminho do arquivo deve ser totalmente especificado. Por exemplo:

<?php
   $attachments = array(WP_CONTENT_DIR . '/uploads/file_to_attach.zip');
   $headers = 'From: My Name <myname@mydomain.com>' . "\r\n";
   wp_mail('test@test.com', 'subject', 'message', $headers, $attachments);
?>

( veja Codex ). Parece que você $_POST['file']provavelmente não está especificando o caminho completo.

O anexo tem um caminho de arquivo , não um URL. O seguinte funcionou para mim:

$to = $_POST['to'];
$from = $_POST['from']; 
$name = get_bloginfo('name');

$headers = 'From: My Name <myname@mydomain.com>' . "\r\n";

$subject = 'Send to Kindle';

$msg = 'Yay! Your book has <a href="http://yahoo.com">arrived</a>';

$mail_attachment = array(WP_CONTENT_DIR . '/uploads/2012/03/image.png');   

wp_mail($to, $subject, $msg, $headers, $mail_attachment);

Nota: Eu mudei o headersatributo também. Não tenho certeza do que seu exemplo estava tentando fazer, mas isso significava que a mensagem do email não estava visível em alguns clientes de email.


Obrigado, Stephen, pelo acompanhamento ... ok $_Post['file']é realmente um URL para o arquivo e confirmei que o URL está correto. Isso é aceitável?
tbm

Não, ver a resposta atualizada :)
Stephen Harris

Isso significa que não posso mandar que eles enviem um anexo hospedado em outro lugar, por exemplo, Amazon S3? Eu estava com medo daquilo. Só estou tentando dar às pessoas a opção de enviar um PDF para o Kindle diretamente de uma página da web. De qualquer forma, vou tentar isso mais tarde e relatar.
tbm

Você pode ler o arquivo remoto e anexá-lo? Há um exemplo aqui . Exatamente como você pode fazer isso / a melhor prática seria uma pergunta para o SO.
Stephen Harris

Muito obrigado, Stephen. Tentei sua solução e funcionou. Agora ... tenho que descobrir como enviar um anexo hospedado em outro lugar. Obrigado pelo ponteiro onde procurar!
tbm
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.