Використання 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);
?>

( див. Кодекс ). Здається, що ваш $_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

Ні, дивіться оновлену відповідь :)
Стівен Гарріс

Це означає, що я не можу їх надсилати вкладення, яке розміщується в іншому місці, наприклад, Amazon S3? Я цього боявся. Я просто намагаюся надати людям можливість надсилати PDF-файл Kindle безпосередньо з веб-сторінки. Так чи інакше, я спробую це пізніше і звіт.
tbm

Ви могли прочитати віддалений файл, а потім прикріпити його? Тут є приклад . Точно, як ви можете це зробити / найкраща практика буде питанням для ТА.
Стівен Харріс

Дякую тобі, Стівен, я спробував ваше рішення, і воно спрацювало. Тепер ... я мушу розібратися, як надіслати вкладення, розміщені в іншому місці. Дякуємо за вказівник, де шукати!
tbm
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.