2014-12-21 17 views
0

У меня есть рабочая электронная почта PHP, которая работает около 10% времени. Мне нужно добавить аутентификацию, чтобы она работала в 100% случаев, но я пытаюсь использовать PHPMailer (https://github.com/PHPMailer/PHPMailer), и я получаю ошибки и не могу заставить его работать.Добавить аутентификацию SMTP Gmail в форму обратной связи PHP Mailer

Мой основной рабочий сценарий без аутентификации:

<?php 

if ($_SERVER["REQUEST_METHOD"] == "POST") { 

    // Get the form fields and remove whitespace. 
    $name = strip_tags(trim($_POST["name"])); 
    $name = str_replace(array("\r","\n"),array(" "," "),$name); 
    $email = filter_var(trim($_POST["email"]), FILTER_SANITIZE_EMAIL); 
    $message = trim($_POST["message"]); 

    if (empty($name) OR empty($message) OR !filter_var($email, FILTER_VALIDATE_EMAIL)) { 
     echo "Oops! There was a problem with your message. Please check that all fields are filled in."; 
     exit; 
    } 

    $recipient = "[email protected]"; 
    $subject = "Enquiry from $name"; 
    $email_content = "Name: $name\n"; 
    $email_content .= "Email: $email\n\n"; 
    $email_content .= "Message:\n$message\n"; 
    $email_headers = "From: Enquiry <[email protected]>"; 

    if (mail($recipient, $subject, $email_content, $email_headers)) { 
     echo "Thank You! Your message has been sent."; 
    } else { 
     echo "Oops! Something went wrong and we couldn't send your message."; 
    } 

} 
else { 
    echo "There was a problem with your submission, please try again."; 
} 

?> 

Любая помощь будет принята с благодарностью!

Большое спасибо.

+0

Как сказано в ответе, вы не используете phpmailer. Попробуйте использовать пример gmail здесь https://github.com/PHPMailer/PHPMailer/blob/master/examples/gmail.phps – Synchro

ответ

1

вы не используете PHPMailer в коде получить PHPMailer композитора https://packagist.org/packages/phpmailer/phpmailer

Я попробовал 15 минут назад, и она отлично работает для меня 100% времени (я пробовал только ~ 20 раз) код:

$mail = new PHPMailer(); 

     $mail->IsSMTP(); 
     $mail->SMTPAuth = true; 
     $mail->SMTPSecure = 'ssl'; 
     $mail->Host = 'smtp.gmail.com'; 
     $mail->Port = 465; 
     $mail->Username = "[email protected]"; 
     $mail->Password = "ur pass"; 

     $mail->ChartSet = 'utf-8'; 
     $mail->From  = 'me'; 
     $mail->Subject = "subject here"; 
     $mail->AddAddress('[email protected]'); //to 
     $mail->MsgHTML($body); 
     $mail->IsHTML(true); 
     $mail->IsSMTP(); 

     $mail->send(); 

удачи.

+0

Спасибо за помощь! Он работает совершенно в автономном режиме, но как только на моем сервере электронные письма не отправятся, я увижу, что я могу сделать здесь, но спасибо за вашу помощь! – Kobius

-2

Из этого кода, похоже, вы используете встроенную функцию PHP mail(), а не phpmailer. Если вы используете phpmailer, у вас должна быть строка, которая создает новый объект PHPMailer, например: $mail = new PHPMailer;. См. http://phpmailer.worxware.com/?pg=examplebgmail для примера того, как использовать PHPMailer для отправки сообщения через SMTP-сервер Gmail (smtp.gmail.com) с помощью проверки подлинности.

+0

Пожалуйста, не указывайте на устаревший пример кода. – Synchro