PHP - E-Mail Datei als Anhang versenden

Dieses Thema im Forum "Script Serverseitig" wurde erstellt von litschi, 5. Mai 2014.

  1. litschi

    litschi Member

    Registriert seit:
    21. Juli 2006
    Beiträge:
    188
    Guten Abend,

    ich habe eine Onlineshop wo Bestellungen per XML Datei auf den Server hinterlegt werden. Diese XML Datei benötige ich für ein spezielles Programm. So weit funktioniert das Ganze auch, allerdings möchte ich nun die Datei einfach als E-Mail versenden, direkt aus dem Script ohne zu speichern.

    Der Dateiname sollte dabei aus dem timestamp und der Endung XML bestehen. Leider bin ich nicht so der PHP Guru aber es hat bereits funktioniert nur war die XML Datei in der E-Mail, also nicht als Anhang.

    Wer von Euch Profis kann mir das schnell anpassen? Wäre echt nett!

    "$export_path" habe ich auskommentiert da ja die Datei nicht mehr auf dem Server hinterlegt werden soll.

    $xml_file = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <WinOrder>
    <OrderList>
    <CreateDateTime>' . date('d.m.Y H:i:s') . '</CreateDateTime>
    <Order>
    <ServerData>
    <Agent>' . $_SERVER['HTTP_USER_AGENT'] . '</Agent>
    <IpAddress></IpAddress>
    <CreateDateTime>' . date('d.m.Y H:i') . '</CreateDateTime>
    <Referer>Pizza Shop</Referer>
    </ServerData>
    <Customer>
    <CustomerNo></CustomerNo>
    <DeliveryAddress>
    <Title>' . trim($shop['prefix']) . '</Title>
    <LastName>' . trim($shop['lastname']) . '</LastName>
    <FirstName>' . trim($shop['firstname']) . '</FirstName>
    <Company>' . trim($shop['company']) . '</Company>
    <Street>' . trim($shop['address']) . '</Street>
    <HouseNo></HouseNo>
    <AddAddress>Stockwerk: ' . trim($shop['floor']) . '</AddAddress>
    <Zip>' . trim($city[0]) . '</Zip>
    <City>' . trim($city[1]) . '</City>
    <Country>Schweiz</Country>
    <Email>' . $mail . '</Email>
    <PhoneNo>' . trim($shop['phone']) . '</PhoneNo>
    </DeliveryAddress>
    </Customer>
    <StoreData>
    <StoreId></StoreId>
    <StoreName>Contrexx -> WinOrder</StoreName>
    </StoreData>
    <AddInfo>
    <Comment>LIEFERZEIT: ' . $shop['requested_delivery_time'] . " || " . trim(str_replace("\n", ' ', $shop['customer_note'])) . '</Comment>
    <DateTimeOrder></DateTimeOrder>
    </AddInfo>
    <ArticleList>
    ' . $cart . '
    </ArticleList>
    </Order>
    </OrderList>
    </WinOrder>';



    $trenner="--trenner--";
    $dateiname="1.xml";

    $message="\n--$trenner\n";
    $message.="Content-transfer-encoding: 7BIT\r\n";
    $message.="Content-type: text/plain\n\n";
    $message.= "Bestellung";
    $message.="\n\n";
    $message.="\n--$trenner\n";
    $message.="Content-Type: application/octetstream;\n\tname=$dateiname\n";
    $message.="Content-Transfer-Encoding: base64\n";
    $message.="Content-Disposition: attachment;\n\tfilename=$dateiname\n\n";
    $message.=chunk_split(base64_encode($xml_file));
    $message.="\n\n";
    $message.="--$trenner";

    $header ="MIME-Version: 1.0\r\n";
    $header.="From: E-Shop PXXX <info@XXX.ch>\n";
    $header.="Content-Type: multipart/mixed;\n\tboundary=$trenner\n";

    mail("order@XXX.ch","Bestellung",$message,$header);
     
    Zuletzt bearbeitet: 5. Mai 2014
  2. ted

    ted Member

    Registriert seit:
    8. Januar 2002
    Beiträge:
    112
    AW: PHP - E-Mail Datei als Anhang versenden

    Nehm lieber PHPmailer.
     
  3. litschi

    litschi Member

    Registriert seit:
    21. Juli 2006
    Beiträge:
    188
    AW: PHP - E-Mail Datei als Anhang versenden

    Also nun versendet er die E-Mail mit der XML Datei als Anhang, aber leider sind es immer 2 Dateien!?!

    Eine Datei heisst ATT00018.TXT und ist einfach leer. Ich weiss nicht woher die Datei ständig kommt. Die Zahl (18) geht immer höher .
     
    Zuletzt bearbeitet: 5. Mai 2014
  4. Dragon0001

    Dragon0001 Member

    Registriert seit:
    7. November 2012
    Beiträge:
    56
    AW: PHP - E-Mail Datei als Anhang versenden

    Kannst du einmal den Quelltext der Mail anhängen?
    Auf den ersten Blick sehe keinen Fehler im Code.
     
  5. litschi

    litschi Member

    Registriert seit:
    21. Juli 2006
    Beiträge:
    188
    AW: PHP - E-Mail Datei als Anhang versenden

    Return-Path: <webmaster@XXXXXXX.ch>
    X-Original-To: info@XXXXXX.ch
    Delivered-To: info@XXXXXX.ch
    Received: by XXXXXX.ch (Postfix, from userid 2006)
    <------>id 42A4F59606C; Tue, 6 May 2014 12:23:16 +0200 (CEST)
    To: info@XXXXXX.ch
    Subject: Bestellung
    X-PHP-Originating-Script: 33:index.class.php
    MIME-Version: 1.0^M
    From: E-Shop Pizza XXXXXX <info@XXXXXX.ch>
    Content-Type: multipart/mixed;
    <------>boundary=--trenner--
    Message-Id: <20140506102316.42A4F59606C@XXXXXXX.ch>
    Date: Tue, 6 May 2014 12:23:16 +0200 (CEST)


    ----trenner--
    Content-transfer-encoding: 7BIT^M
    Content-type: text/plain

    Bestellung


    ----trenner--
    Content-Type: application/octetstream;
    <------>name=1.xml
    Content-Transfer-Encoding: base64
    Content-Disposition: attachment;
    <------>filename=1.xml

    PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI/Pgo8^M
    V2luT3JkZXI+CiAgICA8T3JkZXJMaXN0PgogICAgICAgIDxDcmVhdGVEYXRlVGltZT4wNi4wNS4y^M
    MDE0IDA2OjIzOjE2PC9DcmVhdGVEYXRlVGltZT4KICAgICAgICA8T3JkZXI+CiAgICAgICAgICAg^M
    IDxTZXJ2ZXJEYXRhPgogICAgICAgICAgICAgICAgPEFnZW50Pk1vemlsbGEvNS4wIChXaW5kb3dz^M
    IE5UIDYuMTsgVHJpZGVudC83LjA7IHJ2OjExLjApIGxpa2UgR2Vja288L0FnZW50PgogICAgICAg^M
    ICAgICAgICAgPElwQWRkcmVzcz48L0lwQWRkcmVzcz4KICAgICAgICAgICAgICAgIDxDcmVhdGVE^M
    YXRlVGltZT4wNi4wNS4yMDE0IDA2OjIzPC9DcmVhdGVEYXRlVGltZT4KICAgICAgICAgICAgICAg^M
    IDxSZWZlcmVyPlBpenphIFNob3A8L1JlZmVyZXI+CiAgICAgICAgICAgIDwvU2VydmVyRGF0YT4K^M
    ICAgICAgICAgICAgPEN1c3RvbWVyPgogICAgICAgICAgICAgICAgPEN1c3RvbWVyTm8+PC9DdXN0^M
    b21lck5vPgogICAgICAgICAgICAgICAgPERlbGl2ZXJ5QWRkcmVzcz4KICAgICAgICAgICAgICAg^M
    ICAgICA8VGl0bGU+SGVycjwvVGl0bGU+CiAgICAgICAgICAgICAgICAgICAgPExhc3ROYW1lPlNp^M
    cHBlbDwvTGFzdE5hbWU+CiAgICAgICAgICAgICAgICAgICAgPEZpcnN0TmFtZT5QaWVycmU8L0Zp^M
    cnN0TmFtZT4KICAgICAgICAgICAgICAgICAgICA8Q29tcGFueT48L0NvbXBhbnk+CiAgICAgICAg^M
    ICAgICAgICAgICAgPFN0cmVldD5Qcm9tZW5hZGUgNjA8L1N0cmVldD4KICAgICAgICAgICAgICAg^M
    ICAgICA8SG91c2VObz48L0hvdXNlTm8+CiAgICAgICAgICAgICAgICAgICAgPEFkZEFkZHJlc3M+^M
    U3RvY2t3ZXJrOiBFaW5mYW1pbGllbi1IYXVzPC9BZGRBZGRyZXNzPgogICAgICAgICAgICAgICAg^M
    ICAgIDxaaXA+NzI2MDwvWmlwPgogICAgICAgICAgICAgICAgICAgIDxDaXR5PkRhdm9zIERvcmYg^M
    IChNaW5kZXN0YmVzdGVsbHdlcnQgQ0hGIDIwLjAwKTwvQ2l0eT4KICAgICAgICAgICAgICAgICAg^M
    ICA8Q291bnRyeT5TY2h3ZWl6PC9Db3VudHJ5PgogICAgICAgICAgICAgICAgICAgIDxFbWFpbD5w^M
    aWVycmUuc2lwcGVsQGdtYWlsLmNvbTwvRW1haWw+CiAgICAgICAgICAgICAgICAgICAgPFBob25l^M
    Tm8+MDc4ODkwOTI3NDwvUGhvbmVObz4KICAgICAgICAgICAgICAgIDwvRGVsaXZlcnlBZGRyZXNz^M
    PgogICAgICAgICAgICA8L0N1c3RvbWVyPgogICAgICAgICAgICA8U3RvcmVEYXRhPgogICAgICAg^M
    ICAgICAgICAgPFN0b3JlSWQ+PC9TdG9yZUlkPgogICAgICAgICAgICAgICAgPFN0b3JlTmFtZT5D^M
    b250cmV4eCAtPiBXaW5PcmRlcjwvU3RvcmVOYW1lPgogICAgICAgICAgICA8L1N0b3JlRGF0YT4K^M
    ICAgICAgICAgICAgPEFkZEluZm8+CiAgICAgICAgICAgICAgICA8Q29tbWVudD5MSUVGRVJaRUlU^M
    OiAxMTowMCAgICAgfHwgICAgIDwvQ29tbWVudD4KICAgICAgICAgICAgICAgIDxEYXRlVGltZU9y^M
    ZGVyPjwvRGF0ZVRpbWVPcmRlcj4KICAgICAgICAgICAgPC9BZGRJbmZvPgogICAgICAgICAgICA8^M
    QXJ0aWNsZUxpc3Q+CiAgICAgICAgICAgICAgICA8QXJ0aWNsZT4KICAgICAgICAgICAgICAgICAg^M
    ICA8QXJ0aWNsZU5vPjwvQXJ0aWNsZU5vPgogICAgICAgICAgICAgICAgICAgIDxBcnRpY2xlTmFt^M
    ZT5NQVJHSEVSSVRBPC9BcnRpY2xlTmFtZT4KICAgICAgICAgICAgICAgICAgICA8Q291bnQ+MTwv^M
    Q291bnQ+CiAgICAgICAgICAgICAgICAgICAgPFByaWNlPjEzPC9QcmljZT4KICAgICAgICAgICAg^M
     
  6. litschi

    litschi Member

    Registriert seit:
    21. Juli 2006
    Beiträge:
    188
    AW: PHP - E-Mail Datei als Anhang versenden

    $trenner="--trenner--";

    $dateiname="1.xml";
    $dateiinhalt="$xml_file";


    $message="\n--$trenner\n";
    $message.="Content-transfer-encoding: 7BIT\r\n";
    $message.="Content-type: text/plain\n\n";
    $message.= "Bestellung";
    $message.="\n\n";
    $message.="\n--$trenner\n";
    $message.="Content-Type: application/octetstream;\n\tname=$dateiname\n";
    $message.="Content-Transfer-Encoding: base64\n";
    $message.="Content-Disposition: attachment;\n\tfilename=$dateiname\n\n";
    $message.=chunk_split(base64_encode($dateiinhalt));
    $message.="\n\n";
    $message.="--$trenner";

    $header ="MIME-Version: 1.0\r\n";
    $header.="From: E-Shop Pizza XXXXXX <info@XXXXXX.ch>\n";
    $header.="Content-Type: multipart/mixed;\n\tboundary=$trenner\n";

    mail("info@XXXXXX.ch","Bestellung",$message,$header);
     
  7. litschi

    litschi Member

    Registriert seit:
    21. Juli 2006
    Beiträge:
    188
    AW: PHP - E-Mail Datei als Anhang versenden

    Habe ich, nun funktioniert es. Ich hatte vorher verschiedene, andere Scripts durchprobiert aber es gab immer wieder Fehler. Mit PHPmailer funktioniert es nun wunderbar.
     

Diese Seite empfehlen