Настройка PHPmailer Из электронной почты так же, как для электронной почты

Я использую почтовую программу PHP для создания контактной формы и имейте в виду, что я новичок в PHP. У меня есть форма, отправляемая хорошо, однако в электронном письме, которое я получаю, адрес отправителя не соответствует электронному письму, которое пользователь вводит в контактную форму, и вместо этого отображается то же электронное письмо, что и получатель. Я на 100% уверен, что ввожу правильный адрес электронной почты в контактную форму. Я заменил свою конфиденциальную информацию на $$$$$$$$$

   <?php 


    if ($_SERVER["REQUEST_METHOD"] == "POST") {
        $name = trim($_POST["name"]);
        $email = trim($_POST["email"]);
        $message = trim($_POST["message"]);

        if ($name == "" OR $email == "" OR $message == "") {

            $error_message = "You must specify a value for name, email address, and message.";
        }

        if (!isset($error_message)) {
            foreach( $_POST as $value ){
                if( stripos($value,'Content-Type:') !== FALSE ){
                    $error_message = "There was a problem with the information you entered.";
                }
            }
        }

        if (!isset($error_message) && $_POST["address"] != "") {
            $error_message = "Your form submission has an error.";
        }

        require_once("../inc/phpmailer/PHPMailerAutoload.php");
        $mail = new PHPMailer();

        if (!isset($error_message) && !$mail->ValidateAddress($email)){
            $error_message = "You must specify a valid email address.";
        }

            $mail->IsSMTP();
            $mail->SMTPAuth = true;
            $mail->Host = "smtp.gmail.com";
            $mail->Port = 587;
            $mail->Username = "$$$$$$$$$$$$$";
            $mail->Password = "$$$$$$$$$$$$$";
            $mail->SMTPSecure = 'tls';

        if (!isset($error_message)) {

            $mail->From =  $email;
            $mail->FromName = $name;
            $mail->addAddress('$$$$$$$$$$$$$$', '$$$$$$$$$$l');

            $mail->isHTML(true);

            $mail->Subject = '$$$$$$$$$$| ' . $name;
            $mail->Body = $message;
            $mail->AltBody = $message;

            if($mail->Send()) {
                header("Location: ../contact/?status=thanks");
                exit;
            } else {
              $error_message = "There was a problem sending the email: " . $mail->ErrorInfo;
            }

        }
    }

    require_once("../inc/header.php"); ?>

        <div class="section page">

            <div class="wrapper">

                <div class="row">

                    <div class="col-md-4 col-md-offset-4">
                        <div class="center-block">
                            <h1>Contact</h1>
                        </div>

                        <?php if (isset($_GET["status"]) AND $_GET["status"] == "thanks") { ?>
                            <div class="alert alert-success">
                            <p>Thanks for the email! I&rsquo;ll be in touch shortly!</p>
                            </div>
                        <?php } else { ?>

                            <?php
                                if (!isset($error_message)) {

                                    echo '<p>I&rsquo;d love to hear from you! Complete the form to send me an email.</p>';

                                } else {
                                    ?><div class="alert alert-warning"><?php
                                    echo '<p>' . $error_message . '</p>';
                                    ?></div><?php
                                }
                            ?>

                    </div>

                </div>

                    <form class="form-horizontal" method="post" role="form">
                          <div class="form-group">
                            <label for="name" class="col-sm-4 control-label">Name</label>
                            <div class="col-sm-4">
                              <input type="text" class="form-control" id="name" name="name" placeholder="Name" value="<?php if (isset($name)) { echo htmlspecialchars($name); } ?>">
                            </div>
                          </div>
                          <div class="form-group">
                            <label for="email" class="col-sm-4 control-label">Email</label>
                            <div class="col-sm-4">
                              <input type="email" class="form-control" id="email" name="email" placeholder="Email" value="<?php if(isset($email)) { echo htmlspecialchars($email); } ?>">
                            </div>
                          </div>
                          <div class="form-group">
                            <label for="message" class="col-sm-4 control-label">Message</label>
                            <div class="col-sm-4">
                            <textarea class="form-control" id="message" name="message" rows="3"><?php if (isset($message)) { echo htmlspecialchars($message); } ?></textarea>
                            </div>
                          </div>
                          <div class="form-group" style="display:none;">
                            <label for="address" class="col-sm-4 control-label">Address</label>
                            <div class="col-sm-4">
                              <input type="text" class="form-control" id="address" name="address" placeholder="Name">
                              <p>Humans: please leave this field blank.</p>
                            </div>
                          </div>
                          <div class="form-group">
                            <div class="col-sm-offset-4 col-sm-">
                              <button type="submit" class="btn btn-primary">Submit</button>
                            </div>
                          </div>
                    </form>


                <?php } ?>

            </div>

        </div>

    <?php require_once("../inc/footer.php"); ?>

person chap    schedule 20.11.2013    source источник
comment
Я думаю, вам нужно добавить эту строку $mail->addReplyTo($email, $name);   -  person Vit Kos    schedule 20.11.2013


Ответы (3)


изменить это

$mail->From =  $email;
$mail->FromName = $name;
$mail->addAddress('$$$$$$$$$$$$$$', '$$$$$$$$$$l');

to

$mail->setFrom($email, $name);
$mail->addAddress($EMAIL THAT ITS GOING TO, $NAME THATS ITS GOING TO);

Также см. эту ссылку при отправке с другого адреса с помощью GMAIL.

https://support.google.com/mail/answer/22370?hl=ru

person Pwner    schedule 20.11.2013

Похоже, вы забыли вызвать переменную Sender:

public $Sender = '';

/**
 * The Return-Path of the message.
 * If empty, it will be set to either From or Sender.
 * @type string
 */

https://github.com/PHPMailer/PHPMailer/blob/master/class.phpmailer.php

person the_pete    schedule 20.11.2013

Спасибо за ваши ответы, ребята. Я провел небольшое внешнее исследование, и оказалось, что это проблема самого Gmail. Они не позволяют вам использовать их службу smtp с адресом отправителя, отличным от вашей учетной записи gmail. Я думаю, это из-за спама.

person chap    schedule 21.11.2013