6 Stimmen

Php senden von html E-Mail mit .csv Anhang

Ich sende eine E-Mail über php ohne Probleme. Ich möchte eine .csv-Datei zusammen mit der HTML-E-Mail anhängen. Ich kann anscheinend nicht herausfinden, wie das geht. Muss ich auch einen bestimmten Content-Type in den $headers sowie eine Content-Disposition von Anhang einbeziehen?

$to = 'email@email.com';
$subject = 'Eine Betreffzeile';
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

$message = "

  Liste der neuen Preisänderungen

";

$message .="HTML Tabelle";
$message .="";

mail($to, $subject, $message, $headers);

0 Stimmen

Möglicher Duplikat von CSV-Datei per E-Mail senden

0 Stimmen

Ja, ich habe diesen Beitrag gesehen, aber er erklärt nicht, was was macht, wie z.B. Mehrteilnachrichten, was glaube ich, wonach ich suche.

20voto

Ata S. Punkte 870
$fileatt_type = "text/csv";
$myfile = "myfile.csv";

$file_size = filesize($myfile);
$handle = fopen($myfile, "r");
$content = fread($handle, $file_size);
fclose($handle);

$content = chunk_split(base64_encode($content));

$message = "

  Liste der neuen Preisänderungen

HERSTELLER";

$uid = md5(uniqid(time()));

#$header = "From: ".$from_name." <".$from_mail.">\r\n";
#$header .= "Reply-To: ".$replyto."\r\n";
$header .= "MIME-Version: 1.0\r\n";
$header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n";
$header .= "Dies ist eine mehrteilige Nachricht im MIME-Format.\r\n";
$header .= "--".$uid."\r\n";
$header .= "Content-type:text/html; charset=iso-8859-1\r\n";
$header .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
$header .= $message."\r\n\r\n";
$header .= "--".$uid."\r\n";
$header .= "Content-Type: text/csv; name=\"".$myfile."\"\r\n"; // use diff. tyoes here
$header .= "Content-Transfer-Encoding: base64\r\n";
$header .= "Content-Disposition: attachment; filename=\"".$myfile."\"\r\n\r\n";
$header .= $content."\r\n\r\n";
$header .= "--".$uid."--";

mail($to, $subject, $message, $header);

Versuchen Sie, den Code für Ihre Situation anzupassen.

0 Stimmen

Wird es für eine einfache Grenze wie "Grenze Grenze Grenze" funktionieren?

1 Stimmen

Warum setzen Sie Ihre eigene Grenze? Der Code berechnet Ihnen eine schöne.

0 Stimmen

Dies ist das, was ich in meiner E-Mail ohne Anhang erhalte: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="==Multipart_Boundary_xaa04eec9f70b8e7b42496fa47f70‌​257dx" Dies ist eine mehrteilige Nachricht im MIME-Format. --==Multipart_Boundary_xaa04eec9f70b8e7b42496fa47f70257dx Content-Type:text/html; charset="iso-8859-1" Content-Transfer-Encoding: 7bit --==Multipart_Boundary_xaa04eec9f70b8e7b42496fa47f70257dx Content-Type: text/csv; name="" Content-Transfer-Encoding: base64 TUFLRSxNT0RFTA0KQU1BTkEsSERDMTgyDQo= --==Multipart_Boundary_xaa04eec9f70b8e7b42496fa47f70257dx--

1voto

Wrikken Punkte 66796

Sie verwechseln HTTP-Header mit E-Mail.... Wahrscheinlich möchten Sie multipart messages verschicken, anstatt es neu zu implementieren, würde ich eher etwas wie PHPMailer empfehlen.

1voto

Solomon Suraj Punkte 1055

Dieser Code funktioniert für mich. Du kannst das ausprobieren.

 $value){$seperator .= $comma . '' . str_replace('', '""', $name);$comma = ",";}
$seperator .= "\n";
$seperator;
fputs($fp, $seperator);
mysqli_data_seek($sql, 0);
while ($row = mysqli_fetch_assoc($sql))
{
    $seperator = "";
    $comma = "";
    foreach ($row as $name => $value){$seperator .= $comma . '' . str_replace('', '""', $value);$comma = ",";}
    $seperator .= "\n";
    fputs($fp, $seperator);
}

fclose($fp);

$my_file = $filename2;
$path = "datas/";
$from_name = "solomon";
$from_mail = "pss@gmail.com";
$mailto = "pssworkcse@gmail.com";
$subject = "Dies ist eine E-Mail mit Anhang.";
$message = "Hallo,\r\n hast du den Anhang erhalten?\r\n\r\Solomon";
$replyto = "pssworkcse@gmail.com";
$file = $my_file;
$file_size = filesize($file);
$handle = fopen($file, "r");
$content = fread($handle, $file_size);
fclose($handle);
$content = chunk_split(base64_encode($content));
$uid = md5(uniqid(time()));
$name = basename($file);
$header = "From: " . $from_name . " <" . $from_mail . ">\r\n";
$header .= "Reply-To: " . $replyto . "\r\n";
$header .= "MIME-Version: 1.0\r\n";
$header .= "Content-Type: multipart/mixed; boundary=\"" . $uid . "\"\r\n\r\n";
$header .= "Das ist eine Nachricht im MIME-Format mit mehreren Teilen.\r\n";
$header .= "--" . $uid . "\r\n";
$header .= "Content-type:text/plain; charset=iso-8859-1\r\n";
$header .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
$header .= $message . "\r\n\r\n";
$header .= "--" . $uid . "\r\n";
$header .= "Content-Type: application/octet-stream; name=\"" . $filename2 . "\"\r\n"; 
$header .= "Content-Transfer-Encoding: base64\r\n";
$header .= "Content-Disposition: attachment; filename=\"" . $filename2 . "\"\r\n\r\n";
$header .= $content . "\r\n\r\n";
$header .= "--" . $uid . "--";
mail($mailto, $subject, "", $header)

?>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X