php контактная форма, можно ли проверить, было ли получено автоматическое письмо? - PullRequest
0 голосов
/ 24 декабря 2018

Я копался в поисках предложений о том, как убедиться, что адрес электронной почты, введенный в веб-форму, действителен или нет.Похоже, что лучшее решение - это отправить автоматическое электронное письмо на адрес электронной почты, который отправил пользователь, если он получит его, то отлично, если не очевидно, что он недействителен.

что я хочу сделать, это заполнить пользователяв контактной форме, когда они отправляют форму, она проверяет всю проверку и затем отправляет автоматическое электронное письмо на адрес электронной почты пользователя, затем в зависимости от того, было ли письмо успешно получено, отправьте исходный запрос на мою электронную почту.

Iможно получить автоматическую отправку электронной почты нормально, но есть ли способ заставить php вернуть полученное по электронной почте подтверждение, чтобы я мог обработать остальную часть моего скрипта?

вот мой код

<?php
// if user has submitted the form and there are no errors

if(($_SERVER["REQUEST_METHOD"] == "POST") && !$nameErr && !$emailErr && !$phoneErr && !$messageErr && !$botErr && !$pointsErr)
{
    //Create a new PHPMailer instance
    $mail = new PHPMailer;
    //Tell PHPMailer to use SMTP
    $mail->isSMTP();
    //Enable SMTP debugging
    // 0 = off (for production use)
    // 1 = client messages
    // 2 = client and server messages
    $mail->SMTPDebug = 0;
    //Set the hostname of the mail server
    $mail->Host = 'mailout.one.com';
    //Set the SMTP port number - likely to be 25, 465 or 587
    $mail->Port = 587;
    //Whether to use SMTP authentication
    $mail->SMTPAuth = true;
    //Username to use for SMTP authentication
    $mail->Username = 'USERNAME';
    //Password to use for SMTP authentication
    $mail->Password = 'PASSWORD';
    //Set who the message is to be sent from
    $mail->setFrom($from, $name);
    //Set an alternative reply-to address
    $mail->addReplyTo($email, $name);
    //Set who the message is to be sent to
    $mail->addAddress($from, 'PERSON');


    // To send automated reply mail
    $autoemail = new PHPMailer(); 
    $autoemail->From = $from; 
    $autoemail->FromName = "PERSON"; 
    $autoemail->AddAddress($email, $name); 
    $autoemail->Subject = "Autorepsonse: We received your submission"; 
    $autoemail->Body = "We received your submission. We will contact you soon ...";
    $autoemail->Send();



    if(!$autoemail->send()) 
    {
        echo "Mailer Error: " . $mail->ErrorInfo;
    } 
    else 
    {
        //CHECK AUTOMATED EMAIL HAS BEEN RECEIVED BY THE USER THEN SEND THEIR ENQUIRY EMAIL
        //Set the subject line
    #$mail->Subject = $subject;
    //Read an HTML message body from an external file, convert referenced images to embedded,
    //convert HTML into a basic plain-text alternative body
    #$mail->Body = $message."<p><strong>Club Enquiry Relates To: </strong>".$club."</p><p><strong>Client Details</strong></p>Name: ".$name."<br/>Email: ".$email."<br />Tel No: ".$phone."<p><strong>Extras</strong></p>How Did you find our website? ".$hearsay."<br/ >Spam Score: ".$points." out of ".$maxPoints."<br />IP Address: ".$_SERVER['REMOTE_ADDR'];
    //Replace the plain text body with one created manually
    #$mail->AltBody = 'This is a plain-text message body';
    //Attach an image file
    #$mail->addAttachment('images/phpmailer_mini.png');

        echo"<h2>Thank You!!!</h2>";
        echo "<p>Your message has been sent successfully, we aim to respond within a couple of days. Please check your Junk/Span folder incase it ends up there.</p>";
    }   

Но я не уверен, как определить, доставлено письмо с автоответчиком или нет?

любая помощь очень ценится

1 Ответ

0 голосов
/ 24 декабря 2018

Автоматическое и мгновенное подтверждение доставки невозможно, поэтому, если вы думаете об ожидании этого подтверждения, чтобы ваш сценарий выполнил вторую часть процесса регистрации, вам необходимо переосмыслить свою стратегию.

Кроме того, имейте в виду, что действительный адрес электронной почты не обязательно означает, что адрес электронной почты принадлежит подписавшемуся лицу.Теоретически я могу зарегистрироваться на вашем сайте, используя электронную почту кого-то, кого я знаю, и все будет в порядке только потому, что электронная почта существует.

Если вам нужна проверка электронной почты, вы должны рассмотреть вопрос об отправке автоматического электронного письма с уникальной одноразовой ссылкой, котораяпользователь нажимает, чтобы завершить процесс или содержащий уникальный код, который пользователь должен ввести на шаге подтверждения.

Я бы предложил включить в электронное письмо ссылку, указывающую на ваш сайт (т. Е. Yoursite.com/verification/random_unique_string)

random_unique_string может быть чем угодно, если только это не так.обратимый злонамеренным пользователем.Для невнимательности это может быть хеш электронной почты получателя, дата отправки, случайная соль и т. Д., Который является уникальным и при нажатии приводит к завершению процесса регистрации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...