Я хочу проверить соединение перед добавлением почтового аккаунта в базу данных.Я использую для этого smtpConnect
.Но gmail отвергает такое соединение, но данные верны, когда я пытаюсь отправить электронное письмо.Почему?
Вот мой код
$data = [
'server' => 'smtp.gmail.com',
'secure' => '',
'user' => 'username@gmail.com',
'pass' => 'pass',
'port' => 587,
'auth' => true,
'skipVerify' => true,
'address' => 'address@address.com',
'name' => 'Address',
'subject' => 'Test',
'body' => 'Hello world!',
];
$mailer = new PHPMailer(true);
$mailer->SMTPDebug = 2;
$mailer->isSMTP();
$mailer->isHTML(true);
$mailer->Timeout = 10;
$mailer->Host = $data['server'];
if ($data['auth']) {
$mailer->SMTPAuth = true;
}
$mailer->SMTPSecure = ($data['secure'] ? $data['secure'] : '');
$mailer->SMTPAutoTLS = false;
$mailer->Mailer = “smtp”;
//$mailer->SMTPKeepAlive = true;
$mailer->Username = $data['user'];
$mailer->Password = $data['pass'];
$mailer->Port = $data['port'];
$mailer->setLanguage('pl');
$mailer->CharSet = "utf-8";
if ($data['skipVerify']) {
$mailer->SMTPOptions = array(
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true,
),
);
}
try {
if ($connection = $mailer->smtpConnect()) {
$mailer->smtpClose();
echo "Connection OK";
}
} catch (\Exception $e) {
echo "Error " . $e->getMessage();
}
//This code works.
//$mailer->SetFrom($data['user'], $data['name']);
//$mailer->Subject = $data['subject'];
//$mailer->msgHTML($data['body']);
//$mailer->AddAddress($data['address']);
//try {
// $result = $mailer->Send();
// echo "sent";
//} catch (\PHPMailer\PHPMailer\Exception $e) {
// echo "Error: " . $e->getMessage();
//}