【问题标题】:Sending email only when the filled email and phone number are filled correct仅当填写的电子邮件和电话号码填写正确时才发送电子邮件
【发布时间】:2016-11-23 10:48:38
【问题描述】:

我在 sendmail.php 文件中有以下代码。

<?php

if($_POST) {

    // Enter the email where you want to receive the message
    $emailTo = 'example@gmail.com';

    // Form fields
    $clientName = addslashes(trim($_POST['name']));
    $clientEmail = addslashes(trim($_POST['email']));
    $number = addslashes(trim($_POST['number']));
    $message = addslashes(trim($_POST['message']));

    // Email Ssubject
    $subject = 'Query from My Domain';

    // Compose message to send
    $sendMessage = 'Hi' . "\n\n";
    $sendMessage .= $message . "\n\n";
    $sendMessage .= 'From: ' . $clientName . "\n";
    $sendMessage .= 'Email: ' . $clientEmail . "\n";
    $sendMessage .= 'Contact number: ' . $number . "\n";

    $array = array();
    $array['nameMessage'] = '';
    $array['emailMessage'] = '';
    $array['numberMessage'] = '';
    $array['messageMessage'] = '';

    if($clientName == '') {
        $array['nameMessage'] = 'Please enter your full name.';
    }
    if (filter_var($clientEmail, FILTER_VALIDATE_EMAIL) == false) {
        $array['emailMessage'] = 'Please insert a valid email address.';
    } 
    if (!preg_match('/^(\+?)+([0-9]{10,})$/', $number)) {
        $array['numberMessage'] = 'Please enter a valid contact number.';
    }
    if($message == '') {
        $array['messageMessage'] = 'Please enter your message.';
    }
    if($clientName && $clientEmail && $number && $message != '') {
        // Headers
        $headers = "From: " . $clientName . ' <' . $clientEmail . '>' . "\r\n";
        $headers .= "CC: " . 'My Boss <boss@gmail.com>' . "\r\n";
        $headers .= PHP_EOL;
        $headers .= "MIME-Version: 1.0".PHP_EOL;
        $headers .= "Content-Type: multipart/mixed;".PHP_EOL;
        $headers .= " boundary=\"boundary_sdfsfsdfs345345sfsgs\"";

        // Send mail
        mail($emailTo, $subject, $sendMessage, $headers);
    }

    echo json_encode($array);

}   else {
        header ('location: index.html#contact');
}

?>

在此验证来自电子邮件和电话号码的输入,并且这些验证效果很好。我的问题是在下面处理这一部分,以便表单仅在填写的电子邮件和电话号码正确时才发送电子邮件。如果我没记错的话,下面这段代码中我需要摆弄的是$clientEmail和$number,我尝试了很多没有用的东西。

if($clientName  != '' && $clientEmail && $number && $message != '') {
    // Headers
    $headers = "From: " . $clientName . ' <' . $clientEmail . '>' . "\r\n";
    $headers .= "CC: " . 'My Boss <boss@gmail.com>' . "\r\n";
    $headers .= PHP_EOL;
    $headers .= "MIME-Version: 1.0".PHP_EOL;
    $headers .= "Content-Type: multipart/mixed;".PHP_EOL;
    $headers .= " boundary=\"boundary_sdfsfsdfs345345sfsgs\"";

    // Send mail
    mail($emailTo, $subject, $sendMessage, $headers);
}

【问题讨论】:

    标签: php jquery html email contact-form


    【解决方案1】:

    在您完成所有验证之后,在您开始为电子邮件构建标题之前,请执行以下操作:

    $isValid = empty($array['nameMessage']) && empty($array['emailMessage']) &&
               empty($array['numberMessage']) && empty($array['messageMessage']);
    

    $isValid 如果表单有效,则为真。现在在发送邮件之前检查它:

    if($isValid) {
        // build headers and send mail
        ...
        mail(...);
        // maybe you should echo a success message and exit here 
        // if there is nothing else to do
    }else{
        echo json_encode($array); //echo the error messages
    }
    

    【讨论】:

    • 谢谢,代码似乎解决了我遇到的验证问题。但是我仍然没有收到电子邮件。我怀疑代码可能位于我使用 php 和 html 的 jQuery 脚本中。 if(json.nameMessage === '' && json.emailMessage === '' && json.numberMessage === '' && json.messageMes​​sage === '') { form.fadeOut('fast', function() { form.parent('.contact-form').append('

      感谢您与我们联系!我们会尽快回复您很快。

      '); }); }。表单不会褪色,也不会显示任何消息
    • 不客气。如果这解决了您遇到的问题,我建议您选择答案。你问的(jQuery)是关于别的东西。考虑为它开一个新问题。
    • 非常感谢@BeetleJouce,我会为它开一个新问题。
    猜你喜欢
    • 2021-04-29
    • 2020-05-20
    • 2011-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多