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?

8voto

Chirag patel Punkte 89
$name = $_POST['name'];
$email = $_POST['email'];
$reciver = '/* Empfänger-E-Mail-Adresse */';
if (filter_var($reciver, FILTER_VALIDATE_EMAIL)) {
    $subject = $name;
    // Um HTML-E-Mails zu versenden, muss der Content-Type-Header festgelegt sein.
    $headers = 'MIME-Version: 1.0' . "\r\n";
    $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
    $headers .= 'Von:' . $email. "\r\n"; // Absender-E-Mail
    //$headers .= 'Cc:' . $email. "\r\n"; // Kopie an Absender
    $template = 'Hallo ,'
        . ''
        . 'Name:' .$name.''
        . 'Email:' .$email.''
        . ''
        . '';
    $sendmessage = "" . $template . "";
    // Nachrichtenzeilen dürfen 70 Zeichen nicht überschreiten (PHP-Regel), daher umbrechen.
    $sendmessage = wordwrap($sendmessage, 70);
    // E-Mail per PHP-Mail-Funktion senden.
    mail($reciver, $subject, $sendmessage, $headers);
    echo "Ihre Anfrage wurde empfangen, wir werden Sie bald kontaktieren.";
} else {
    echo "* ungültige E-Mail *";
}

8voto

dEsta88 Punkte 113

Sie können E-Mail mit CodeIgniter konfigurieren. Zum Beispiel mit SMTP (einfache Methode):

$config = Array(
        'protocol' => 'smtp',
        'smtp_host' => 'mail.domain.com', // Ihr SMTP-Host
        'smtp_port' => 26, // Standardport für SMTP
        'smtp_user' => 'name@domain.com',
        'smtp_pass' => 'Passwort',
        'mailtype' => 'html',
        'charset' => 'iso-8859-1',
        'wordwrap' => TRUE
);
$message = 'Ihre Nachricht';
$this->load->library('email', $config);
$this->email->from('name@domain.com', 'Titel');
$this->email->to('zielmail@domain.com');
$this->email->subject('Header');
$this->email->message($message);

if($this->email->send()) 
{
   // Bedingung ist erfüllt
}

Es funktioniert für mich!

6voto

Versuche das

if ($_POST['submit']) {
    $success= mail($to, $subject, $body, $from);
    if($success)
    { 
        echo '
        Ihre Nachricht wurde gesendet!
        ';
    } else { 
        echo '
        Etwas ist schiefgelaufen, gehen Sie zurück und versuchen Sie es erneut!
        '; 
    }
}

6voto

Jack Ch Punkte 71

Vielleicht liegt das Problem an der Konfiguration des Mail-Servers. Um diese Art von Problemen zu vermeiden oder sich keine Gedanken über das Problem des Mail-Servers machen zu müssen, empfehle ich die Verwendung von PHPMailer.

Es handelt sich um ein Plug-In, das alles Notwendige zum Versenden von E-Mails enthält, und das einzige, worauf Sie achten müssen, ist den SMTP-Port (Port: 25 und 465) aktiviert zu haben.

require_once 'PHPMailer/PHPMailer.php';
require_once '/servicios/PHPMailer/SMTP.php';
require_once '/servicios/PHPMailer/Exception.php';

$mail = new \PHPMailer\PHPMailer\PHPMailer(true);
try {
    //Server-Einstellungen
    $mail->SMTPDebug = 0;
    $mail->isSMTP();
    $mail->Host = 'smtp.gmail.com';
    $mail->SMTPAuth = true;
    $mail->Username = 'correo@gmail.com';
    $mail->Password = 'contrasenia';
    $mail->SMTPSecure = 'ssl';
    $mail->Port = 465;

    // Empfänger
    $mail->setFrom('correo@gmail.com', 'mein Name');
    $mail->addAddress('ziel@correo.com');

    // Anhänge
    $mail->addAttachment('optionale Datei');         // Dateien hinzufügen

    // Inhalt
    $mail->isHTML(true);// E-Mail-Format auf HTML setzen
    $mail->Subject = utf8_decode("Betreff");
    $mail->Body    = utf8_decode("E-Mail-Inhalt");
    $mail->AltBody = '';
    $mail->send();
}
catch (Exception $e) {
    $error = $mail->ErrorInfo;
}

5voto

aidangig Punkte 177

Zunächst einmal haben Sie möglicherweise zu viele Parameter für die mail() -Funktion ... Sie können maximal fünf haben, mail(to, subject, message, headers, parameters);

Was die Variable $from betrifft, sollte diese automatisch von Ihrem Webhost kommen, wenn Sie das Linux cPanel verwenden. Sie kommt automatisch von Ihrem cPanel-Benutzernamen und Ihrer IP-Adresse.

$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$from = 'From: yoursite.com';
$to = 'contact@yoursite.com';
$subject = 'Kundenanfrage';
$body = "Von: $name\n E-Mail: $email\n Nachricht:\n $message";

Vergewissern Sie sich auch, dass Sie die richtige Reihenfolge der Variablen in Ihrer mail() -Funktion haben.

Der mail($to, $subject, $message, etc.) in dieser Reihenfolge, oder sonst besteht die Möglichkeit, dass es nicht funktioniert.

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