• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

[GELOEST] PHPMailer - SMTP Error/Sender not found

XirLion

Mitglied
Guten Abend,

mein PHPMailer hat bisher immer funktioniert, heute habe ich eine MailAdresse beim Serverprovider der Domain eingerichtet und wollte darüber die Mails empfangen. Alles wie zuvor auch belassen, nur Folgendes gewechselt, d.H.: smtp Host, Benutzername und Passwort sowie die Mail-Adresse, nun erhalte ich jedoch folgende Fehlermeldung:

AvailableMail wurde nicht abgesendetFehlermeldung: SMTP Error: The following recipients failed: [email protected]: : Recipient address rejected: Sender not found / Absender-Adresse unbekannt (gmail.com).

Klingt danach als, wenn der Provider wo die neue Mailadresse liegt, jegliche anderen Anbieter ablehnt. Kann mir einer von euch vielleicht sagen, was ich ändern muss? Vielen Dank!
 
Werbung:
Klingt danach als, wenn der Provider wo die neue Mailadresse liegt, jegliche anderen Anbieter ablehnt.
Nein, danach klingt es nicht. Zeige mal den entsprechenden PHP-Code, ich vermute, du musst beim phpMailer etwas anderes einstellen. Gerade bei gmail muss man anders vorgehen, ich weiß jetzt nicht mehr aus dem Kopf, worauf man genau achten muss, aber google sollte helfen.
 
Werbung:
Nein, danach klingt es nicht. Zeige mal den entsprechenden PHP-Code, ich vermute, du musst beim phpMailer etwas anderes einstellen. Gerade bei gmail muss man anders vorgehen, ich weiß jetzt nicht mehr aus dem Kopf, worauf man genau achten muss, aber google sollte helfen.

Wenn ich "Gmail" als Host und Empfänger Mail benutze, funktioniert der PhPMailer als einziges!

Sofern ich aber versuche den Domainserveranbieter oder z.B. Yahoo als smtp Host und Empfänger Mail zu nutzen, bekomme ich immer dieselbe Fehlermeldung, dass die Sender Mail ungültig ist.

Hier der PhPMailer Code:
PHP:
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require 'PHPMailer/src/Exception.php';
require 'PHPMailer/src/PHPMailer.php';
require 'PHPMailer/src/SMTP.php';

