Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

PHP mail() Datei versenden

Frage Entwicklung PHP

Mitglied: simon-ni

simon-ni (Level 1) - Jetzt verbinden

10.09.2014, aktualisiert 14.10.2014, 2570 Aufrufe, 3 Kommentare

Hallo Leute,

ich habe ein kleines PHP Script zum versenden eines Formulars geschrieben/zusammenkopiert (bin leider PHP Anfänger). Das hat bis jetzt sehr gut funktioniert, allerdings muss ich eine Funktion zum Anhängen von Dateien einbauen, er bringt zwar keinen Fehler, allerdings kommt die Mail nicht an. Wird auf einem 1und1 Server gehostet, liegt also vermutlich nicht an einer Einstellung auf dem Server sondern an meinem Code.

Dateigrößen und Dateiformat überprüfung werd ich noch einbauen.

01.
  
02.
<?php 
03.
if (isset($_POST["submit"])) 
04.
{  
05.
 
06.
    $an =  "****@gmail.com";  
07.
    $name = $_POST['name']; 
08.
    $firma = $_POST['company']; 
09.
    $strasse = $_POST['street']; 
10.
    $stadt = $_POST['city']; 
11.
    $telefon = $_POST['phone']; 
12.
    $email = $_POST['email']; 
13.
    $message = $_POST['message']; 
14.
 
15.
    if (!empty($name) && !empty($message)) { 
16.
 
17.
 
18.
        $mail_header = 'From:' . $name . "\n"
19.
        $mail_header .= 'Content-type: multipart/mixed; charset=UTF-8' . "\r\n"
20.
        $mail_header .= "Content-Transfer-Encoding: 7bit\n\n"
21.
 
22.
        if (empty($company)) {$company = "leer"; }; 
23.
        if (empty($street)) {$street = "leer"; }; 
24.
        if (empty($city)) {$city = "leer"; }; 
25.
        if (empty($phone)) {$phone = "leer"; }; 
26.
        if (empty($email)) {$email = "leer"; }; 
27.
 
28.
        $message = " 
29.
        Name:            $name\n 
30.
        Firma:           $company\n 
31.
        Straße:          $street\n 
32.
        Stadt:           $city\n 
33.
        Telefon:         $phone\n 
34.
        E-Mail:          $email\n 
35.
        Nachricht:       $message\n 
36.
        "; 
37.
 
38.
        if($_FILES["attachment"]["name"] != "")   {   
39.
            $strFilesName = $_FILES["attachment"]["name"];   
40.
            $strContent = chunk_split(base64_encode(file_get_contents($_FILES["attachment"]["tmp_name"])));    
41.
            $mail_header .= "Content-Type: application/octet-stream; name=\"".$strFilesName."\"\n";   
42.
            $mail_header .= "Content-Transfer-Encoding: base64\n";   
43.
            $mail_header .= "Content-Disposition: attachment; filename=\"".$strFilesName."\"\n\n";   
44.
            $mail_header .= $strContent."\n\n";   
45.
         }        
46.
 
47.
        // Verschicken der Mail  
48.
        $flgSend = @mail($an, $message,$mail_header ); 
49.
         
50.
        if($flgSend)   
51.
            {   
52.
            echo "Mail send completed.";   
53.
            }   
54.
            else   
55.
            {   
56.
            echo "Cannot send mail.";   
57.
            }   
58.
 
59.
        } else {  
60.
            echo "<div class=\"red\">Bitte füllen Sie das Formular vollständig aus.</div>"
61.
    }; 
62.
}; 
63.
?>
Hier der HTML Code in der gleichen Datei, hier wird aber alles richtig übergeben, wenn ich die Variablen ausgebe zeigt er auch alles an was enthalten sein sollte, auch die Datei.


01.
  
02.
<form id="contact_form" action="" method="post" enctype="multipart/form-data" name="contact_form" class="col-xs-10 col-xs-offset-1 col-sm-8 col-sm-offset-2 col-md-6 col-md-offset-3"> 
03.
                <div class="form-group"> 
04.
                    <input id="name" class="form-control" type="text" name="name" value="" placeholder="Name"/> 
05.
                </div> 
06.
                <div class="form-group"> 
07.
                    <input id="company" class="form-control" type="text" name="company" value="" placeholder="Firma (Optional)" /> 
08.
                </div> 
09.
                <div class="form-group"> 
10.
                    <input id="street" class="form-control" type="text" name="street" value="" placeholder="Straße + Nr. (Optional)" /> 
