Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

Mail mit Anhang - Fehler

Forum rund um das Thema Hardware für Webmaster.
Neues Thema Antworten
Wirths Media
PostRank 9
PostRank 9
Beiträge: 2050
Registriert: 20.09.2004, 20:25

Beitrag von Wirths Media » 23.11.2006, 10:20

Hallo,

leider kommen die Mails nicht so an wie ich das gerne möchte...

Code: Alles auswählen

$nachricht = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http&#58;//www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http&#58;//www.w3.org/1999/xhtml" lang="de" xml&#58;lang="de">

<body style="margin&#58;0; padding&#58;15px; font&#58;12px arial, sans-serif;">

<b>Datensicherung</b><br /><br />

</body>
</html>';


$trenner = md5&#40;uniqid&#40;time&#40;&#41;&#41;&#41;;


$header = "From&#58; ".$daten&#91;"einstellungen"&#93;&#91;"mail_webmaster"&#93;."\r\n";
$header .= "MIME-Version&#58; 1.0\r\n";
$header .= "Content-Type&#58; multipart/mixed; boundary=$trenner\r\n\r\n";
$header .= "This is a multi-part message in MIME format\r\n";


$message = "--$trenner\r\n";
$message .= "Content-type&#58; text/html; charset=iso-8859-1\r\n";
$message .= "Content-Transfer-Encoding&#58; 8bit\r\n\r\n";
$message .= "$nachricht\r\n";


$message .= "--$trenner\r\n";
$message .= "Content-Type&#58; application/octet-stream; name=".strftime&#40;"%d. %b. %Y - %H&#58;%M", time&#40;&#41;&#41;."-Datensicherung.sql\r\n";
$message .= "Content-Transfer-Encoding&#58; base64\r\n";
$message .= "Content-Disposition&#58; attachment; filename=".strftime&#40;"%d. %b. %Y - %H&#58;%M", time&#40;&#41;&#41;."-Datensicherung.sql\r\n\r\n";
$message .= chunk_split&#40;base64_encode&#40;$datei&#41;&#41;;


$message .= "--$trenner--\r\n\r\n";


mail&#40;$daten&#91;"einstellungen"&#93;&#91;"mail_webmaster"&#93;, "Datensicherung", $message, $header&#41;;
?>
Über den Localen Server (bei mir) funktioniert alles und die Mail kommt korrekt an.

Leider nicht, wenn der Server das Script ausführt... :(

Der Anhang wird immer als Text in der Mail angezeigt.

Das Script selbst habe ich schon mehrfach verwendet.

Hier noch mal der Header aus der falsch angekommenen Mail

Code: Alles auswählen

Return-Path&#58; <xxx>
Delivered-To&#58; 4-xxx
Received&#58; &#40;qmail 21188 invoked from network&#41;; 23 Nov 2006 09&#58;52&#58;59 +0100
Received&#58; from xxx &#40;xxx&#41;
  by xxx with &#40;DHE-RSA-AES256-SHA encrypted&#41; SMTP; 23 Nov 2006 09&#58;52&#58;57 +0100
Received-SPF&#58; none &#40;xxx&#58; domain at xxx does not designate permitted sender hosts&#41;
Received&#58; &#40;qmail 14677 invoked by uid 0&#41;; 23 Nov 2006 09&#58;52&#58;25 +0100
Date&#58; 23 Nov 2006 09&#58;52&#58;25 +0100
Message-ID&#58; <20061123085225.14676.qmail@xxx>
To&#58; xxx
Subject&#58; Datensicherung
From&#58; xxx
MIME-Version&#58; 1.0 
Gruß
Daniel

Anzeige von ABAKUS

von Anzeige von ABAKUS »

Content Erstellung von ABAKUS Internet Marketing
Ihre Vorteile:
  • einzigartige Texte
  • suchmaschinenoptimierte Inhalte
  • eine sinnvolle Content-Strategie
  • Beratung und Umsetzung
Jetzt anfragen: 0511 / 300325-0

haha
PostRank 9
PostRank 9
Beiträge: 1065
Registriert: 03.04.2006, 18:08
Wohnort: Bi Hamborg

Beitrag von haha » 23.11.2006, 11:30

calusa-xx hat geschrieben:$header = "From: ".$daten["einstellungen"]["mail_webmaster"]."\r\n";
$header .= "MIME-Version: 1.0\r\n";
$header .= "Content-Type: multipart/mixed; boundary=$trenner\r\n\r\n";
$header .= "This is a multi-part message in MIME format\r\n";
Die letzte Zeile ist keine Kopfzeile und gehört an den Anfang der Nachricht (wenn überhaupt, heutzutage kann jeder Mailer mit MIME umgehen und kaum ein Benutzer weiß noch etwas mit MIME anzufangen, insofern ist diese Zeile nicht mehr wirklich notwendig noch hilfreich).

Das Problem ist, dass auf Deinem Server die \n durch \r\n ersetzt werden. Dadurch werden zusätzliche Leerzeilen eingefügt, und da die erste Leerzeile den Nachrichtenkopf beendet, landet die Content-Type-Zeile im Nachrichtenkörper, wo sie nicht mehr ausgewertet wird.

Ersetze alle \r\n durch \n, einschließlich derer in der Nachricht.

Wirths Media
PostRank 9
PostRank 9
Beiträge: 2050
Registriert: 20.09.2004, 20:25

Beitrag von Wirths Media » 23.11.2006, 11:48

Ersetze alle \r\n durch \n, einschließlich derer in der Nachricht.
super - das war es :)
$header .= "This is a multi-part message in MIME format\r\n";

