Измените адрес электронной почты HEADER на пользовательский адрес электронной почты - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть сценарий проверки формы электронной почты, который использует ОТ адрес электронной почты, введенный в поле «Электронная почта»;к сожалению, мой хостинг принимает только один конкретный адрес электронной почты: no-reply@myhost.com

Как я могу указать "пользовательский" ОТ адреса электронной почты в этом сценарии php:

<?php
if($_POST)
{
require('constant.php');

    $user_name      = filter_var($_POST["name"], FILTER_SANITIZE_STRING);
    $user_email     = filter_var($_POST["email"], FILTER_SANITIZE_EMAIL);
    $user_phone     = filter_var($_POST["phone"], FILTER_SANITIZE_STRING);
    $content   = filter_var($_POST["content"], FILTER_SANITIZE_STRING);

    if(empty($user_name)) {
        $empty[] = "<b>Name</b>";       
    }
    if(empty($user_email)) {
        $empty[] = "<b>Email</b>";
    }
    if(empty($user_phone)) {
        $empty[] = "<b>Phone Number</b>";
    }   
    if(empty($content)) {
        $empty[] = "<b>Comments</b>";
    }

    if(!empty($empty)) {
        $output = json_encode(array('type'=>'error', 'text' => implode(", ",$empty) . ' Required!'));
        die($output);
    }

    if(!filter_var($user_email, FILTER_VALIDATE_EMAIL)){ //email validation
        $output = json_encode(array('type'=>'error', 'text' => '<b>'.$user_email.'</b> is an invalid Email, please correct it.'));
        die($output);
    }

    //reCAPTCHA validation
    if (isset($_POST['g-recaptcha-response'])) {

        require('component/recaptcha/src/autoload.php');        

        $recaptcha = new \ReCaptcha\ReCaptcha(SECRET_KEY, new \ReCaptcha\RequestMethod\SocketPost());

        $resp = $recaptcha->verify($_POST['g-recaptcha-response'], $_SERVER['REMOTE_ADDR']);

          if (!$resp->isSuccess()) {
                $output = json_encode(array('type'=>'error', 'text' => '<b>Captcha</b> Validation Required!'));
                die($output);               
          } 
    }

    $toEmail = "myemail@gmail.com";
    $mailHeaders = "From: " . $user_name . "<" . $user_email . ">\r\n";
    if (mail($toEmail, "Contact Mail", $content, $mailHeaders)) {
        $output = json_encode(array('type'=>'message', 'text' => 'Hi '.$user_name .', thank you for the comments. We will get back to you shortly.'));
        die($output);
    } else {
        $output = json_encode(array('type'=>'error', 'text' => 'Unable to send email, please contact'.SENDER_EMAIL));
        die($output);
    }
}
?>

Я пыталсязаменить:

$mailHeaders = "From: " . $user_name . "<" . $user_email . ">\r\n";

на:

$mailHeaders = "From: no-reply@myhost.com>\r\n";

, но это не сработало;Извините, мои знания PHP очень малы: (

Заранее спасибо.

1 Ответ

0 голосов
/ 05 декабря 2018
$mailHeaders = "From: no-reply <no-reply@myhost.com>\r\n";

исправил проблему, просто убедитесь, что между no-reply и <no-reply@myhost.com>

есть пробел, но теперь мы потеряли экземпляр "phone" - как я могу объединить

$user_phone     = filter_var($_POST["phone"], FILTER_SANITIZE_STRING);
$content   = filter_var($_POST["content"], FILTER_SANITIZE_STRING);

вместе?

нашли решение, добавив:

 $mail_body        = $content;
   $mail_body       .= "\r\n\r\nName: ".$user_name; //sender name
   $mail_body       .="\r\nE-Mail: ".$user_email; //sender email
   $mail_body       .="\r\nPhone: ".$user_phone; //sender phone
   $mail_body       .="\r\n\r\n";


if (mail($toEmail, "Contact Mail", $mail_body, $mailHeaders)) {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...