Używanie wp_mail z załącznikami, ale nie otrzymano żadnych załączników


15

Patrzyłem na wiele przykładów, w tym ten jeden .

Otrzymuję e-mail bez problemu, ale nie ma załączników. Czy brakuje mi zawartości / typu typu pliku? Wszystkie przykłady, które widziałem, używają tylko text / html jako typu zawartości.

Oto co mam (dodane na prośbę Stephena)

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';
}

Czy możesz napisać kod dotyczący tego, czego próbowałeś?
Stephen Harris

Cześć Stephen, właśnie zaktualizowałem post za pomocą kodu. Dziękuję Ci!
tbm

Odpowiedzi:


27

$attachmentArgumentem wp_mailbierze plik (lub pliki) tablicę - ale ścieżka do pliku musi być w pełni określony. Na przykład:

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

( patrz Kodeks ). Wygląda na to, że $_POST['file']prawdopodobnie nie określasz pełnej ścieżki.

Załącznik musi zawierać ścieżkę do pliku , a nie adres URL. Dla mnie działało:

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

Uwaga: zmieniłem również headersatrybut. Nie jestem do końca pewien, co próbujesz zrobić, ale przykład oznaczał, że wiadomość e-mail nie była widoczna na niektórych klientach e-mail.


Dziękujemy Stephen za monitorowanie ... ok $_Post['file']to właściwie adres URL pliku i potwierdziłem, że adres URL jest poprawny. Czy to jest dopuszczalne?
TBM

Nie, zobacz zaktualizowaną odpowiedź :)
Stephen Harris

Oznacza to, że nie mogę im wysłać załącznika hostowanego w innym miejscu, np. Amazon S3? Bałam się tego. Próbuję tylko dać ludziom możliwość wysłania pliku PDF do Kindle bezpośrednio ze strony internetowej. W każdym razie spróbuję to później i zdam raport.
TBM

Możesz odczytać plik zdalny, a następnie dołączyć go? Tutaj jest przykład . Dokładnie, jak to zrobić / najlepsza praktyka byłaby pytaniem dla SO.
Stephen Harris

Dziękuję bardzo Stephen, wypróbowałem twoje rozwiązanie i zadziałało. Teraz ... Muszę wymyślić, jak wysłać załącznik hostowany gdzie indziej. Dzięki za wskaźnik, gdzie szukać!
tbm
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.