Probleme mit PHP mail() Funktion

Hallo, ich habe eine Frage:

Ich habe versucht an meine Googlemailadresse eine Email mit PHP-mail() zu senden, es kam nichts bei mir an.

Wenn ich hingegen eine Email an eine Trashmailadresse gesendet habe, hat es funktioniert.
Hat Google den SMTP-Server von Bplaced gesperrt?
(ich habe bplaced-pro)

<?php
$to = "email@googlemail.com";
		$subject = "Passwort zurücksetzen";

		$htmlContent = '
		    <html>
		    <head>
			<meta charset="utf-8" />
    			<meta name="viewport" content="width=device-width, initial-scale=1.0" />
			<title>Passwort zurück setzen</title>
		    </head>
		    <body>
			<h1>Passwort zurücksetzen</h1>
			<p>Um Ihr Passwort zurückzusetzen klicken sie auf <a href="">diesen Link</a>!</p>
		    </body>
		    </html>';

		
		$header[] = 'MIME-Version: 1.0';
		$header[] = 'Content-type: text/html; charset=UTF-8';
		$header[] = 'To: User <'.$to.'>';
		$header[] = 'From: Test<noreply@test.bplaced.net>';
		
		if(mail($to,$subject,$htmlContent,implode("\r\n", $header)))
		{
		    echo "Success";
		}

		else
		{
		    echo "Failed";
		}
?>

Hallo Jonny,

ich gehe mal davon aus dein PHP Script ist in Ordnung und es eher darum geht, dass Goockle Deine Nachrichten als Spam identifiziert. Ich würde mehr Kopfinfos (Mail Header) zur Verfügung stellen damit dies nicht so oft passiert.

Kopiere dir die benötigten Zeilen heraus.

<?php
// ePost versenden
function SendeEPost($E)
{
    if (!isset($E['EmpfängerAdresse'], $E['AbsenderAdresse'], $E['Betreff'], $E['Nachricht']))
    { throw new HelperException('Funktion: SendeEPost(); Erforderliche Parameter fehlen!'); }

    $Empfänger=empty($E['EmpfängerName']) ? $E['EmpfängerAdresse'] : '"' . mb_encode_mimeheader($E['EmpfängerName']) . '" <' . $E['EmpfängerAdresse'] . '>';
    $Absender=empty($E['AbsenderName']) ? $E['AbsenderAdresse'] : '"' . mb_encode_mimeheader($E['AbsenderName']) . '" <' . $E['AbsenderAdresse'] . '>';
    $Kopf=array(
        'MIME-Version: 1.0',
        'Content-Type: text/html; charset="UTF-8";',
        'Content-Transfer-Encoding: base64',
        'Date: ' . date('r', $_SERVER['REQUEST_TIME']),
        'Message-ID: <' . $_SERVER['REQUEST_TIME'] . md5($_SERVER['REQUEST_TIME']) . '@' . $_SERVER['SERVER_NAME'] . '>',
        'From: ' . $Absender,
        'Reply-To: ' . $Absender,
        'Return-Path: ' . $Absender,
        'X-Mailer: PHP v' . phpversion(),
        'X-Originating-IP: ' . $_SERVER['SERVER_ADDR'],
        'X-Sender-IP: ' . $_SERVER['REMOTE_ADDR']
        );
    return @mail($Empfänger, '=?UTF-8?B?' . base64_encode($E['Betreff']) . '?=', base64_encode($E['Nachricht']), implode(PHP_EOL, $Kopf));
}

