Wichtige Informationen für Hosteurope, Strato, IONOS (1&1) und dogado Kunden!

Eventuell sind die Infos auch für weitere Hosting Provider relevant!





1. IONOS (1&1): Ein E-Mail Versand über das Kontaktformular ist nicht möglich!?

Problem: Es erscheint eine Fehlermeldung, sobald der Nutzer auf den Senden-Button klickt. Der Grund ist, dass die E-Mail Server von IONOS seit dem 29.01.2024 gewisse Anforderungen an die Header-Informationen einer E-Mail (welche über ein PHP Script versandt wird) stellen. Wir können Ihnen zwei Lösungen anbieten, wobei jede Lösung eine kleine Einschränkung hat.


Lösung 1


Vorteil

  • Es muss nur ein einziger Code-Abschnitt geändert werden

Nachteil

  • In der E-Mail Ansicht erscheint als Absender-Name die Serverbezeichnung von IONOS. (beim Klick auf Antworten erscheint jedoch die korrekte E-Mail Adresse des Nutzers!)

Lösung 2


Vorteil

  • Es erscheint in der E-Mail Ansicht als Absender-Name "E-Mail vom Kontaktformular". (also eindeutig formuliert!)

Nachteil(e)

  • Beim Klick auf Antworten muss die E-Mail Adresse des Nutzers erst aus dem E-Mail Inhalt kopiert werden.
  • Es müssen mehrere Codeabschnitte geändert werden. Also ein etwas erhöhter Aufwand.


  Lösung 1

Öffnen Sie die Datei kontakt.php


Suchen Sie nach diesem Codeabschnitt (zu finden unter "// header"):


// header
$header = "From: =?UTF-8?B?".base64_encode(stripslashes($fromName))."?= <".$fromMail.">".$eol;
$header .= "Reply-To: <".$fromMail.">".$eol;
$header .= "MIME-Version: 1.0".$eol;
if(is_array($attachments) && 0<count($attachments)){
$header .= "Content-Type: multipart/mixed; boundary=\"".$boundary."\"";
}
else{
$header .= "Content-type: text/plain; charset=utf-8";
}

Ersetzen Sie den Codeabschnitt hiermit:


// header
$headers = 'From: $empfaenger' .base64_encode(stripslashes($fromName))."?= <".$fromMail.">".$eol; "\r\n" .
$header .= "Reply-To: <".$fromMail.">".$eol;
$header .= "MIME-Version: 1.0".$eol;
$header .= "X-Mailer: PHP/' . phpversion()".$eol;
if(is_array($attachments) && 0<count($attachments)){
$header .= "Content-Type: multipart/mixed; boundary=\"".$boundary."\"";
}
else{
$header .= "Content-type: text/plain; charset=utf-8";
}

Bitte außerdem beachten: Es ist bei IONOS außerdem notwendig, eine Domain-eigene E-Mail Adresse (z.B. info@ihre-domain.com) zu verwenden, da IONOS nur E-Mail Adressen akzeptiert, die von der eigenen Domain stammen.


Bis auf die korrekte Darstellung des Absender-Names in der Webmail-Ansicht, funktioniert nun das Kontaktformular. Statt des Absender-Namens wird gegenwärtig der Servername angezeigt. Sobald Sie allerdings auf die E-Mail klicken, können Sie dem Absender ganz normal antworten.

  Lösung 2

Öffnen Sie die Datei config.php


1. Ändern Sie den Inhalt der Variable $ihrname in "E-Mail vom Kontaktformular":

$ihrname = "E-Mail vom Kontaktformular";  // Ihr Name (zwischen den Anführungszeichen)

2. Fügen Sie unterhalb von $ihrname diese Variable ein und ersetzen Sie "Ihr Unternehmen" mit der gewünschten Bezeichnung.:

$kopie_an_absender = "Ihr Unternehmen";  // Ihr Name, falls Kopie an Kunde

3. Tragen Sie die folgenden SMTP Daten unter $smtp ein. Achten Sie darauf, die SMTP Funktion unter $smtp['enabled'] durch eine 1 zu aktivieren. Fügen Sie bei "user" die E-Mail Adresse ein, die bei IONOS registriert ist. Unter "password" geben Sie das Passwort von Ihrem IONOS E-Mail Account ein:

