Verwenden von wp_mail mit Anhängen, aber ohne empfangene Anhänge


14

Ich habe mir mehrere Beispiele angesehen, darunter dieses .

Ich bekomme die E-Mail kein Problem, aber es gibt keine Anhänge. Fehlt mir der Inhalt / Typ des Dateityps? Alle Beispiele, die ich gesehen habe, verwenden nur Text / HTML als Inhaltstyp.

Folgendes habe ich (auf Stephens Bitte hinzugefügt)

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

Könnten Sie einen Code zu dem veröffentlichen, was Sie versucht haben?
Stephen Harris

Hallo Stephen, habe gerade den Beitrag mit dem Code aktualisiert. Danke!
TBB

Antworten:


26

Das $attachmentArgument für wp_mailnimmt eine Datei (oder ein Array von Dateien) - der Dateipfad muss jedoch vollständig angegeben werden. Zum Beispiel:

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

( siehe Codex ). Es scheint, dass Sie $_POST['file']wahrscheinlich nicht den vollständigen Pfad angeben.

Der Anhang muss einen Dateipfad und keine URL enthalten. Folgendes hat bei mir funktioniert:

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

Hinweis: Ich habe auch das headersAttribut geändert . Ich bin nicht ganz sicher, was Ihr Beispiel versucht hat, aber es bedeutete, dass die Nachricht der E-Mail auf einigen E-Mail-Clients nicht sichtbar war.


Vielen Dank, Stephen, für das Follow-up ... ok $_Post['file']ist eigentlich eine URL zu der Datei und ich habe bestätigt, dass die URL korrekt ist. Ist das akzeptabel?
TBB

Nein, siehe aktualisierte Antwort :)
Stephen Harris

Das heißt, ich kann nicht zulassen, dass sie einen Anhang senden, der an anderer Stelle gehostet wird, z. B. Amazon S3? Ich hatte Angst davor. Ich versuche nur, den Leuten die Möglichkeit zu geben, ein PDF direkt von einer Webseite per E-Mail an den Kindle zu senden. Wie auch immer, ich werde es später versuchen und mich zurückmelden.
TBB

Sie könnten die entfernte Datei lesen und dann anhängen? Hier gibt es ein Beispiel . Genau wie Sie es tun können / Best Practice wäre eine Frage für SO.
Stephen Harris

Vielen Dank Stephen, ich habe deine Lösung ausprobiert und es hat funktioniert. Jetzt ... muss ich herausfinden, wie ich an anderer Stelle gehostete Anhänge senden kann. Vielen Dank für den Hinweis, wo Sie suchen müssen!
TBB
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.