Отправка с помощью PHPMailer работает с одним адресом, но не с другим - PullRequest
0 голосов
/ 12 июня 2019

Я использовал адрес электронной почты для отправки с помощью PHPMailer, я успешно получаю информацию о пользователе, но когда я использую другой адрес электронной почты, он не может отправить. Также я попытался изменить номер порта 25/2525 вместо 587.

Это регистрационная форма HTML5 и Javascript, отправляющая данные пользователя на contact.mailer.php.

$fileNameSubmitterName=str_replace(' ', '_', $name);
$target_path = "/var/www/html/cdl/uploads/";

$target_path = $target_path .$fileNameSubmitterName.'_'.basename( $_FILES['test_upload_image']['name']); 
print_r(" target path "+ $target_path);

if(move_uploaded_file($_FILES['test_upload_image']['tmp_name'], $target_path)) {
  // echo "The file ".  basename( $_FILES['test_upload_image']['name']). " has been uploaded";
} else {
   //echo "There was an error uploading the file, please try again!";
}

$to = "aa@gmail.com";

$from=$email;
$from_name= "india";
$subject = "Feedback from india.org website";
//$body="Test Body-";

$message = " Name: " . $name . "\r\n Email: " . $email . "\r\n Phone: " . $phone . "\r\n address: " . $address . "\r\n Qualification: " . $qualification . "\r\n number:" . $number . "\r\n date:" . $date . "\r\n bank:" . $bank . "\r\n Feedback: " . $feedback;
$mail = new PHPMailer();  // create a new object

$error='';
$mail->IsSMTP(); // enable SMTP
//print_r("sta2");

$mail->SMTPDebug = 0;  // debugging: 1 = errors and messages, 2 = messages only
$mail->SMTPAuth = true;  // authentication enabled
$mail->SMTPSecure = 'tsl'; // secure transfer enabled REQUIRED for GMail
$mail->Host = 'smtp.gmail.com';
$mail->Port = 587; 
$mail->Username = "india@gmail.com";  
//$mail->Username = "vaag@gmail.com";  
//print_r("sta2");
//$mail->Password = "pr"; 
$mail->Password = "br"; 
$mail->SetFrom($from, $from_name);
$mail->Subject = $subject;
$mail->Body = $message;
$mail->AddAddress($to);
$mail->addAttachment($target_path); 
//print_r("stage1");

if(!$mail->Send()) {        
    echo '<script type="text/javascript">alert("Message not sent. Please try again!.");</script>';

    print "<script>document.location.href='institute.org';</script>";
} else {
    echo '<script type="text/javascript">alert("Message sent succesfully. We will conact you soon.");</script>';
    print "<script>document.location.href=institute.org';</script>";
}

//print_r($error);
}

?>

Я должен отправить те же поля ввода на другой адрес электронной почты, который он не отправляет.

1 Ответ

0 голосов
/ 12 июня 2019

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

У вас есть простая опечатка:

$mail->SMTPSecure = 'tsl';

должно быть

$mail->SMTPSecure = 'tls';

Ваш код не показывает, откуда взято $email, но из того, что вы помещаете в тело сообщения, я предполагаю, что оно представлено в формеполе пользователем, а затем вы делаете это:

$from=$email;
$mail->SetFrom($from, $from_name);

Это подделка, и не будет работать с Gmail.Сделайте это вместо этого:

$mail->setFrom('india@gmail.com', $from_name);
$mail->addReplyTo($_POST['email']);
$mail->addAddress($to);

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

Вы можете установитьномер порта до 25 или 2525 просто с помощью $mail->Port = 25;, однако, поскольку вы отправляете через gmail, вам следует придерживаться 587, поскольку это правильный порт для использования при отправке SMTP с использованием STARTTLS для шифрования (который вы выбрали, установив SMTPSecure = 'tls'; альтернативой является использование режима 'ssl' на порту 465).

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

...