Kategorien
Programmieren

PHP Mail via SMTP-Auth

Aufgrund zahlreicher Spam EMails ist es heute leider bei vielen Providern nicht mehr sinnvoll möglich EMails aus PHP-Scripten via mail() abzusetzen.
Die EMails werden, im Gegensatz zum Versand via SMTP-Auth im EMail-Programm sehr häufig als Spam zurückgewiesen.

Es ist garnicht so schwierig eine EMail via fsockopen und fgets zu versenden.

Hier das kleines PHP-Script ohne jede Schöpfungshöhe:

<?php
$MTo       = "empfaenger@example.net";
$MToName   = "Empfaengername";
$MFrom     = "absender@example.net";
$MFromName = "Absendername";
$MSubject  = "Die Betreffzeile der EMail!";
$MMessage  = "World, Hello!";
SendSMTPMail( $MFrom, $MFromName, $MTo, $MToName, $MSubject, $MMessage );
?>


<?php
function SendSMTPMail( $MFrom, $MFromName, $MTo, $MToName, $MSubject, $MMessage )
  {
    $smtpServer   = "smtp.strato.de";
    $smtpPort     = "25";
    $timeout      = "30";
    $username     = "EMail-Adresse als Benutzername";
    $password     = "Passwort für den SMTP Server";
    $localhost    = "h12345.stratoserver.net";
    $newLine      = "\r\n";
    $smtpConnect  = fsockopen( $smtpServer, $smtpPort, $errno, $errstr, $timeout );
    $smtpResponse = fgets( $smtpConnect, 515 );
    if ( empty( $smtpConnect ) )
      {
        $output = "Failed to connect: $smtpResponse";
        return $output;
      }
    fputs( $smtpConnect, "AUTH LOGIN" . $newLine );
    $smtpResponse = fgets( $smtpConnect, 515 );
    fputs( $smtpConnect, base64_encode( $username ) . $newLine );
    $smtpResponse = fgets( $smtpConnect, 515 );
    fputs( $smtpConnect, base64_encode( $password ) . $newLine );
    $smtpResponse = fgets( $smtpConnect, 515 );
    fputs( $smtpConnect, "HELO $localhost" . $newLine );
    $smtpResponse = fgets( $smtpConnect, 515 );
    fputs( $smtpConnect, "MAIL FROM: $MFrom" . $newLine );
    $smtpResponse = fgets( $smtpConnect, 515 );
    fputs( $smtpConnect, "RCPT TO: $MTo" . $newLine );
    $smtpResponse = fgets( $smtpConnect, 515 );
    fputs( $smtpConnect, "DATA" . $newLine );
    $smtpResponse = fgets( $smtpConnect, 515 );
    $headers      = "MIME-Version: 1.0" . $newLine;
    $headers .= "Content-type: text/html; charset=iso-8859-1" . $newLine;
    $headers .= "To: $MToName <$MTo>" . $newLine;
    $headers .= "From: $MFromName <$MFrom>" . $newLine;
    fputs( $smtpConnect, "To: $MTo\nFrom: $MFrom\nSubject: $MSubject\n$headers\n\n$MMessage\n.\n" );
    $smtpResponse = fgets( $smtpConnect, 515 );
    fputs( $smtpConnect, "QUIT" . $newLine );
    $smtpResponse = fgets( $smtpConnect, 515 );
  }
?>

Von der_metzger

Hi, ich bin Jan Kuehnel - Fachinformatiker für Systemintegration ,Linux-Benutzer und Blogger. Seit 2019 arbeite ich als Systemadministrator bei einem beliebten deutschen Fahrradverleih und zuvor über 10 Jahren bei einem großen deutschen Provider. Ich folge seit meiner Kindheit dem Hobby, technische Rätsel zu lösen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.