Guten Tag
Is mein erster Beitrag im Forum deshalb erstmal mal Hallo an Hallo
Zu Vorwarnung, ich bin blutiger Anfänger
Erstmal zur Problemstellung:
Auf einer Kontakt-Seite habe ich mehrere Textfelder, die der Nutzer ausfüllen und dann abschicken kann. Es dreht sich um eine Auftragsanfrage.
Die Daten werden per PHP aus den Feldern geholt und in die Mail geschrieben
--> Funktioniert
Die Daten werden ebenfalls in ein vorgefertigtes Word-Doc geschrieben und ersetzen dort die Platzhalter. Anschließend wird das Doc unter neuem Namen auf dem Server gespeichert.
--> Funktioniert
Am Ende wird dir Mail an mich versandt mit den jeweiligen Angaben die der Nutzer gemacht hat und dem Word-Doc als Anhang.
--> Funktioniert
Hab vieles bisher hingekriegt, jetzt kommt aber der Teil wo ich verzweifle...
Problem:
Wenn ich das Doc in der Mail öffnen will kommt folgende Meldung:
"Leider kann Anhang.docx nicht geöffnet werden, da der Inhalt Probleme verursacht".
Option Wiederherstellen gewählt:
Fehlermeldung:
"Diese Datei kann in Microsoft Office nicht geöffnet werden, weil Teile fehlen oder ungültig sind"
Wenn ich die Datei aber über den FTP Server nach drücken des "Sende" Buttons auf meinen PC ziehe und öffne ist Sie genau wie Sie sein sollte.
Ausgefüllt und in der gewünschten Formatierung...
Hier mein PHP Code:
Der Code an sich funktioniert, nur das Dokument weist beim anhängen Fehler auf, kann über den FTP-Server aber normal geöffnet werden...
Kann mir da jmd helfen?
Danke vorab und viele Grüße
Kellrkind
Is mein erster Beitrag im Forum deshalb erstmal mal Hallo an Hallo
Zu Vorwarnung, ich bin blutiger Anfänger
Erstmal zur Problemstellung:
Auf einer Kontakt-Seite habe ich mehrere Textfelder, die der Nutzer ausfüllen und dann abschicken kann. Es dreht sich um eine Auftragsanfrage.
Die Daten werden per PHP aus den Feldern geholt und in die Mail geschrieben
--> Funktioniert
Die Daten werden ebenfalls in ein vorgefertigtes Word-Doc geschrieben und ersetzen dort die Platzhalter. Anschließend wird das Doc unter neuem Namen auf dem Server gespeichert.
--> Funktioniert
Am Ende wird dir Mail an mich versandt mit den jeweiligen Angaben die der Nutzer gemacht hat und dem Word-Doc als Anhang.
--> Funktioniert
Hab vieles bisher hingekriegt, jetzt kommt aber der Teil wo ich verzweifle...
Problem:
Wenn ich das Doc in der Mail öffnen will kommt folgende Meldung:
"Leider kann Anhang.docx nicht geöffnet werden, da der Inhalt Probleme verursacht".
Option Wiederherstellen gewählt:
Fehlermeldung:
"Diese Datei kann in Microsoft Office nicht geöffnet werden, weil Teile fehlen oder ungültig sind"
Wenn ich die Datei aber über den FTP Server nach drücken des "Sende" Buttons auf meinen PC ziehe und öffne ist Sie genau wie Sie sein sollte.
Ausgefüllt und in der gewünschten Formatierung...
Hier mein PHP Code:
Code:
include 'config.php'; error_reporting (E_ALL ^ E_NOTICE); $post = (!empty($_POST)) ? true : false; $error = ''; $lokalitäten_text = array(); if($post) { // Textfelder werden ausgelesen $firma = stripslashes($_POST['firma']); $name_vorname = stripslashes($_POST['name_vorname']); $street = stripslashes($_POST['street']); $plz = stripslashes($_POST['plz']); $telefon = stripslashes($_POST['telefon']); $mobil = stripslashes($_POST['mobil']); $vort = stripslashes($_POST['vort']); $date = stripslashes($_POST['date']); $time = stripslashes($_POST['time']); $motto = stripslashes($_POST['motto']); $visitors = stripslashes($_POST['besucher']); $mail = trim($_POST['mail']); $subject = "Auftragsanfrage"; $sonst = stripslashes($_POST['sonst']); echo $sonst; // Checkboxen werden ausgelesen if (isset($_POST['halle'])) { $ch1 = $_POST['halle']; if ($ch1 === 'halle') { array_push($lokalitäten_text, "Halle"); } } if (isset($_POST['zelt'])) { $ch2 = $_POST['zelt']; if ($ch2 === 'zelt') { array_push($lokalitäten_text, "Zelt"); } } if (isset($_POST['kneipe'])) { $ch3 = $_POST['kneipe']; if ($ch3 === 'kneipe') { array_push($lokalitäten_text, "Wirtschaft"); } } if (isset($_POST['sonst'])) { $ch4 = $_POST['sonst']; if ($ch4 === 'sonst') { array_push($lokalitäten_text, "Sonstiges"); } } // Umlaute werden ersetzt zwecks Darstellung in der Mail $ersetzen = array( 'ä' => 'ae', 'Ä' => 'Ae', 'ö' => 'oe', 'Ö' => 'Oe', 'ü' => 'ue', 'Ü' => 'Ue', 'ß' => 'ss'); $firma = strtr($firma, $ersetzen ); $name_vorname = strtr($name_vorname, $ersetzen ); $street = strtr($street, $ersetzen ); $plz = strtr($plz, $ersetzen ); $vort = strtr($vort, $ersetzen ); $motto = strtr($motto, $ersetzen ); // Komma getrennter String wird erstellt $lokalitäten_string = join(', ', $lokalitäten_text); // Radiobuttons werden ausgelesen $one_way = $_POST['one-way']; $alter_ab = $_POST['alter_ab']; // E-Mail wird erstellt if(!$error){ // Vor der Mail wird noch das Word-Doc erstellt (siehe Funktion unten) foo_doc($firma, $name_vorname, $street, $plz, $telefon, $mobil, $mail, $vort, $date, $time, $motto, $visitors, $lokalitäten_string, $one_way, $alter_ab, $sonst); sleep(5); // E-Mail Text $text = "Anfrage von $name_vorname Firma: \t \t \t \t $firma Name, Vorname: \t \t $name_vorname Strasse: \t \t \t $street PLZ: \t \t \t \t $plz Telefon: \t \t \t $telefon Mobil: \t \t \t \t $mobil Mail: \t \t \t \t $mail Veranstaltungsort: \t \t $vort Veranstaltungsdatum: \t \t $date Einlass ab: \t \t \t $time Uhr Motto der Veranstaltung: \t $motto Kalkulierte Besucheranzahl: \t $visitors Lokalitäten: \t \t \t $lokalitäten_string One-Way: \t \t \t $one_way Einlass ab: \t \t \t $alter_ab Jahren"; $to = WEBMASTER_EMAIL; $from = $mail; $message = $text; // Mail wird erstellt und verschickt mit eben erstelltem Doc als Anhang $file = 'Anhang.docx'; ini_set('track_errors', 'On'); $mime_boundary = "<<<:" . md5(uniqid(mt_rand(), 1)); $data = chunk_split(base64_encode(file_get_contents($file))); $header = "To: ".$to."\r\n"; $header.= "From: ".$from."\r\n"; $header.= "MIME-Version: 1.0\r\n"; $header.= "Content-Type: multipart/mixed;\r\n"; $header.= " boundary=\"".$mime_boundary."\"\r\n"; $content = "This is a multi-part message in MIME format.\r\n\r\n"; $content.= "--".$mime_boundary."\r\n"; $content.= "Content-Type: text/plain; charset=\"iso-8859-1\"\r\n"; $content.= "Content-Transfer-Encoding: 7bit\r\n\r\n"; $content.= $message."\r\n"; $content.= "--".$mime_boundary."\r\n"; $content.= "Content-Disposition: attachment;\r\n"; $content.= "Content-Type: Application/Octet-Stream; name=\"".$file."\"\r\n"; $content.= "Content-Transfer-Encoding: base64\r\n\r\n"; $content.= $data."\r\n"; $content.= "--boundary--" . $mime_boundary . "\r\n"; if(@mail($to, $subject, $content, $header)) { return TRUE; } echo "Fehler: " . $php_errormsg; return FALSE; } } // Funktion um das Word Dokument zu erstellen function foo_doc($firma, $name_vorname, $street, $plz, $telefon, $mobil, $mail, $vort, $date, $time, $motto, $visitors, $lokalitäten_string, $one_way, $alter_ab, $sonst) { require_once 'PHPWord.php'; // Vordefiniertes Word-Doc wird geladen, dann die Platzhalter ersetzt und anschließend als neues Doc abgespeichert. $PHPWord = new PHPWord(); $document = $PHPWord->loadTemplate("Auftragsanfrage.docx"); // after open you can change values inside doc (but every item to change in the original docs must to be ${ITEM_TO_CHANGE}) with this command: //Kontaktinformationen $document->setValue("Firma","$firma"); $document->setValue("Herrlich","$name_vorname"); $document->setValue("Straße", "$street"); $document->setValue("PLZ", "$plz"); $document->setValue("Telefon", "$telefon"); $document->setValue("Mobil", "$mobil"); $document->setValue("Mail", "$mail"); // Veranstaltungsdaten $document->setValue("VOrt", "$vort"); $document->setValue("VDate", "$date"); $document->setValue("VTime", "$time"); $document->setValue("VMotto", "$motto"); $document->setValue("VBesucher", "$visitors"); //Spezielle Informationen $document->setValue("Lokal", "$lokalitäten_string"); $document->setValue("OneWay", "$one_way"); $document->setValue("EinlassJahren", "$alter_ab"); $document->setValue("Sonstiges", "$sonst"); // to Save new File : $document->save("Anfrage.docx"); } ?>
Kann mir da jmd helfen?
Danke vorab und viele Grüße
Kellrkind
Kommentar