Usando wp_mail con archivos adjuntos pero sin archivos adjuntos recibidos

8

Ok, me rindo. He estado mirando varios ejemplos, incluyendo this .

Recibo el correo electrónico sin problemas, pero no hay archivos adjuntos. ¿Me falta el contenido / tipo de tipo de archivo? Todos los ejemplos que he visto utilizan solo texto / html como tipo de contenido.

Esto es lo que tengo (agregado a petición 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';
}
    
pregunta tbm 26.04.2012 - 05:59

1 respuesta

18

El argumento $attachment para wp_mail toma un archivo (o conjunto de archivos), pero la ruta del archivo debe estar completamente especificada. Por ejemplo:

<?php
   $attachments = array(WP_CONTENT_DIR . '/uploads/file_to_attach.zip');
   $headers = 'From: My Name <[email protected]>' . "\r\n";
   wp_mail('[email protected]', 'subject', 'message', $headers, $attachments);
?>

( vea Codex ). Parece que su $_POST['file'] probablemente no está especificando la ruta completa.

El archivo adjunto tiene una ruta de archivo , no una URL. Lo siguiente funcionó para mí:

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

$headers = 'From: My Name <[email protected]>' . "\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: También cambié el atributo headers . No estoy completamente seguro de lo que tu ejemplo estaba tratando de hacer, pero significaba que el mensaje del correo electrónico no estaba visible en algunos clientes de correo electrónico.

    
respondido por el Stephen Harris 27.04.2012 - 02:20

Lea otras preguntas en las etiquetas