| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |
|

15-05-2009, 13:53
|
|
sypr000
Registrierter Benutzer
|
|
Registriert seit: May 2009
Beiträge: 12
|
|
Mail attachment
Hi,
habe ein kleines Problem.
Wollte Mail mit Attachement über ein php script verschicken. Leider werden mir die Header Informationen als normaler Body Text angezeigt genauso wie die Binärdaten des Attachments, wenn ich die Mail erhalte.
Sieht jemand meinen Fehler?:
PHP-Code:
[LEFT]public function sendAttachmentMail ($file){ // meine Abschnittsmarke definieren $abschnittsmarke = "<<<:".md5(uniqid(mt_rand(), 1)); // Die Datei ordentlich encodieren und Splitten $data = chunk_split(base64_encode (file_get_contents ($file))); // HEader Definition $header = "From: ".$this->from." \r\n"; $header.= "To: ".$this->to." \r\n"; $header.= "MIME-Version: 1.0\r\n"; $header.= "Content-Type: multipart/mixed;\r\n"; $header.= "boundary=\"".$abschnittsmarke."\"\r\n";[/LEFT] [LEFT]// Body[/LEFT] $body = "This is a multi-part message in MIME format.\r\n\r\n"; $body .= "--".$abschnittsmarke."\r\n"; $body .= "Content-Type: text/html; charset=iso-8859-1\r\n"; $body .= "Content-Transfer-Encoding: 7bit\r\n\r\n"; $body .= $this->text."\r\n"; $body .= "--".$abschnittsmarke."\r\n"; $body .= "Content-Disposition: attachement;\n\r"; $body .= "Content-Type: Application/Octet-Stream; name=\"$file\"\r\n"; $body .= "$data\r\n"; $body .= "--".$abschnittsmarke."\r\n"; // Mailversand if (mail ($this->to,$this->subject,$body, $header)) return true; return false;[/LEFT] }
thx 4 help.
Geändert von sypr000 (15-05-2009 um 15:28 Uhr)
|

15-05-2009, 13:55
|
|
hhcm
PHP Senior
|
|
Registriert seit: Jun 2005
Ort: Viersen, NRW
Beiträge: 1.829
|
|
Wozu das Rad neu erfinden. Nutz doch einfach den phpmailer. Dann musst du nich frickeln.
__________________
gruss Chris
Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."
|

15-05-2009, 14:45
|
|
sypr000
Registrierter Benutzer
|
|
Registriert seit: May 2009
Beiträge: 12
|
|
Es geht mir hier ja darum, die Materie zu verstehen. Und das klappt am besten wenn man es mal selbst versucht
Also du siehst spontan keinen Fehler?
|

15-05-2009, 15:05
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
|
|
Zitat:
Aus dem Manual:
Note: If messages are not received, try using a LF (\n) only. Some poor quality Unix mail transfer agents replace LF by CRLF automatically (which leads to doubling CR if CRLF is used). This should be a last resort, as it does not comply with » RFC 2822.
|
Schon versucht?
|

15-05-2009, 15:06
|
|
hhcm
PHP Senior
|
|
Registriert seit: Jun 2005
Ort: Viersen, NRW
Beiträge: 1.829
|
|
Setz boundary mal hinter den Content-Type
Bevor du die Daten ausgibst, solltest du noch
Content-Transfer-Encoding: base64
und
Content-Description:
setzen.
__________________
gruss Chris
Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."
|

15-05-2009, 15:08
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
|
|
Testweise würde ich es erstmal ganz ohne Attachments probieren, also kein Multipart sondern plain text. Dann Stück für Stück aufbauen.
|

15-05-2009, 15:11
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Zitat:
Zitat von sypr000
Leider werden mir die Header Informationen als normaler Body Text angezeigt
|
Alle - oder ab einem bestimmten?
Das erste auftreten eines doppelten \r\n beendet den Header - also da ggf. irgendwas falsch?
PHP-Code:
$body .= "Content-Disposition: attachement;\n\r";
$body .= "Content-Type: Application/Octet-Stream;
name=\"$file\"\r\n";
Also da ist der Zeilenumbruch hinter der ersten Zeile zumindest mal falsch.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

15-05-2009, 15:26
|
|
sypr000
Registrierter Benutzer
|
|
Registriert seit: May 2009
Beiträge: 12
|
|
PHP-Code:
This is a multi-part message in MIME format. --<<<:ee43a5f8ad82d0956972588d92969ee7 Content-Type: text/html; charset=iso-8859-1 Content-Transfer-Encoding: 7bit BLABLALBA hier ist mein TEXT LALALALA --<<<:ee43a5f8ad82d0956972588d92969ee7 Content-Disposition: attachement; Content-Type: Application/Octet-Stream; name="./../praktikant/196e24b93ebdbd0f0de7df1f12abd820.doc" Content-Transfer-Encoding: base64 0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAABAAAANgAAAAAAAAAA EAAAOAAAAAEAAAD+////AAAAADUAAAD///////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// /////////////////////////AAAAADUAAAD/////////////////////////////////////////////////// //////////////////////////////////////////////CQAGAAAAAAAAAAAAAAABAAAANgAAAAAAAAAA////////// /////////////EAAAOAAAAAEAAAD/////////////////////////////CQAGAAAAAAAAAAAAAAABAAAANgAAAA //////////////////////////////////////////////////////////////////////////////////////////////// ////////////AAACQAGAAAAAAAAAAAAAAABAAAANgAAAAAAAAAAAADUAAAD//////////////////////////// pcEABUAJBAAA+BK/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAIgAAAAAAEAEAAAAAAAAQAQAAEAE AAAAAAAAQAQAAAAAAABABAAAAAAAAEAEAAAAAAAAQAQAABQAAAAAAAAAAAAAAFQEAAAAAAAAGAsA AAAAAAAYCwAAAAAAABgLAAA4AAAAUAsAACwAAAB8CwAALAAAAFQEAAAAAAAAaBEAACoBAAC0CwAA FgAAAMoLAAAAAAAAy//////////////////////////AAAAAAAAAAAAAAAIgAAAAAAAAAAAAAAAAAIgAAAA gsAAAAAAA////DKCwAAAAAA////AMoLAAAAAAAAYQ0AAAAAAABhDQAAAAAAAGENAAAA AAAA5xAAAAIAAADpEAAQAAAAGENAAAAAAAAYQ0AAAAAAABhDQAAAAAAAA0RAAAAAAAA
Das ist das was ich als Plain text erhalte, Bin gerade dabei die Anregungen auszuprobieren. Danke
... ich versteh nicht wie man damit etwas anfangen könnte?
das ist nur ein schnipsel der 100kb die versendet wurden
Geändert von sypr000 (15-05-2009 um 17:52 Uhr)
|

15-05-2009, 15:55
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
|
|
Ist das das gesamte Dokument? Dir ist klar, dass man das rauskopieren und dekodieren könnte? Ich hoffe, es sind keine vertraulichen Informationen! Ansonsten bearbeite deinen letzten Beitrag und nimm es raus.
|

15-05-2009, 17:53
|
|
sypr000
Registrierter Benutzer
|
|
Registriert seit: May 2009
Beiträge: 12
|
|
nein das ist nicht das gesamte Dokument, aber das man ein base64 encodiertes dokument wieder entschlüsseln kann ist mir wohl klar
|

15-05-2009, 18:17
|
|
sypr000
Registrierter Benutzer
|
|
Registriert seit: May 2009
Beiträge: 12
|
|
also ich komme der Sache schon etwas näher:
X-Amavis-Alert: BAD HEADER MIME error: error: multipart boundary is missing, or contains CR or LF
|

15-05-2009, 18:21
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Zitat:
Zitat von sypr000
X-Amavis-Alert: BAD HEADER MIME error: error: multipart boundary is missing, or contains CR or LF
|
Na ja, du hast ja auch bereits Text vor dem ersten Auftauchen der boundary stehen:
Code:
This is a multi-part message in MIME format.
--<<<:ee43a5f8ad82d0956972588d92969ee7
Content-Type: text/html; charset=iso-8859-1
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

15-05-2009, 18:26
|
|
sypr000
Registrierter Benutzer
|
|
Registriert seit: May 2009
Beiträge: 12
|
|
Selbst wenn ich das weg mache krieg ich noch im Header:
MIME-Version: 1.0
boundary="<<<:44fdc6e9cddd3e5483a1b0aa7901b6d3"
d.h. es fehlt wieder content type multipart, obwohl ichs ja eigentlich an mail () übergebe ....
PHP-Code:
$header= "MIME-Version: 1.0\n"; $header.= "Content-Type: multipart/mixed;\n"; $header.= "boundary=\"".$abschnittsmarke."\"\n";
hmmm ich weiß auchnich weiter :/
|

15-05-2009, 18:32
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Wo sind denn jetzt in dem Code die \r geblieben?
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

15-05-2009, 18:34
|
|
sypr000
Registrierter Benutzer
|
|
Registriert seit: May 2009
Beiträge: 12
|
|
nachdem es mit nich funktioniert hat, hab ich sie halt mal raus gemacht  .
kannst du mir ansatz punkte geben wo ich noch gucken könnte, oder was ich posten soll, damit mir geholfen werden könnte? besten dank
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|