569 Stimmen

Die PHP-Mail-Funktion sendet die E-Mail nicht vollständig.

Ihre Nachricht wurde gesendet!';
        } else {
            echo 'Etwas ist schief gelaufen, gehen Sie zurück und versuchen Sie es erneut!';
        }
    }
?>

Ich habe versucht, ein einfaches Mail-Formular zu erstellen. Das Formular selbst befindet sich auf meiner index.html-Seite, aber es wird an eine separate "Vielen Dank für Ihre Einsendung"-Seite, thankyou.php, gesendet, wo der obige PHP-Code eingebettet ist. Der Code wird einwandfrei übermittelt, sendet aber keine E-Mail. Wie kann ich das beheben?

48voto

er.irfankhan11 Punkte 1280

Fügen Sie dem Mail-Funktion einen Mail-Header hinzu:

$header = "Von: noreply@example.com\r\n";
$header.= "MIME-Version: 1.0\r\n";
$header.= "Content-Type: text/html; charset=ISO-8859-1\r\n";
$header.= "X-Priority: 1\r\n";

$status = mail($to, $subject, $message, $header);

if($status)
{
    echo 'Ihre E-Mail wurde gesendet!';
} else {
    echo 'Etwas ist schief gelaufen. Bitte versuchen Sie es erneut!';
}

28voto

sonam gupta Punkte 775
  1. Versuchen Sie immer, Header in der Mail-Funktion zu senden.
  2. Wenn Sie E-Mails über localhost senden, konfigurieren Sie die SMTP-Einstellungen zum Senden von E-Mails.
  3. Wenn Sie E-Mails über einen Server senden, überprüfen Sie, ob die E-Mail-Sende-Funktion auf Ihrem Server aktiviert ist.

25voto

oneDerer Punkte 277

Wenn Sie eine SMTP-Konfiguration zur E-Mail-Versendung verwenden, versuchen Sie stattdessen PHPMailer zu verwenden. Sie können die Bibliothek von https://github.com/PHPMailer/PHPMailer herunterladen.

Ich habe meine E-Mail auf diese Weise erstellt:

function send_mail($email, $recipient_name, $message='')
{
    require("phpmailer/class.phpmailer.php");

    $mail = new PHPMailer();

    $mail->CharSet = "utf-8";
    $mail->IsSMTP();                                      // Set mailer to use SMTP
    $mail->Host = "mail.example.com";  // Specify main and backup server
    $mail->SMTPAuth = true;     // Turn on SMTP authentication
    $mail->Username = "myusername";  // SMTP username
    $mail->Password = "p@ssw0rd"; // SMTP password

    $mail->From = "me@walalang.com";
    $mail->FromName = "System-Ad";
    $mail->AddAddress($email, $recipient_name);

    $mail->WordWrap = 50;                                 // Set word wrap to 50 characters
    $mail->IsHTML(true);                                  // Set email format to HTML (true) or plain text (false)

    $mail->Subject = "This is a Sampleenter code here Email";
    $mail->Body    = $message;
    $mail->AltBody = "This is the body in plain text for non-HTML mail clients";
    $mail->AddEmbeddedImage('images/logo.png', 'logo', 'logo.png');
    $mail->addAttachment('files/file.xlsx');

    if(!$mail->Send())
    {
       echo "Die Nachricht konnte nicht gesendet werden.

19voto

user1258544 Punkte 263

Füge einfach einige Header vor dem Senden der E-Mail hinzu:

``

Und noch etwas. Die mail() Funktion funktioniert nicht lokal. Lade deinen Code auf einen Server hoch und versuche es erneut.

``

17voto

bat .t Punkte 301

Es hat für mich auf 000webhost funktioniert, indem ich Folgendes gemacht habe:

$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1" . "\r\n";
$headers .= "From: ". $from. "\r\n";
$headers .= "Reply-To: ". $from. "\r\n";
$headers .= "X-Mailer: PHP/" . phpversion();
$headers .= "X-Priority: 1" . "\r\n";

Geben Sie die E-Mail-Adresse direkt ein, wenn Sie die E-Mail senden:

mail('email@gmail.com', $subject, $message, $headers)

Verwenden Sie '' und nicht "".

Dieser Code funktioniert, aber die E-Mail wurde mit einer halben Stunde Verzögerung empfangen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X