仅当填写的电子邮件和电话号码填写正确时才发送电子邮件


Sending email only when the filled email and phone number are filled correct

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);
}

在所有验证之后,在开始构建电子邮件的标头之前,请执行以下操作:

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

如果表单有效,则$isValid将为true。现在在你发送邮件之前检查一下:

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
}