Использование wp_mail с вложениями, но вложения не получены


15

Я смотрел на несколько примеров, включая этот .

Я получаю письмо без проблем, но вложения отсутствуют. Я пропускаю содержимое / тип файла? Во всех примерах, которые я видел, в качестве типа контента используется только text / 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);
?>

( см. Кодекс ). Похоже, что вы $_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-адрес правильный. Это приемлемо?
2012 года

Нет, смотрите обновленный ответ :)
Стивен Харрис

Это означает, что я не могу заставить их отправлять вложения, размещенные в других местах, например в Amazon S3? Я боялся этого. Я просто пытаюсь дать людям возможность отправить Kindle по электронной почте прямо с веб-страницы. В любом случае я попробую это позже и доложу.
TBM

Вы можете прочитать удаленный файл, а затем прикрепить его? Здесь есть пример . Как именно вы можете это сделать / наилучшей практикой будет вопрос для SO.
Стивен Харрис

Большое спасибо, Стивен. Я попробовал ваше решение, и оно сработало. Теперь ... Я должен выяснить, как отправить вложение, размещенное в другом месте. Спасибо за указатель, где искать!
четверг в четверг
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.