if (count($Fehler)===0)
{
$ePostNachricht=array();
$ePostNachricht['AbsenderAdresse']='Draco@' . $_SERVER['HTTP_HOST'];
$ePostNachricht['AbsenderName']='Draco';
$ePostNachricht['EmpfängerAdresse']=$ePost;
$ePostNachricht['EmpfängerName']=$Benutzername;
$ePostNachricht['Betreff']=Textbaustein('$T_ePostBetreff');
$KennwortTeilmaskiert=MaskiereKennwort(PostWert('KennwortA'));
$ePostNachricht['Nachricht']='<!DOCTYPE html><html lang="de"><head><meta http-equiv="content-type" content="text/html; charset=UTF-8"/><style type="text/css">body { font-family:\'Arial\', \'Verdana\'; font-size:14px; } span.Proportional { font-family:\'Consolas\', \'Courier New\'; }</style></head>' .
'<body>' . Textbaustein('$T_ePostText1') . ' <a href="'. DienstURL() . '">'. TextZuHTML(DienstURL()) . '</a> ' . Textbaustein('$T_ePostText2') . '<br/><br/>' .
Textbaustein('$T_Benutzername') . ': ' . TextZuHTML($Benutzername) . '<br/>' .
Textbaustein('$T_Kennwort') . ': ' . TextZuHTML($KennwortTeilmaskiert) . '<br/>' .
Textbaustein('$T_Aktivierungskode') . ': ' . '<br/><span class="Proportional">' . substr(TextZuHTML($Aktivierung), 0,  62) . '<br/>' . substr(TextZuHTML($Aktivierung), 62, 62) . '<br/>' . substr(TextZuHTML($Aktivierung), 124, 62) . '</span><br/><br/>' .
Textbaustein('$T_ePostGruß') . '<br/>' .
'</body></html>';
if (SendeEPost($ePostNachricht))
{ ?><span class="G"><?php echo Textbaustein('$T_ePostVersandErfolg'); ?></span><?php }
else
{ ?><span class="R"><?php echo Textbaustein('$T_ePostVersandFehler'); ?></span><?php }
unset ($ePostNachricht);
}
?>

In der SendeEPost($E) Funktion solltest Du vielleicht das @ Zeichen (Fehlerunterdrückung) in der letzten Zeile für Testzwecke entfernen.

Gruß Markus

Guten Morgen Markus,
habe auch Probleme mit php-Mail senden. Hat vorher geklappt, jetzt kommen Mails plötzlich nicht mehr an.
Auch php_error Mails versenden geht nicht.

Kannst Du mir Deinen kompletten Code zur Verfügung stellen. Einige Funktionen fehlen oben im Code.
Bitte senden an cbennder40@gmail.com

Vielen Dank im Voraus

C. Bennder

Hallo Cbennder,
Der Kode ist vollständig, bis auf den Inhalt der Nachricht, die Du sicher selbst schreiben möchtest.

$ePostNachricht['Nachricht']='<!DOCTYPE html><html lang="de"><head><meta http-equiv="content-type" content="text/html; charset=UTF-8"/><style type="text/css">body { font-family:\'Arial\', \'Verdana\'; font-size:14px; } span.Proportional { font-family:\'Consolas\', \'Courier New\'; }</style></head>' .
'<body><span class="Proportional">Hallo Welt!</span><br/></body></html>';

Auch die Fehlerüberprüfung funktioniert bei Dir sicher anders. Die Struktur macht bei Dir keinen Sinn und sollte entfernt werden.

if (count($Fehler)===0)
{
...
}

Ich habe einen Teil des Quellkodes herauskopiert, damit sich keine Fehler eischleichen konnten.

Tipp: Achte auf das korrekte Abspeichern der PHP-Datei! Hier UTF-8 und wie immer in PHP ohne BOM. (Notepad++ hilft Dir dabei.)

Gruß Markus

if (SendeEPost($ePostNachricht))
{ ?><span class="G">E-Mail-Nachricht wurde verschickt.</span><?php }
else
{ ?><span class="R">Fehler beim Verschicken der E-Mail-Nachricht!</span><?php }
unset ($ePostNachricht);
}

class R ist ein Text in rot.
class G ist ein Text in grün.
Die beiden habe ich global für alle Seiten definiert.

Nun sollte nichts mehr fehlen.