if (isset($_POST['submit']))
{
    $name = htmlspecialchars($_POST["name"], ENT_QUOTES, "UTF-8");
    $strasse       = htmlspecialchars($_POST["strasse"], ENT_QUOTES, "UTF-8");
    $plz      = htmlspecialchars($_POST["plz"], ENT_QUOTES, "UTF-8");
    $ort        = htmlspecialchars($_POST["ort"], ENT_QUOTES, "UTF-8");
    $telefon = htmlspecialchars($_POST["telefon"], ENT_QUOTES, "UTF-8");
    $email = htmlspecialchars($_POST["email"], ENT_QUOTES, "UTF-8");
    $date1 = date_create($_POST["date1"]);
    $date2 = date_create($_POST["date2"]);
    $date1 = date_format($date1, 'd/m/Y');
    $date2 = date_format($date2, 'd/m/Y');
    $Erw = htmlspecialchars($_POST["Erw"], ENT_QUOTES, "UTF-8");
    $Kinder = htmlspecialchars($_POST["Kinder"], ENT_QUOTES, "UTF-8");
    $datenschutz = htmlspecialchars($_POST["datenschutz"], ENT_QUOTES, "UTF-8");
    $nachricht = htmlspecialchars($_POST["nachricht"], ENT_QUOTES, "UTF-8");
    
    $html = include("mailbody.php");

$mail = new  PHPMailer(true) ;
$mail -> CharSet = "UTF-8";

//$mail-> SMTPDebug = 3; // Ausführliche Debug-Ausgabe aktivieren

$mail -> isSMTP ();                                                // Mailer auf SMTP setzen 
$mail -> Host = 'smtps.udag.de';                         // Haupt- und Sicherungs-SMTP-Server 
$mail -> SMTPAuth = true ;                                 // SMTP-Authentifizierung aktivieren 
$mail -> Username = '[email protected]' ;    // SMTP-Benutzername 
$mail -> Password = 'XXXXXXXXXXXX' ;             // SMTP-Passwort 
$mail -> SMTPSecure = 'tls' ;                              // TLS-Verschlüsselung aktivieren, `ssl` akzeptiert auch 
$mail -> From = '[email protected]';
$mail -> FromName = 'YOLO';
$mail -> Port = 587 ;                                    // TCP-Port, zu dem eine Verbindung hergestellt werden soll
$mail -> setFrom ( $email , $name , 'Ferienhaus' );
$mail -> addAddress ( "[email protected]" );                  // Empfänger 
$mail -> addReplyTo ( $email );

$mail -> isHTML ( true );                                  // E-Mail-Format auf HTML setzen

$mail -> Subject = 'Buchungsanfrage - Ferienhaus' ;
$mail -> Body     = "
<b>Anfrage über das Kontaktformular:</b><br>
-------------------------------------------------------------------------<br><br>
<b>Name:</b> {$_POST['name']}<br>
<b>Straße:</b> {$_POST['strasse']}<br>
<b>PLZ/Ort:</b> {$_POST['plz']} {$_POST['ort']}<br>
<b>Telefon:</b> {$_POST['telefon']}<br>
<b>E-Mail:</b> {$_POST['email']}<br>
<b>Reisezeitraum:</b> {$date1} - {$date2}<br>
<b>Erw:</b> {$_POST['Erw']} und <b>Kinder:</b> {$_POST['Kinder']}<br>
<b>Nachricht:</b><br>
{$_POST['nachricht']}<br><br>
<b>Datenschutz:</b> {$_POST['datenschutz']}.<br><br>
-------------------------------------------------------------------------
";
$mail -> AltBody = 'Dies ist der Text im Klartext für Nicht-HTML-Mail-Clients' ;

$mail->SMTPOptions = array(
    'ssl' => array(
        'verify_peer' => false
        ,'verify_peer_name' => false
        ,'allow_self_signed' => true
    ),
    'tls' => array(
      'verify_peer' => false
      ,'verify_peer_name' => false
      ,'allow_self_signed' => true
    )
  );

    if(!$mail->send()) { 
        echo !extension_loaded('openssl')?"Not Available":"Available";
        echo 'Mail wurde nicht abgesendet'; 
        echo 'Fehlermeldung: ' . $mail->ErrorInfo; 
    } else { 
        //echo 'Nachricht wurde abgesendet.'; 
        header("Location: ../danke.html");
        //echo
        //"<script>
        //alert('Vielen Dank - Ihre Nachricht wurde erfolgreich abgeschickt!');
        //document.location.href = 'index.html';
        //</script>
        //";
    }
}
?>
 
Setze mal den Debug-Level hoch:

$mail->SMTPDebug = 2;

Damit sollte man mehr erfahren.

Denn erhalte ich folgenden Fehler (Mail und Domain wurden nachträglich verändert):

2023-04-02 10:01:42 SERVER -> CLIENT: 220 smtps.udag.de ESMTP ready
2023-04-02 10:01:42 CLIENT -> SERVER: EHLO test.testdomain.de
2023-04-02 10:01:42 SERVER -> CLIENT: 250-smtps.udag.de250-SIZE 51200000250-ETRN250-ENHANCEDSTATUSCODES250-8BITMIME250-AUTH PLAIN LOGIN250 STARTTLS
2023-04-02 10:01:42 CLIENT -> SERVER: STARTTLS
2023-04-02 10:01:42 SERVER -> CLIENT: 220 2.0.0 Start TLS
2023-04-02 10:01:42 CLIENT -> SERVER: EHLO test.testdomain.de
2023-04-02 10:01:43 SERVER -> CLIENT: 250-smtps.udag.de250-SIZE 51200000250-ETRN250-ENHANCEDSTATUSCODES250-8BITMIME250 AUTH PLAIN LOGIN
2023-04-02 10:01:43 CLIENT -> SERVER: AUTH LOGIN
2023-04-02 10:01:43 SERVER -> CLIENT: 334 VXNlcm5hbWU6
2023-04-02 10:01:43 CLIENT -> SERVER: [credentials hidden]
2023-04-02 10:01:43 SERVER -> CLIENT: 334 UGFzc3dvcmQ6
2023-04-02 10:01:43 CLIENT -> SERVER: [credentials hidden]
2023-04-02 10:01:43 SERVER -> CLIENT: 235 2.0.0 OK
2023-04-02 10:01:43 CLIENT -> SERVER: MAIL FROM:<[email protected]>
2023-04-02 10:01:43 SERVER -> CLIENT: 250 2.1.0 Ok
2023-04-02 10:01:43 CLIENT -> SERVER: RCPT TO:<[email protected]>
2023-04-02 10:01:43 SERVER -> CLIENT: 550 5.7.1 <[email protected]>: Recipient address rejected: Sender not found / Absender-Adresse unbekannt (yahoo.de).
2023-04-02 10:01:43 SMTP ERROR: RCPT TO command failed: 550 5.7.1 <[email protected]>: Recipient address rejected: Sender not found / Absender-Adresse unbekannt (yahoo.de).
2023-04-02 10:01:43 CLIENT -> SERVER: QUIT
2023-04-02 10:01:43 SERVER -> CLIENT: 221 2.0.0 Bye
SMTP Error: The following recipients failed: [email protected]: <[email protected]>: Recipient address rejected: Sender not found / Absender-Adresse unbekannt (yahoo.de).
 
