ใช้ wp_mail พร้อมไฟล์แนบ แต่ไม่ได้รับไฟล์แนบ


15

ฉันได้ดูตัวอย่างหลายอย่างรวมทั้งอันนี้แล้ว

ฉันได้รับอีเมลไม่มีปัญหา แต่ไม่มีไฟล์แนบ ฉันขาดเนื้อหา / ประเภทของไฟล์หรือไม่ ตัวอย่างทั้งหมดที่ฉันเห็นใช้เฉพาะข้อความ / html เป็นประเภทเนื้อหา

นี่คือสิ่งที่ฉันมี (เพิ่มตามคำขอของสตีเฟ่น)

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

คุณช่วยโพสต์โค้ดเกี่ยวกับสิ่งที่คุณพยายามได้ไหม
สตีเฟ่นแฮร์ริส

สวัสดีสตีเฟ่นเพิ่งอัพเดทโพสต์ด้วยรหัส ขอบคุณ!
tbm

คำตอบ:


27

$attachmentอาร์กิวเมนต์สำหรับการwp_mailใช้ไฟล์ (หรืออาร์เรย์ของไฟล์) - แต่เส้นทางของไฟล์จะต้องมีการระบุไว้อย่างเต็มที่ ตัวอย่างเช่น:

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

( ดู Codex ) ดูเหมือนว่าคุณ$_POST['file']อาจไม่ได้ระบุเส้นทางแบบเต็ม

ไฟล์แนบนั้นมีเส้นทางของไฟล์ไม่ใช่ URL การทำงานต่อไปนี้สำหรับฉัน:

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

หมายเหตุ:ฉันเปลี่ยนheadersแอตทริบิวต์ด้วย ฉันไม่แน่ใจทั้งหมดว่าคุณกำลังพยายามทำอะไร แต่มันหมายถึงข้อความอีเมลไม่ปรากฏในไคลเอนต์อีเมลบางราย


ขอบคุณสตีเฟ่นสำหรับการติดตาม ... ตกลง$_Post['file']จริง ๆ แล้วเป็น URL ของไฟล์และฉันได้ยืนยันว่า URL นั้นถูกต้อง เป็นที่ยอมรับหรือไม่?
tbm

ไม่โปรดดูคำตอบที่อัปเดตแล้ว :)
Stephen Harris

นั่นหมายความว่าฉันไม่สามารถให้พวกเขาส่งไฟล์แนบที่โฮสต์ที่อื่นเช่น Amazon S3 ได้ใช่ไหม ฉันกลัวสิ่งนั้น ฉันแค่พยายามให้ทางเลือกแก่ผู้คนในการส่งไฟล์ PDF ไปยัง Kindle โดยตรงจากหน้าเว็บ ฉันจะลองอีกครั้งในภายหลังและรายงานกลับ
tbm

คุณสามารถอ่านไฟล์ระยะไกลแล้วแนบมันได้หรือไม่ มีเป็นตัวอย่างที่นี่ วิธีที่คุณสามารถทำได้ / แนวปฏิบัติที่ดีที่สุดนั้นเป็นคำถามสำหรับ SO
Stephen Harris

ขอบคุณมากสตีเฟ่นฉันลองใช้วิธีแก้ปัญหาของคุณแล้วมันก็ใช้ได้ดี ตอนนี้ ... ฉันต้องหาวิธีการส่งไฟล์แนบที่โฮสต์ที่อื่น ขอบคุณสำหรับตัวชี้ที่มอง!
tbm
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.