RSS PHP mail() Funktion veraltet?

verfasst 17.06.2009 von Mario | kurze URL: /t693 | Kommentar schreiben

Immer wieder lese ich in Foren von Problemen mit dem versenden von E-Mails und der benutzen PHP-Funktion mail(). Mit 0-8-15 Programmierung wird hier alles mögliche versucht, um eine Mail zu versenden. Mal abgesehen davon, dass fast bei 70% der Scripte kein Wert auf Sicherheit gelegt wird, sind viele Varianten einfach nicht mehr Zeitgemäß. Man klammert sich an alte Tutorials die mal mal vor Jahren irgendwo geschrieben wurden, und wundert sich dann warum das heute nicht mehr richtig funktioniert. Dabei spielt der sogenannte E-Mail-Header eine wichtige Rolle.

Schon eine einfache Text-Mail kann Probleme bei einigen Web-Diensten verursachen. Z. B. Dienste wie GMX, Freenet oder web.de analysieren den Header einer E-Mail. Ist dieser Header nicht korrekt, wird die Mail sofort als Spam abgestempelt. Und in heutiger Zeit ist das auch gut so.

Bestimmte Pflichtfelder wie Date, Subject, From, To etc.. sollten auf alle Fälle gesetzt werden. Einige Dienste verweigern die Annahme wenn die Message-ID nicht korrekt ist. E-Mail-Programme können Probleme bereiten wenn z.B. Content-Type nicht richtig oder gar nicht gesetzt ist. Bei Benutzung von Sonderzeichen in der E-Mail sollte die E-Mail auch als UTF-8 versendet werden.

Man sollte das Thema beim programmieren nicht ganz so locker nehmen. Ein E-Mail-Anhang muss natürlich mit base64_encode() kodierrt werden. Entsprechend ist die E-Mail als Multipart zu erstellen. Wie nun eine korrekter Mail-Header aussieht kann jeder selber in seinen E-Mail-Programm nachsehen. Einfach dazu eine sichere E-Mail raussuchen, und den Quelltext ansehen.

Man kann sich allerdings viel Zeit und Arbeit sparen, wenn man schon fertige PHP-Klassen benutzt, die bereits die oben genannten Dinge berücksichtigen. Sehr bekannt ist hier der PHP-Mailer, der alle möglichen Varianten einer Mail versenden kann.

» PHP
<?php
require('phpmailer/class.phpmailer.php');

$mail             = new PHPMailer();
$mail->From       'meine_email@domain.de';
$mail->FromName   'Name vom Absender';
$mail->Subject    'Betreff';
$mail->Body       "Mailtext mitn Zeilenumbruch";
$mail->AddAddress('Adresse Empfänger');
$mail->Send();

// Sonstiges

// bei HTML Mails
$mail->AltBody    "alternativ Text der Mail";

// Zeichensatz
$mail->CharSet 'utf-8';

// Datei vom Server als Anhang anhängen
$mail->AddAttachment('./datei.zip','anhang.zip');
  
// Text aus einer Variable als Anhang hinzufügen
$mail->AddStringAttachment($email_text,'anhang.html');
?>


Das komplette Projekt inkl. Download und Doku:
sourceforge.net/projects/phpmailer

neuen Kommentar schreiben

Ich möchte automatisch eine E-Mail bei neuen Kommentaren erhalten.



Themen mit ähnlichen Inhalten

    - keine weiteren Themen gefunden -

Tags zum Beitrag

mail-header     php-mailer