Werbung:
Wenn das Protokoll eine unbekannte Adresse anmeckert, dann, sorry, glaube ich dem Protokoll mehr als dir.
Und was ich nicht verstehe, im Eingangspost ist von gmail die Rede, jetzt von yahoo. Auch für yahoo braucht man, soweit ich mich erinnern kann, spezielle Einstellungen, siehe https://www.google.com/search?q=phpmailer+yahoo
 
Werbung:
Wenn das Protokoll eine unbekannte Adresse anmeckert, dann, sorry, glaube ich dem Protokoll mehr als dir.
Und was ich nicht verstehe, im Eingangspost ist von gmail die Rede, jetzt von yahoo. Auch für yahoo braucht man, soweit ich mich erinnern kann, spezielle Einstellungen, siehe https://www.google.com/search?q=phpmailer+yahoo
Ich habe meine Privaten Yahoo und Gmail Mail-Adressen beim Ausfüllen des Formulars genutzt und das Formular abgeschickt. Ich empfange und versende damit normal Mails, wieso sollten diese nicht existieren?

Die Fehlermeldung besagt, dass der Fehler bei den Mail-Adressen liegt, welche der Kunde im Formular als seine Absenderadresse eingibt. Diese werden von der Empfänger "Serverdomain Mail-Adresse" im Beispiel "[email protected]" nicht erkannt und existieren lt. dieser nicht, was keinen Sinn ergibt.

Im Eingangspost ist von Gmail die rede, weil ich es dort mit meiner Gmail Absender Adresse versucht habe das Formular abzuschicken, ich muss ja mehrere Absender Mailadressen testen um zu schauen, wo der Fehler liegt. Egal ob ich Yahoo oder Gmail als Kunde/Absender benutzte, es kommt immer dieselbe Fehlermeldung, wenn ich die Serverdomain Mail-Adresse als Empfänger und smtp Host im Formular hinterlegte.

Dasselbe passiert, auch wenn ich die Einstellungen auf meine Yahoo Adresse als smtp Host als Empfänger umstelle.

Nur wenn ich das Formular so wie es ist auf Gmail smtp Host und Empfängermail Adresse umstelle funktioniert es und ich erhalte egal ob von Yahoo oder anderen Anbietern abgeschickte Formulareingaben ohne Fehlermeldung.
 
So ganz kann ich Dir nicht folgen aber du solltest als Absender-Adresse eine E-Mail verwenden, die dieselbe Domain nutzt wie den SMTP-Host den du nutzt. Ansonsten riskierst du, dass entweder Dein SMTP-Host oder evtl. auch der Mailserver des Empfängers das blockt.
 
Ahhh, jetzt habe ich es verstanden und erkenne das Problem:
PHP:
// Diese beiden Zeilen sind ok
$mail -> From = '[email protected]';
$mail -> FromName = 'YOLO';

// Hier trägst du als Absender die Mail-Adresse aus dem Formular ein
// Damit überschreibst du den Absender und der SMTP-Server lehnt ab
$mail -> setFrom ( $email , $name , 'Ferienhaus' );
 