11.
                </div> 
12.
                <div class="form-group"> 
13.
                    <input id="city" class="form-control" type="text" name="city" value="" placeholder="PLZ + Ort (Optional)"   /> 
14.
                </div> 
15.
                <div class="form-group"> 
16.
                    <input id="phone" class="form-control" type="text" name="phone" value="" placeholder="Telefon (Optional)" /> 
17.
                </div> 
18.
                <div class="form-group"> 
19.
                    <input id="email" class="form-control" type="text" name="email" value="" placeholder="E-Mail (Optional)" /> 
20.
                </div> 
21.
                <div class="form-group"> 
22.
                    <textarea id="message" class="form-control" type="text" name="message" rows="12" cols="20" placeholder="Nachricht"/></textarea> 
23.
                </div> 
24.
                <div class="form-group"> 
25.
                    <input id="attachment" type="file" name="attachment" placeholder="Datei (max. 10 MB)" size="45" /> 
26.
                </div> 
27.
                <div class="form-group"> 
28.
                    <input id="submit" class="btn btn-primary" type="submit" name="submit" value="VERSENDEN" /> 
29.
                </div> 
30.
                <div class="clear"></div> 
31.
            </form> 
32.
 

Ich hoffe das ist nicht zu viel Aufwand.

Viele Grüße aus dem Allgäu
Nico
Mitglied: simon-ni
10.09.2014 um 14:07 Uhr
Wenn ich keine Datei Anhänge versendet er es, allerdings ist der Inhalt im Betreff. Ich vermute das hier

01.
$flgSend = @mail($an, $message,$mail_header ); 
etwas nicht passt. Hab auf php.net geschaut, komme trotzdem nicht weiter...
Bitte warten ..
Mitglied: Arano
LÖSUNG 10.09.2014, aktualisiert 14.10.2014
Hallo Simon...
...dann musst du noch einmal ins Manual schauen: http://de2.php.net/manual/en/function.mail.php
Denn dort steht doch das der zweite Parameter der Betreff sein soll, du allerdings übergibst ihr an dieser Stelle die Message !

Darüber hinaus wird der E-Mail-Inhalt nicht als Kopfversendet, schick dir doch einfach mal selber eine Mail mit einem Dateianhang und sie dir dann den Quelltext an
Und zusätzlich nach den Stichworten: "multipart" und "boundary" suchen.

Viel Erfolg,
schönen Gruß von der Arbeit
~Arano
Bitte warten ..
Mitglied: simon-ni
14.10.2014 um 11:18 Uhr
Hallo,

habs leider nicht hinbekommen. Da der Dateianhang nicht zwingend notwendig ist hab ichs weggelassen. So funktioniert es einwandfrei.

Trotzdem vielen Dank.
Bitte warten ..
Ähnliche Inhalte
PHP
gelöst PHP erzeugte Datei gleich als Email versenden (4)

Frage von facebraker zum Thema PHP ...

Groupware
Newsletter Mails vom Webserver oder Mailserver versenden? (10)

Frage von Lakatusch zum Thema Groupware ...

PHP
gelöst Externe XML-Datei in PHP auslesen (18)

Frage von Akrosh zum Thema PHP ...

C und C++
C-sharp soll Datei von PHP speichern (3)

Frage von Yanmai zum Thema C und C ...

Neue Wissensbeiträge
Windows Server

Umstellung SHA 1 auf SHA 2 - Migration der CA von CSP auf KSP

Tipp von Badger zum Thema Windows Server ...

Windows 10

Quato DTP94 unter Windows 10 x64 installieren und verwenden

Anleitung von anteNope zum Thema Windows 10 ...

Windows 10

Win10 1703 und Nutzerkennwörter bei Ersteinrichtung - erstaunliche Erkenntnis

(15)

Erfahrungsbericht von DerWoWusste zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Windows 10
Windows 10 im Unternehmen? (26)

Frage von zorlayan zum Thema Windows 10 ...

LAN, WAN, Wireless
Ping u. DNS geht am Rechner nicht mehr (19)

Frage von Kuemmel zum Thema LAN, WAN, Wireless ...

Festplatten, SSD, Raid
Raid 1 2 SSD mit Windows Server 2016 (17)

Frage von jaywee zum Thema Festplatten, SSD, Raid ...

Voice over IP
Über Fritzfax over IP gehen nur einige Faxe (12)

Frage von shearer9 zum Thema Voice over IP ...