Utilizzo di wp_mail con allegati ma nessun allegato ricevuto


15

Ho esaminato più esempi tra cui questo .

Ricevo l'e-mail senza problemi ma non ci sono allegati. Mi manca il contenuto / tipo di tipo di file? Tutti gli esempi che ho visto usano solo text / html come tipo di contenuto.

Ecco cosa ho (aggiunto su richiesta di 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';
}

Potresti pubblicare del codice su ciò che hai provato?
Stephen Harris,

Ciao Stefano, ho appena aggiornato il post con il codice. Grazie!
martedì

Risposte:


27

L' $attachmentargomento per wp_mailaccetta un file (o array di file), ma il percorso del file deve essere completamente specificato. Per esempio:

<?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);
?>

( vedi Codice ). Sembra che $_POST['file']probabilmente non stai specificando il percorso completo.

L'allegato deve contenere un percorso file , non un URL. Per me ha funzionato:

$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: ho modificato anche l' headersattributo. Non sono del tutto sicuro di ciò che il tuo esempio stava cercando di fare, ma significava che il messaggio dell'email non era visibile su alcuni client di posta elettronica.


Grazie Stefano per il follow-up ... ok in $_Post['file']realtà è un URL del file e ho confermato che l'URL è corretto. È accettabile?
martedì

No, vedi risposta aggiornata :)
Stephen Harris,

Ciò significa che non posso farli inviare un allegato ospitato altrove, ad esempio Amazon S3? Ne avevo paura. Sto solo cercando di dare alle persone la possibilità di inviare un PDF a Kindle via e-mail direttamente da una pagina web. Comunque ci proverò più tardi e riferirò.
martedì

Potresti leggere il file remoto, quindi allegarlo? C'è un esempio qui . Esattamente come puoi farlo / le migliori pratiche sarebbero una domanda per SO.
Stephen Harris,

Grazie mille Stephen, ho provato la tua soluzione e ha funzionato. Ora ... devo capire come inviare l'allegato ospitato altrove. Grazie per il puntatore dove cercare!
martedì
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.