Sử dụng wp_mail với tệp đính kèm nhưng không nhận được tệp đính kèm


15

Tôi đã xem xét nhiều ví dụ bao gồm cả ví dụ này .

Tôi nhận được email không có vấn đề nhưng không có tệp đính kèm. Tôi có thiếu nội dung / loại tệp không? Tất cả các ví dụ tôi thấy chỉ sử dụng văn bản / html làm loại nội dung.

Đây là những gì tôi có (thêm theo yêu cầu của 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';
}

Bạn có thể gửi một số mã liên quan đến những gì bạn đã thử?
Stephen Harris

Xin chào Stephen, chỉ cần cập nhật bài viết với mã. Cảm ơn bạn!
tbm

Câu trả lời:


27

Đối $attachmentsố wp_maillấy một tệp (hoặc mảng tệp) - nhưng đường dẫn tệp phải được chỉ định đầy đủ. Ví dụ:

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

( xem Codex ). Có vẻ như bạn $_POST['file']có thể không chỉ định đường dẫn đầy đủ.

Tệp đính kèm phải có đường dẫn tệp chứ không phải url. Sau đây làm việc cho tôi:

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

Lưu ý: Tôi cũng đã thay đổi headersthuộc tính. Tôi không hoàn toàn chắc chắn những gì ví dụ của bạn đang cố gắng thực hiện, nhưng điều đó có nghĩa là thông điệp của email không hiển thị trên một số ứng dụng email.


Cảm ơn bạn Stephen đã theo dõi ... ok $_Post['file']thực sự là một URL đến tập tin và tôi đã xác nhận URL là chính xác. Điều đó có được chấp nhận không?
tbm

Không, xem câu trả lời cập nhật :)
Stephen Harris

Điều đó có nghĩa là tôi không thể yêu cầu họ gửi tệp đính kèm được lưu trữ ở nơi khác, ví dụ Amazon S3? Tôi đã lo sợ về nó. Tôi chỉ đang cố gắng cung cấp cho mọi người tùy chọn gửi email PDF đến Kindle trực tiếp từ một trang web. Dù sao tôi sẽ thử điều này sau và báo cáo lại.
tbm

Bạn có thể đọc các tập tin từ xa, sau đó đính kèm nó? Có một ví dụ ở đây . Chính xác làm thế nào bạn có thể làm điều đó / thực hành tốt nhất sẽ là một câu hỏi cho SO.
Stephen Harris

Cảm ơn bạn rất nhiều Stephen tôi đã thử giải pháp của bạn và nó đã làm việc. Bây giờ ... tôi phải tìm ra cách gửi tệp đính kèm được lưu trữ ở nơi khác. Cảm ơn con trỏ tìm ở đâu!
tbm
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.