Прежде всего, похоже, что вы используете старую версию 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 показывает правильный способ справиться с этим.