$smtp = array();

$smtp['enabled'] = 1; // Soll das Kontaktformular E-Mails über einen SMTP Server versenden? Ja = 1, Nein = 0

$smtp['host'] = 'smtp.ionos.de'; // Der Host, unter welchem der SMTP Server erreichbar ist. (bspw. smtp.gmail.com)

$smtp['user'] = 'email@ihre-domain.de'; // Der Benutzername, mit welchem Sie sich bei Ihrem SMTP Server authentifizieren. (kann u.U. die oben genannte E-Mail Adresse sein!)

$smtp['password'] = 'ihr-email-passwort-bei-ionos'; // Das Passwort, mit welchem Sie sich bei Ihrem SMTP Server authentifizieren.

$smtp['encryption'] = 'tls'; // Die Art der Verschlüsselung, die bei der Verbindung mit Ihrem SMTP Server verwendet wird: '', 'ssl' oder 'tls'

$smtp['port'] = 587; // Der TCP Port, unter welchem Ihr SMTP Server erreichbar ist.

$smtp['debug'] = 0; // Das Debuglevel (0 - 4)


Öffnen Sie die Datei kontakt.php


1. Ändern Sie den Codeabschnitt unter "// ---- send mail to admin" hiermit:


Achtung: Der nachfolgende Code weicht bei Ihnen minimal ab, sofern Sie eine Version ohne Betreffzeile nutzen. Entfernen Sie in diesem Fall "$betreff," (mit dem Komma!) in dem nachfolgenden Code.
// ---- send mail to admin
        if($smtp['enabled'] !== 0) {
            require_once __DIR__ . '/smtp.php';
            $success = SMTP::send(
                $smtp['host'],
                $smtp['user'],
                $smtp['password'],
                $smtp['encryption'],
                $smtp['port'],
                $empfaenger,
                $ihrname,
                $empfaenger,
                $betreff,
                $mailcontent,
                (2==$cfg['UPLOAD_ACTIVE'] ? array() : $uploadedFiles),
                $cfg['UPLOAD_FOLDER'],
                $smtp['debug']
            );

2. Ändern Sie den Codeabschnitt unter "// ---- send mail to customer" hiermit:

// ---- send mail to customer
            if($smtp['enabled'] !== 0) {
                SMTP::send(
                    $smtp['host'],
                    $smtp['user'],
                    $smtp['password'],
                    $smtp['encryption'],
                    $smtp['port'],
                    $empfaenger,
                    $kopie_an_absender,
                    $email,
                    "Ihre Anfrage",
                    $mailcontent,
                    array(),
                    $cfg['UPLOAD_FOLDER'],
                    $smtp['debug']
                );

3. Ändern Sie den Codeabschnitt unter "// header" hiermit:

// header
$headers = 'From: $empfaenger' .base64_encode(stripslashes($fromName))."?= <".$fromMail.">".$eol; "\r\n" .
$header .= "Reply-To: <".$fromMail.">".$eol;
$header .= "MIME-Version: 1.0".$eol;
$header .= "X-Mailer: PHP/' . phpversion()".$eol;
if(is_array($attachments) && 0<count($attachments)){
$header .= "Content-Type: multipart/mixed; boundary=\"".$boundary."\"";
}
else{
$header .= "Content-type: text/plain; charset=utf-8";
}

Bitte außerdem beachten: Es ist bei IONOS außerdem notwendig, eine Domain-eigene E-Mail Adresse (z.B. info@ihre-domain.com) zu verwenden, da IONOS nur E-Mail Adressen akzeptiert, die von der eigenen Domain stammen.


Hinweis: Bitte bedenken Sie, dass bei dieser Lösung statt der Absender Adresse des Nutzers, immer Ihre Empfänger Adresse (siehe config.php) als Antwort-Adresse im Mailprogramm angezeigt wird.
Um dem Nutzer zu antworten, können Sie einfach auf die Mailadresse tippen, welche unter "E-Mail" im Mailinhalt erscheint oder die entsprechende E-Mail Adresse in das Empfänger-Feld einfügen.





2. Hosteurope & IONOS (1&1): Domain-eigene E-Mail Adresse verwenden


Bei den Hosting Anbietern Hosteurope und IONOS (1&1) ist es notwendig, eine Domain-eigene E-Mail Adresse (z.B. info@ihre-domain.com) zu verwenden.

Es kann unter Umständen auch notwendig sein, die Domain-eigene E-Mail Adresse im entsprechenden Kundenbereich explizit für PHP Scripte anzulegen. (Insbesondere bei Hosteurope war diese Vorgehensweise vor einigen Jahren üblich.)





3. Hosteurope: Die zugestellte E-Mail des Nutzers kann nicht beantwortet werden, da die Absender-E-Mail Adresse unkenntlich ist?


Problem: Die zugestellte E-Mail kann nicht auf direktem Wege beantwortet werden, da die E-Mail Adresse des Nutzers im Empfänger-Feld eine seltsame Zeichenkette aufweist. Die E-Mail Adresse ist nicht direkt sichtbar.

Dieser "Fehler" kann auftreten, wenn der Webserver eine untypische Konfiguration des E-Mail Headers hat. (betrifft nach aktuellem Kenntnisstand den Hosting Anbieter Hosteurope) Es kann allerdings sein, dass auch weitere Hosting-Anbieter davon betroffen sind.

  Lösung

Öffnen Sie die Datei kontakt.php


Ersetzen Sie den Codeabschnitt unter "// header" hiermit:


// header
$header = "From: =?UTF-8?B?".base64_encode(stripslashes($fromName))."?= <".$fromMail.">".$eol;
$header .= ":";
$header .= "".$eol;
if(is_array($attachments) && 0<count($attachments)){
$header .= "Content-Type: multipart/mixed; boundary=\"".$boundary."\"";
}
else{
$header .= "";
}



4. Hosteurope: Die Option "Kopie der Mail an den Absender" funktioniert nicht?!


Die Option "Kopie an den Absender" (siehe config.php, Zeile 45) kann bei dem Hosting Anbieter Hosteurope leider nicht verwendet werden, da die entsprechende Funktion serverseitig unterbunden wird. Hierfür gibt es leider keine Lösung.





5. Strato & dogado: Nachrichten von Nutzern, die eine Yahoo, iCloud, Hotmail, Gmail, T-Online oder AOL E-Mail Adresse in das Kontaktformular eintragen, werden nicht zugestellt - warum?


Problem: Sofern ein Nutzer eine Nachricht über das Kontaktformular senden möchte und eine Yahoo, iCloud, Hotmail, Gmail, T-Online oder AOL E-Mail Adresse in das Formular-Feld "E-Mail" einträgt, kommt die E-Mail bei der entsprechenden Empfänger Adresse (siehe config.php) nicht an.

Der Grund ist, dass die E-Mail Server von Strato und dogado (potentiell auch weitere Hosting-Anbieter!) die E-Mails abweisen, sofern die Absender-Domäne einen der genannten E-Mail Provider beinhaltet. Die Hosting-Provider berufen sich auf die DMARC Richtlinien. Mehr Informationen erhalten Sie auch auf der FAQ Seite von Strato: https://www.strato.de/faq/webshop/bounce-meldungen-bei-webshops/

  Lösung um sicherzustellen, dass die Nachrichten dennoch gesendet werden:

Suchen Sie in der Datei kontakt.php nach dem folgenden Codeabschnitt (zu finden unter "// ---- send mail to admin"):
// ---- send mail to admin
        if($smtp['enabled'] !== 0) {
            require_once __DIR__ . '/smtp.php';
            $success = SMTP::send(
                $smtp['host'],
                $smtp['user'],
                $smtp['password'],
                $smtp['encryption'],
                $smtp['port'],
                $email,
                $ihrname,
                $empfaenger,
                ####weiterer Code
                ####weiterer Code
                ####weiterer Code
                ####weiterer Code
                ####weiterer Code
                ####weiterer Code


Ersetzen Sie die Variable "$email," mit "$empfaenger," . Es muss also so aussehen:
// ---- send mail to admin
        if($smtp['enabled'] !== 0) {
            require_once __DIR__ . '/smtp.php';
            $success = SMTP::send(
                $smtp['host'],
                $smtp['user'],
                $smtp['password'],
                $smtp['encryption'],
                $smtp['port'],
                $empfaenger,
                $ihrname,
                $empfaenger,
                ####weiterer Code
                ####weiterer Code
                ####weiterer Code
                ####weiterer Code
                ####weiterer Code
                ####weiterer Code


Suchen Sie außerdem in der Datei kontakt.php nach dieser Zeile (ist direkt unterhalb des Codeabschnitts!):


$success = sendMyMail($email,

Ersetzen Sie die Zeile hiermit:


$success = sendMyMail($empfaenger,

Nun wird, statt der Absender Adresse des Nutzers, immer Ihre Empfänger Adresse (siehe config.php) als Antwort-Adresse im Mailprogramm angezeigt. Um dem Absender zu antworten, können Sie einfach auf die Mailadresse tippen, welche unter "E-Mail" im Mailinhalt erscheint.

Bekannte Fehlermeldungen in diesem Zusammenhang:
- failed: yahoo.de: 554 Message not allowed - Headers are not RFC compliant[291]
- Email rejected per DMARC policy for yahoo.de
- Set Reply-To-Header





Beispiel - Responsives Formular Template 1

» Weitere Versionen zu Template 1 finden Sie hier zum Download
» Spamschutz-Optionen: Captcha, Zeitsperre, Bad Word Filter, (durchdachte) IP Sperre, Honeypot, Klick-Check & Linkblocker




Beispiel - Responsives Formular Template 2

» Weitere Versionen zu Template 2 finden Sie hier zum Download
» Spamschutz-Optionen: Captcha, Zeitsperre, Bad Word Filter, (durchdachte) IP Sperre, Honeypot, Klick-Check & Linkblocker




Beispiel - Responsives Formular Template 3

» Weitere Versionen zu Template 3 finden Sie hier zum Download
» Spamschutz-Optionen: Captcha, Zeitsperre, Bad Word Filter, (durchdachte) IP Sperre, Honeypot, Klick-Check & Linkblocker




Beispiel - Responsives Formular Template 4

» Weitere Versionen zu Template 4 finden Sie hier zum Download
» Spamschutz-Optionen: Captcha, Zeitsperre, Bad Word Filter, (durchdachte) IP Sperre, Honeypot, Klick-Check & Linkblocker




Beispiel - Responsives Formular Template 5

» Weitere Versionen zu Template 5 finden Sie hier zum Download
» Spamschutz-Optionen: Captcha, Zeitsperre, Bad Word Filter, (durchdachte) IP Sperre, Honeypot, Klick-Check & Linkblocker




Beispiel - Responsives Formular Template 6

» Weitere Versionen zu Template 6 finden Sie hier zum Download
» Spamschutz-Optionen: Captcha, Zeitsperre, Bad Word Filter, (durchdachte) IP Sperre, Honeypot, Klick-Check & Linkblocker




Beispiel - Responsives Formular Template 7

» Weitere Versionen zu Template 7 finden Sie hier zum Download
» Spamschutz-Optionen: Captcha, Zeitsperre, Bad Word Filter, (durchdachte) IP Sperre, Honeypot, Klick-Check & Linkblocker




Beispiel - Responsives Formular Template 8

» Weitere Versionen zu Template 8 finden Sie hier zum Download
» Spamschutz-Optionen: Captcha, Zeitsperre, Bad Word Filter, (durchdachte) IP Sperre, Honeypot, Klick-Check & Linkblocker




Beispiel - Responsives Formular Template 9

» Weitere Versionen zu Template 9 finden Sie hier zum Download
» Spamschutz-Optionen: Captcha, Zeitsperre, Bad Word Filter, (durchdachte) IP Sperre, Honeypot, Klick-Check & Linkblocker



» Weitere Templates finden Sie unter Download