2015-02-11 3 views
2

Я пытаюсь отправить электронное письмо с помощью smtp gmail (см. Ниже код), но я получаю сообщение «Имя пользователя и пароль не принято».Имя пользователя и пароль не принимается

Я пробовал:

ни один из они работают.

Вот PHP код:

function sendEmail($from, $fromName, $msg) 
{ 
    $mail = new PHPMailer(); 
    $mail->SMTPDebug = 4; // enables SMTP debug information (for testing) 
         // 1 = errors and messages 
         // 2 = messages only 
    $mail->WordWrap = 900; // RFC 2822 Compliant for Max 998 characters per line 
    $mail->IsSMTP(); 

    //$mail->Host = 'tls://smtp.gmail.com:587'; 
    $mail->Host = "smtp.gmail.com"; 
    $mail->Port = 587; //465 
    $mail->SMTPSecure = "tls"; 
    $mail->SMTPAuth = true; 
    $mail->Username = '[email protected]'; 
    $mail->Password = 'yyyyyyy'; 

    $mail->From = $from; 
    $mail->FromName = $fromName; 

    $mail->AddAddress('[email protected]', ' '); 

    $mail->IsHTML(true); 

    $mail->CharSet = 'UTF-8'; 
    $mail->Priority = 1; 
    $mail->Timeout = 60; 
    $mail->SMTPKeepAlive = true; 
    $mail->Subject = "subject here"; 
    $mail->Body = $msg; 
    $mail->AltBody = 'testing..'; 
    $ok = $mail->Send(); 

    $mail->ClearAllRecipients(); 
    $mail->ClearAttachments(); 

    return $ok; 
} 

Update:Here's полное сообщение об ошибке (с DebugMode = 4)

+0

Вы используете новую учетную запись gmail? В какой-то момент Google увеличил ограничения на использование учетных записей gmail для smtp –

+0

@MichaelColeman: У учетной записи около 1 года. Где я могу найти дополнительную информацию об этих новых ограничениях? – Jack

+0

Попробуйте создать пароль приложения вместо использования gmail one, https://security.google.com/settings/security/apppasswords работал для меня в прошлом. –

ответ

0

После тестирования я получил эту работу, изменяя хозяина включить ДУС префикс.

function sendEmail($from, $fromName, $msg) 
{ 
$mail = new PHPMailer(); 
$mail->SMTPDebug = 4; 
$mail->WordWrap = 900; 
$mail->IsSMTP(); 

//$mail->Host = 'tls://smtp.gmail.com:587'; 
$mail->Host = "tls://smtp.gmail.com"; 
$mail->Port = 587; //465 
$mail->SMTPSecure = "tls"; 
$mail->SMTPAuth = true; 
$mail->Username = '[email protected]'; 
$mail->Password = 'yyyyyyy'; 

// Define o remetente 
$mail->From = $from; 
$mail->FromName = $fromName; 

$mail->AddAddress('[email protected]', ' '); 

$mail->IsHTML(true); 

$mail->CharSet = 'UTF-8'; 
$mail->Priority = 1; 
$mail->Timeout = 60; 
$mail->SMTPKeepAlive = true; 
$mail->Subject = "subject here"; 
$mail->Body = $msg; 
$mail->AltBody = 'testing..'; 
$ok = $mail->Send(); 

$mail->ClearAllRecipients(); 
$mail->ClearAttachments(); 

return $ok; 
} 
+0

Это не исправление, которое вы ищете. Установка tls в параметре 'Host' точно такая же, как установка его с помощью свойства' SMTPSecure'. – Synchro

+0

У меня такая же ошибка – Jack

+0

, и я попытался использовать tsl до – Jack

Смежные вопросы