Menggunakan wp_mail dengan lampiran tetapi tidak ada lampiran yang diterima


15

Saya telah melihat banyak contoh termasuk yang ini .

Saya mendapatkan email tidak ada masalah tetapi tidak ada lampiran. Apakah saya melewatkan konten / jenis tipe file? Semua contoh yang saya lihat hanya menggunakan teks / html sebagai jenis konten.

Inilah yang saya miliki (ditambahkan atas permintaan 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';
}

Bisakah Anda memposting beberapa kode tentang apa yang telah Anda coba?
Stephen Harris

Halo Stephen, baru saja memperbarui kiriman dengan kode. Terima kasih!
tbm

Jawaban:


27

The $attachmentargumen untuk wp_mailmengambil file (atau array file) - tapi path file harus sepenuhnya ditentukan. Sebagai contoh:

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

( lihat Codex ). Tampaknya Anda $_POST['file']mungkin tidak menentukan path lengkap.

Lampiran harus jalur file , bukan url. Berikut ini bekerja untuk saya:

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

Catatan: Saya juga mengubah headersatributnya. Saya tidak sepenuhnya yakin apa yang sedang Anda coba lakukan sebagai contoh, tetapi itu berarti pesan email itu tidak terlihat pada beberapa klien email.


Terima kasih Stephen untuk menindaklanjuti ... ok $_Post['file']sebenarnya adalah URL ke file dan saya telah mengkonfirmasi URL itu benar. Apakah itu dapat diterima?
tbm

Tidak, lihat jawaban yang diperbarui :)
Stephen Harris

Itu berarti saya tidak bisa meminta mereka mengirim lampiran yang di-host di tempat lain misalnya Amazon S3? Saya takut akan hal itu. Saya hanya mencoba memberi orang pilihan untuk mengirim surel PDF ke Kindle langsung dari halaman web. Bagaimanapun saya akan mencoba ini nanti dan melaporkan kembali.
tbm

Anda bisa membaca file jarak jauh, lalu melampirkannya? Ada contoh di sini . Bagaimana tepatnya Anda bisa melakukannya / praktik terbaik akan menjadi pertanyaan bagi SO.
Stephen Harris

Terima kasih banyak, Stephen, saya mencoba solusi Anda dan itu berhasil. Sekarang ... Saya harus mencari cara mengirim lampiran yang diinangi di tempat lain. Terima kasih atas penunjuknya ke mana harus mencari!
tbm
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.