Utilizarea wp_mail cu atașamente dar nu se primesc atașamentele
Am studiat mai multe exemple, inclusiv acesta.
Primesc emailul fără probleme dar nu există atașamente. Îmi lipsește cumva content/type pentru tipul de fișier? Toate exemplele pe care le-am văzut folosesc doar text/html ca tip de conținut.
Iată ce am eu (adăugat la cererea lui Stephen)
// Verifică dacă există câmpurile 'to' și 'from' în POST
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! Cartea ta a <a href="http://yahoo.com">sosit</a>';
$mail_attachment = array( $attachment );
wp_mail($to, $subject, $msg, $headers, $mail_attachment);
echo 'Email trimis';
} else {
echo 'Email netrimis';
}

Argumentul $attachment
pentru wp_mail
acceptă un fișier (sau un array de fișiere) - dar calea către fișier trebuie să fie specificată complet. De exemplu:
<?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);
?>
(vezi Codex). Se pare că $_POST['file']
nu specifică probabil calea completă.
Atașamentul trebuie să fie o cale către fișier, nu o URL. Următorul cod a funcționat pentru mine:
$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! Cartea ta a <a href="http://yahoo.com">sosit</a>';
$mail_attachment = array(WP_CONTENT_DIR . '/uploads/2012/03/image.png');
wp_mail($to, $subject, $msg, $headers, $mail_attachment);
Notă: Am schimbat și atributul headers
. Nu sunt sigur exact ce încerca să facă exemplul tău, dar a făcut ca mesajul email-ului să nu fie vizibil pe unele clienți de email.

Mulțumesc Stephen pentru urmărire... ok $_Post['file']
este de fapt un URL către fișier și am confirmat că URL-ul este corect. Este acceptabil acest lucru?

Asta înseamnă că nu pot permite oamenilor să trimită un atașament care este găzduit în altă parte, de exemplu pe Amazon S3? Mă temeam de asta. Încercam doar să le ofer oamenilor opțiunea de a trimite un PDF direct pe Kindle dintr-o pagină web. Oricum, voi încerca mai târziu și voi reveni cu feedback.

Ai putea citi fișierul de la distanță, apoi să-l atașezi? Există un exemplu aici. Modul exact în care poți face asta / cea mai bună practică ar fi o întrebare pentru SO.
