Usando wp_mail con archivos adjuntos pero no se reciben los adjuntos
He estado revisando múltiples ejemplos incluyendo este ejemplo.
Recibo el correo sin problemas pero no hay archivos adjuntos. ¿Me estoy perdiendo el content/type del tipo de archivo? Todos los ejemplos que he visto utilizan solamente text/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 = 'Enviar a Kindle';
$msg = '¡Genial! Tu libro ha <a href="http://yahoo.com">llegado</a>';
$mail_attachment = array( $attachment );
wp_mail($to, $subject, $msg, $headers, $mail_attachment);
echo 'Correo enviado';
} else {
echo 'Correo no enviado';
}

El argumento $attachment
para wp_mail
acepta un archivo (o array 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: Mi Nombre <myname@mydomain.com>' . "\r\n";
wp_mail('test@test.com', 'asunto', 'mensaje', $headers, $attachments);
?>
(ver Codex). Parece que tu $_POST['file']
probablemente no especifica la ruta completa.
El adjunto debe ser una ruta de archivo, no una URL. Lo siguiente funcionó para mí:
$to = $_POST['to'];
$from = $_POST['from'];
$name = get_bloginfo('name');
$headers = 'From: Mi Nombre <myname@mydomain.com>' . "\r\n";
$subject = 'Enviar a Kindle';
$msg = '¡Genial! Tu libro ha <a href="http://yahoo.com">llegado</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 intentaba hacer tu ejemplo, pero hacía que el mensaje del correo no fuera visible en algunos clientes de email.

Gracias Stephen por seguir adelante... ok $_Post['file']
es en realidad una URL al archivo y he confirmado que la URL es correcta. ¿Es eso aceptable?

¿Eso significa que no puedo permitir que envíen un adjunto que esté alojado en otro lugar, por ejemplo Amazon S3? Temía que fuera así. Solo estoy intentando dar a la gente la opción de enviar un PDF a Kindle directamente desde una página web. De todos modos, probaré esto más tarde y reportaré cómo me fue.

¿Podrías leer el archivo remoto y luego adjuntarlo? Hay un ejemplo aquí. Exactamente cómo puedes hacerlo / las mejores prácticas sería una pregunta para SO.