Hab die Zeile auch gelöscht.


Danke :):):)

Gruß
Daniel

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


borgo
PostRank 1
PostRank 1
Beiträge: 2
Registriert: 19.12.2006, 16:10

Beitrag von borgo » 19.12.2006, 16:13

hallo,

ich habe das selbe problem! leider funktioniert bei mir die lösung (noch) nicht. habe ebenfalls alle /r/n durch /n ersetzt, jedoch besteht der fehler weiterhin: der anhang steht in einer seperaten "AT00003.txt" ganz komisch drin. haha, hast du auch für mich eine hifreiche antwort parat? :wink:

meine mail funktion:
function minic_mail($dateiname, $dateiname2)
{ $to='asd@as.de';
$betreff='Mail mit Anhang';
$textfeld='Das ist eine Mail mit Anhang';
$trenner="trenner";

$recipdatei=$dateiname;
$anhangdatei=$dateiname2;
$headers ="MIME-Version: 1.0\n";
$headers.="From: $absender\n";
$headers.="Content-Type: multipart/mixed;\n\tboundary=$trenner\n";

$botschaft.="\n--$trenner\n";

$botschaft.="Content-transfer-encoding: 7BIT\n";
$botschaft.="Content-type: text/plain\n";
$botschaft.= $textfeld;
$botschaft.="\n";

$botschaft.="\n--$trenner\n";

$botschaft.="Content-Type: text/plain;\n\tname=$recipdatei\n";
$botschaft.="Content-Transfer-Encoding: base64\n";
$botschaft.="Content-Disposition: attachement;\n\tfilename=$recipdatei\n";
$zeiger_auf_datei=fopen("fax/$dateiname","rb");
$inhalt_der_datei=fread($zeiger_auf_datei,filesize("fax/$dateiname"));
fclose($zeiger_auf_datei);
$inhalt_der_datei=chunk_split(base64_encode($inhalt_der_datei));
$botschaft.=$inhalt_der_datei;
$botschaft.="\n";
$botschaft.="--$trenner";

$botschaft.="\n--$trenner\n";

$botschaft.="Content-Type: text/plain;\n\tname=$anhangdatei\n";
$botschaft.="Content-Transfer-Encoding: base64\n";
$botschaft.="Content-Disposition: attachement;\n\tfilename=$anhangdatei\n";
$zeiger_auf_datei=fopen("upload/$dateiname2","rb");
$inhalt_der_datei=fread($zeiger_auf_datei,filesize("upload/$dateiname2"));
fclose($zeiger_auf_datei);
$inhalt_der_datei=chunk_split(base64_encode($inhalt_der_datei));
$botschaft.=$inhalt_der_datei;
$botschaft.="\n";
$botschaft.="--$trenner";

mail($to,$betreff,$botschaft,$headers);

}

haha
PostRank 9
PostRank 9
Beiträge: 1065
Registriert: 03.04.2006, 18:08
Wohnort: Bi Hamborg

Beitrag von haha » 19.12.2006, 16:27

borgo hat geschrieben:der anhang steht in einer seperaten "AT00003.txt" ganz komisch drin.
Wie soll er denn erscheinen? Im Moment schickst Du einen Text mit zwei Dateianhängen, die Texte darstellen sollen:
$botschaft.="Content-Type: text/plain;\n\tname=$recipdatei\n";
$botschaft.="Content-Transfer-Encoding: base64\n";
$botschaft.="Content-Disposition: attachement;\n\tfilename=$recipdatei\n";
Dass die beiden Dateien etwas "komisch" aussehen, liegt entweder daran, dass Du sie noch base64-kodiert (base64: Methode, um Binärdaten unfallfrei in Textform zu verwandeln) zu Gesicht bekommst (eher unwahrscheinlicher) oder dass es sich gar nicht um Texte handelt, sondern zum Beispiel um Grafiken (eher wahrscheinlicher). In letzterem Fall musst Du den Typ (rote Schrift) korrekt angeben.
Zuletzt geändert von haha am 19.12.2006, 16:30, insgesamt 1-mal geändert.

borgo
PostRank 1
PostRank 1
Beiträge: 2
Registriert: 19.12.2006, 16:10

Beitrag von borgo » 19.12.2006, 16:29

hallo,

ich habe soeben meinen eigenen fehler erkannt. das "$botschaft.="--$trenner"; " am ende des vorletzten blocks muss weg, dann gehts!

die zwei anhänge sind beide text-dateien. daher habe ich als content-type "text/plain" gewählt. ist das so nicht richtig gedacht?

haha
PostRank 9
PostRank 9
Beiträge: 1065
Registriert: 03.04.2006, 18:08
Wohnort: Bi Hamborg

Beitrag von haha » 19.12.2006, 16:31

borgo hat geschrieben:ich habe soeben meinen eigenen fehler erkannt. das "$botschaft.="--$trenner"; " am ende des vorletzten blocks muss weg, dann gehts!
Der ist doppelt, richtig.
die zwei anhänge sind beide text-dateien. daher habe ich als content-type "text/plain" gewählt. ist das so nicht richtig gedacht?
Doch, dann ist das korrekt.

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag