php E-mail senden Formular funktioniert nicht mit E-Mails an dieselbe Domäne
Ich versuche, fügen Sie ein Kontaktformular auf einer website, welche Beiträge die Formulardaten an eine E-Mail-Adresse. Es funktioniert gut mit jedem anderen E-Mail-Registranten wie Gmail und Yahoo. aber es funktioniert nicht mit E-Mails mit der gleichen domain-Namen (z.B.: [email protected] oder [email protected]).
Der gleichen form war in Ordnung arbeiten mit godaddy deluxe-hosting, aber jetzt, wo ich verschoben haben, um Godaddy CPanel-linux-hosting deluxe plan, es funktioniert nicht.
Bitte gehen Sie durch den folgenden code, den ich verwende, und lassen Sie mich wissen, was verändert werden muss. Ihre Anregungen werden sehr geschätzt. Vielen Dank im Voraus.
Code:
<?php
if(isset($_POST['email'])) {
$email_to = "[email protected]";
$email_subject = "Enquiry website";
function died($error) {
//your error code can go here
echo "We are very sorry, but there were error(s) found with the form you submitted. ";
echo "These errors appear below.<br /><br />";
echo $error."<br /><br />";
echo "Please go back and fix these errors.<br /><br />";
die();
}
//validation expected data exists
if(!isset($_POST['author']) ||
!isset($_POST['email']) ||
!isset($_POST['subject']) ||
!isset($_POST['text'])) {
died('We are sorry, but there appears to be a problem with the form you submitted.');
}
$author = $_POST['author']; //required
$email_from = $_POST['email']; //required
$subject = $_POST['subject']; //required
$text = $_POST['text']; //required
$error_message = "";
$email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
if(!preg_match($email_exp,$email_from)) {
$error_message .= 'The Email Address you entered does not appear to be valid.<br />';
}
$string_exp = "/^[A-Za-z .'-]+$/";
if(!preg_match($string_exp,$author)) {
$error_message .= 'The Name you entered does not appear to be valid.<br />';
}
if(strlen($text) < 2) {
$error_message .= 'The text you entered do not appear to be valid.<br />';
}
if(strlen($error_message) > 0) {
died($error_message);
}
$email_message = "Form details below.\n\n";
function clean_string($string) {
$bad = array("content-type","bcc:","to:","cc:","href");
return str_replace($bad,"",$string);
}
$email_message .= "Name:".clean_string($author)."\n";
$email_message .= "Email:".clean_string($email_from)."\n";
$email_message .= "Subject:".clean_string($subject)."\n";
$email_message .= "Message:".clean_string($text)."\n";
//create email headers
$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);
?>
<!-- include your own success html here -->
<?php
echo "<script type='text/javascript'>alert('$us Thank you for contacting us. We will get back to you very soon.')</script>";
echo "<script type='text/javascript'>window.location='index.html'</script>";
}
?>
- Haben Sie Ihre code? Edit: wenn Sie den plan ändern und es nicht funktioniert, dann schlage ich vor, Sie ändern die hoster.
- Sie haben Zugriff auf logs auf dem server?
- Ja, ich habe Zugriff
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht sicher, ob dies wurde Hinzugefügt, da dieser post, aber man kann tatsächlich selbst im cPanel.
Sollten Sie (oder jemand) begegnet dieser Fehler in der Zukunft einen einfachen Anruf zu Gehen, Daddy wird dieses Problem lösen. Standardmäßig Gehen Daddy ' s cPanel shared hosting-gesetzt ist, zu liefern lokal, nicht remote. Wenn Sie Ihre E-Mail-set überall neben cPanel internen E-Mail-Konten, die folgenden Tests innerhalb von Ihrem control panel zu identifizieren, wenn Sie brauchen, um remote-Anfrage per E-Mail versenden:
In der E-Mail-Abschnitt der cPanel-Haupt-Seite, wählen Sie die option 'E-Mail-Trace'
Geben Sie Ihre E-Mail-Domäne in der 'Empfänger E-Mail..." - Feld und wählen Sie 'Run Report'
Wenn die Ausgabe liest "Blackhole" auf der zweiten Zeile, dann sind Sie konfiguriert für die lokale Lieferung, Kontaktieren Sie Ihren hosting-support-Abteilung und fordern Sie die änderung für remote-übermittlung. Sie werden und läuft innerhalb von ein paar Minuten, wenn Sie erwähnen, die durchgeführt dieser test vor dem Aufruf von.
Hast du E-Mail konfiguriert, die auf dieser domain. also sind Sie MX-Servern lokal oder zu einem anderen Anbieter?
php-mailer /cPanel nicht überprüfen, externen DNS für die eigene Domäne (es sei denn, Sie sagen es), wenn senden von E-mail, es wird einfach senden Sie die mail an sich selbst... Wenn Sie nicht konfiguriert sind lokal auf Ihrem server zum empfangen von E-mail, dann werden Sie nicht bekommen, die E-Mail.
/var/log/exim_mainlog.