Danke für die Landung bei meiner Frage.PHPMailer, keine Fehler
Ich versuche ein Kontaktformular auf einer Website zu erstellen, die ich remote hostet.
Ich möchte das Formular ein Captcha2 und eine E-Mail senden, nachdem das Captcha erfolgreich getestet wurde. Für den Mailing Teil benutze ich "PHPMailer" Das Captcha funktioniert, das Skript gibt keine Fehler zurück und es werden keine Mails empfangen.
Ich habe versucht, die Google Mail-Server, aber ohne Erfolg. Kann mir jemand auffallen, was ich falsch mache? Hier ist meine PHP-Code:
<?php
$privkey = "xxxx";
if (isset($_POST['submit'])) {
$url = 'https://www.google.com/recaptcha/api/siteverify';
$response = file_get_contents($url."?secret=". $privkey . "&response=" . $_POST['g-recaptcha-response'] ."&remoteip=" .$_SERVER['REMOTE_ADDR']);
$data = json_decode($response);
if (isset($data->success) AND $data->success == true) {
//VERIFIED CAPTCHA
date_default_timezone_set('Europe/Amsterdam');
require '../scripts/phpmailer/PHPMailerAutoload.php';
if (isset($_POST['email'])) {
// validation expected data exists
if (!isset($_POST['first_name']) ||
!isset($_POST['last_name']) ||
!isset($_POST['email']) ||
!isset($_POST['telephone']) ||
!isset($_POST['comments'])) {
died('Er is een probleem met de volledigheid van de informatie in uw contactformulier.'); //kill script
}
// var's for mailing based upon post input
$first_name = $_POST['first_name']; // required
$last_name = $_POST['last_name']; // required
$email_from = $_POST['email']; // required
$telephone = $_POST['telephone']; // not required
$comments = $_POST['comments']; // required
// _POST DATA VALIDATION
$error_message = "";
// email
$email_exp = '/^(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){255,})(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){65,}@)(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22))(?:\.(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-[a-z0-9]+)*\.){1,126}){1,}(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-[a-z0-9]+)*)|(?:\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))\]))$/iD';
if (!preg_match($email_exp, $email_from)) {
$error_message .= 'Het e-mailadres is niet geldig.<br />';
}
// NAME VALIDATION
$string_exp = "/^[A-Za-z .'-]+$/";
// first name
if (!preg_match($string_exp, $first_name)) {
$error_message .= 'Uw voornaam bevat niet toegestane leestekens.<br />';
}
// last name
if (!preg_match($string_exp, $last_name)) {
$error_message .= 'Uw achernaam bevat niet toegestane leestekens.<br />';
}
// message
if (strlen($comments) < 2) {
$error_message .= 'Het bericht is niet valide.<br />';
}
// STOP SCRIPT IF ERROR IS >0
if (strlen($error_message) > 0) {
died($error_message);
}
$email_message = "Bericht en gegevens hieronder.\n\n";
function clean_string($string)
{
$bad = array(
"content-type",
"bcc:",
"to:",
"cc:",
"href"
);
return str_replace($bad, "", $string);
}
$email_message .= "First Name: " . clean_string(stripslashes($first_name)) . "\n";
$email_message .= "Last Name: " . clean_string(stripslashes($last_name)) . "\n";
$email_message .= "Email: " . clean_string(stripslashes($email_from)) . "\n";
$email_message .= "Telephone: " . clean_string(stripslashes($telephone)) . "\n";
$email_message .= "Comments: " . clean_string(stripslashes($comments)) . "\n";
$mail = new PHPMailer;
$mail->SMTPDebug = 3; // Enable verbose debug output
$mail->isSMTP(); // Set mailer to use SMTP
$mail->Host = 'smtp.transip.email'; // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = '****@amplitudemusic.nl'; // SMTP username
$mail->Password = '*****'; // SMTP password
$mail->SMTPSecure = 'ssl'; // Enable TLS encryption, `ssl` also accepted
$mail->Port = 465; // TCP port to connect to
$mail->setFrom('****@amplitudemusic.nl', 'name'); // Sender address
$mail->addAddress('****@amplitudemusic.nl', 'name'); // Recipient 1
$mail->addAddress('[email protected]', 'name'); // Recipient 2
$mail->addReplyTo('****@amplitudemusic.nl', '{clean_string($first_name)} {clean_string($last_name)}'); // Reply Address
$mail->Subject = 'contactformulier website';
$mail->AltBody = '{$email_message}';
if (!$mail->send()) {
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
header('location: contact.php?CaptchaPass=True');
} else {
//not verified
header('location: contact.php?CaptchaFail=True');
}
}
}
}
?>
<html lang=nl>
<head>
<meta charset="utf-8">
<title>Amplitude | Drive in Disco</title>
<meta name="description" content="">
<!-- Mobile-friendly viewport -->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- Style sheet link -->
<link href="../css/reset.css" rel="stylesheet" media="all">
<link href="../css/main.css" rel="stylesheet" media="all">
<script src='https://www.google.com/recaptcha/api.js'></script>
</head>
<body background="../img/background_website.png">
<div id="background">
<header role="banner" src="../index.php">
<a href="../index.php" alt="Amplitude-Header"><img id="brand" src="../img/transparent.gif"/></a>
<nav role="navigation" position="relative">
<ul class="navbar" >
<li><a href="../index.php">Home</a></li>
<li><a href="prijzen.php">Prijzen</a></li>
<li><a href="contact.php">Contact</a></li>
</ul>
</nav>
</header>
<h2>Contact formulier</h2>
<?php
if (isset($_GET['CaptchaPass'])) {
?>
<h1>Uw mail is succesvol verzonden.</h1>
<?php
}
?>
<?php
if (isset($_GET['CaptchaFail'])) {
?>
<h1>You did not pass the spam validator. Please try again.</h1>
<?php
}
?>
* "Das Skript gibt keine Fehler zurück" * - Wie sicher bist du das? Sie verwenden nur '$ mail-> SMTPDebug = 3;' was auf eine SMTP-Verbindung testet, aber was ist mit PHP? Was ist mit der Form dafür? Bist du sicher, dass all diese POST-Arrays ausgewertet werden? was auch 'if (isset ($ _ POST ['submit']))' beinhaltet. –
Danke für die Antwort, ich habe das Skript lokal ausgeführt und ich bekomme keine Fehler. Auch Entschuldigung für die nicht einschließlich der wichtigsten URL, seit ich es gemacht habe, aber vergessen, es aufzunehmen. Zur Abkürzung habe ich beschlossen, mit dem PHP in einem Codeblock zu bleiben und für den HTML wollte ich auf diesen Link verweisen: https://gist.github.com/Thrizian/42dde0c489c04997867a6fa5afee298b –
Wenn Sie ' Php hinzufügen error_reporting (E_ALL); ini_set ('display_errors', 1); 'an den Anfang Ihres Skripts, und keine Fehler erhalten, werden wir Ihnen glauben – RiggsFolly