Werbung:
So ganz kann ich Dir nicht folgen aber du solltest als Absender-Adresse eine E-Mail verwenden, die dieselbe Domain nutzt wie den SMTP-Host den du nutzt. Ansonsten riskierst du, dass entweder Dein SMTP-Host oder evtl. auch der Mailserver des Empfängers das blockt.

Die Mailadresse, bei dem das Formular ankommen soll, gehört zum smtp Host vom Domainanbieter.
Diese ist auch als Absenderadresse des Formulars hinterlegt.

Die Mailadressen, welche die Kunden als Ihre E-Mailadresse im Formular eingeben, um diesen entsprechend per replay antworten zu können, kann ich ja nicht beeinflussen. Hier müssten ja verschiedenste Anbieter zugelassen werden.

Dies habe ich aus Sicht eines Kunden probiert, mit meiner privaten Yahoo.de oder Gmail.com Mailadressen, diese werden jedoch immer vom smtp Host und der Empfängermail Adresse abgelehnt lt. Protokoll.
 
Ahhh, jetzt habe ich es verstanden und erkenne das Problem:
PHP:
// Diese beiden Zeilen sind ok
$mail -> From = '[email protected]';
$mail -> FromName = 'YOLO';

// Hier trägst du als Absender die Mail-Adresse aus dem Formular ein
// Damit überschreibst du den Absender und der SMTP-Server lehnt ab
$mail -> setFrom ( $email , $name , 'Ferienhaus' );

Ja diese Funktion ist dafür da das ich beim Empfangen der Mail nur auf "Antworten" klicken kann ohne noch manuell die Mailadresse vom Kunden erst einfügen muss, bevor ich Antworte.

Ansonsten kommt die Mail vom Kunden ja immer von der eigenen und ich würde mir selbst antworten, wenn ich die Mails nicht ersetze.

Über Gmail als Host hat diese Funktion auch bisher immer funktioniert.
 
Werbung:
Ja diese Funktion ist dafür da das ich beim Empfangen der Mail nur auf "Antworten" klicken kann ohne noch manuell die Mailadresse vom Kunden erst einfügen muss, bevor ich Antworte.
Falsch!!!
Aus dem Quellcode von phpMailer.php zu setFrom:
Set the From and FromName properties.
Und weiter aus dem Quellcode:
PHP:
/**
     * The From email address for the message.
     *
     * @var string
     */
    public $From = '';

    /**
     * The From name of the message.
     *
     * @var string
     */
    public $FromName = '';
Was du meinst ist
PHP:
/**
     * Add a "Reply-To" address.
     *
     * @param string $address The email address to reply to
     * @param string $name
     *
     * @throws Exception
     *
     * @return bool true on success, false if address already used or invalid in some way
     */
    public function addReplyTo($address, $name = '')
Das müsste auch so in der Doku stehen.
 
Werbung:
Bitte, bitte, bitte, beachte doch mal die Doku!
Wieder aus der phpMailer.php
PHP:
/**
     * Set the From and FromName properties.
     *
     * @param string $address
     * @param string $name
     * @param bool   $auto    Whether to also set the Sender address, defaults to true
     *
     * @throws Exception
     *
     * @return bool
     */
    public function setFrom($address, $name = '', $auto = true)
Den dritten Parameter solltest du mal genauer beachten.
 
Bitte, bitte, bitte, beachte doch mal die Doku!
Wieder aus der phpMailer.php
PHP:
/**
     * Set the From and FromName properties.
     *
     * @param string $address
     * @param string $name
     * @param bool   $auto    Whether to also set the Sender address, defaults to true
     *
     * @throws Exception
     *
     * @return bool
     */
    public function setFrom($address, $name = '', $auto = true)
Den dritten Parameter solltest du mal genauer beachten.
Ok, hierbei geht es womöglich um Spammails/Absenderadressen? Hab schon versucht danach zu googeln und in die Doku geschaut. Kann damit nur nichts anfangen/verstehe nicht was zu tun ist. :)

Wenn du es mir einmal erklären könntest, was ich noch und wo einsetzen muss, wäre das ganz lieb.
 
Zurück
Oben