Usando wp_mail com anexos, mas nenhum anexo recebido

8

Ok, eu desisto. Vimos vários exemplos, incluindo este .

Eu recebo o e-mail sem problemas, mas não há anexos. Estou perdendo o conteúdo / tipo de tipo de arquivo? Todos os exemplos que vi usam apenas text / html como o 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';
}
    
por tbm 26.04.2012 / 05:59

1 resposta

18

O argumento $attachment para wp_mail recebe 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 o Codex ). Parece que seu $_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: também alterei o atributo headers . Não tenho certeza do que seu exemplo estava tentando fazer, mas isso significava que a mensagem do e-mail não estava visível em alguns clientes de e-mail.

    
por Stephen Harris 27.04.2012 / 02:20

Tags