2015-05-20 2 views
0

я хочу, чтобы отправить электронную почту после пользователя проверки из корзиныEmail Gateway PHPMailer в Codeigniter

мой контроллер:

include('js/phpmailer/PHPMailerAutoload.php'); 
$mail = new PHPMailer(); 
$mail->Host  = "ssl://smtp.gmail.com"; // SMTP server Gmail 
$mail->Mailer = "smtp"; 
$mail->Port = 465; 
$mail->SMTPAuth = true; // turn on SMTP authentication 
$mail->SMTPDebug = 1; 
$mail->Username = "my gmail"; // 
$mail->Password = "my pass"; // SMTP password 
$webmaster_email = "my gmail"; //Reply to this email ID 
$email = "recipient gmail"; // Recipients email ID 
$name = "John"; // Recipient's name 
$mail->From = $webmaster_email; 
$mail->FromName = "Aryono King"; 
$mail->AddAddress($email,$name); 
$mail->AddReplyTo($webmaster_email,"Goeboek I-Mut"); 
$mail->WordWrap = 50; // set word wrap 
$mail->IsHTML(true); // send as HTML 
$mail->Subject = "Subject Test"; 
$mail->Body = "Test Content"; //HTML Body 
if(!$mail->Send()) {echo "Mailer Error: " . $mail->ErrorInfo;} 
else {echo "<strong>Email Send</strong>";} 

но показать ошибку, как этот

2015-05-20 21:46:43 SMTP ERROR: Failed to connect to server: (0) 2015-05-20 21:46:43 SMTP connect() failed. Mailer Error: SMTP connect() failed. 

В чем проблема? я не могу решить, я везде искать и я не могу финт ответ, пожалуйста, кто-то поможет мне

+0

Не должен ли хозяин быть просто «smtp.gmail.com»? Посмотрите, поможет ли это: http://stackoverflow.com/questions/712392/send-email-using-the-gmail-smtp-server-from-a-php-page – Maximus2012

+0

'-> host' буквально просто имя хоста DNS , это НЕ URL-адрес. –

+1

Я перейду на smtp.gmail.com, но все еще получаю ошибку – yudijohn

ответ

0

Две вещи, которые нужно проверить перед использованием PHPMailer для Gmail

  1. необходимо проверить, является ли SMTP порт и адрес электронной почты + пароль

  2. Вам необходимо пройти аутентификацию из своей учетной записи gmail для отправки электронной почты из незащищенных источников, что означает: при первом отправке электронной почты Google отправит вам электронное письмо с просьбой разрешить переслать электронную почту с вашего идентификатора, здесь требуется щелкнуть по адресу

Еще одна вещь, Порт 587 прекрасно работает для меня, а не 465

Привет,

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

используйте этот код ...

include 'PHPMailerAutoload.php'; 
function send_mail($mail_to,$mail_to_fname,$mail_to_lname,$subject,$message) 
{ $mail = new PHPMailer; 
    $mail->isSMTP(); 
    $mail->SMTPDebug = 0; 
    $mail->Debugoutput = 'html'; 
    $mail->Host = 'mail.gmail.com'; 
    $mail->Port = 587; 
    $mail->SMTPSecure = 'tls'; 
    $mail->SMTPAuth = true; 
    $mail->Username = " YOUR GMAIL "; 
    $mail->Password = " YOUR GMAIL PASSWORD"; 
    $mail->setFrom(' YOUR GMAIL ', ' YOUR NAME '); 
    $mail->addAddress($mail_to,$mail_to_fname . " " . $mail_to_lname); 
    $mail->Subject = $subject; 
    $mail->msgHTML($message); 
    $mail->AltBody = ' '; 
    if (!$mail->send()){echo "FALSE" . $mail->ErrorInfo;} 
    else{echo "TRUE";} 
} 

// How to user 
// send_email(" email address where to send "," reciepient first name ","reciepient last name "," subject ", " message as html code "); 

вам нужно d o еще один шаг, позволяющий gmail отправлять сообщения ...! (*) соглашайтесь разрешить Google отправлять электронные письма из незащищенных приложений, эта ссылка будет отправлена ​​на ваш gmail после отправки первого сообщения электронной почты

+1

У меня есть сценарий, подобный выше, с и без ssl: // но это все еще ошибка, я пытаюсь использовать много smtp-порта, например 587, 465, а также smtp-хост, например mail.gmail.com, smtp.gmail.com, smtp.googlemail.com, но все прошло ошибкой – yudijohn

+1

Вам также необходимо проверить, что у вас есть файл class.smtp.php в той же папке, что и PHPMailerAutoload.php, так что все три файла class.phpmailer.php, class.smtp.php и PHPMailerAutoload.php в вам нужно указать одну и ту же папку или текущий путь ... –

0

Посмотрите на пример here.

Хотя лично я делаю это так:

//Create a new PHPMailer instance 
    $mail = new PHPMailer; 

    //Tell PHPMailer to use SMTP 
    $mail->isSMTP(); 

    //Enable SMTP debugging 
    // 0 = off (for production use) 
    // 1 = client messages 
    // 2 = client and server messages 
    $mail->SMTPDebug = 0; 

    //Ask for HTML-friendly debug output 
    $mail->Debugoutput = 'html'; 

    $mail->isSMTP(); // Set mailer to use SMTP 
    $mail->Host = 'ssl://smtp.googlemail.com'; // Specify main and backup SMTP servers 
    $mail->SMTPAuth = true; // Enable SMTP authentication 
    $mail->Username = $email_mail; // SMTP username 
    $mail->Password = $email_pass; // SMTP password 
    $mail->SMTPSecure = 'ssl'; // Enable TLS encryption, `ssl` also accepted 
    $mail->Port = 465; // TCP port to connect to 

Попробуйте проверить с вашим, как, например: $mail->Host = 'ssl://smtp.googlemail.com';, который должен быть не ssl://.

+0

Спасибо за ваш ответ, я сделал так, как будто вы делаете это, но это приводит к ошибке отображения, подобной этой ошибке «Ошибка Mailer: SMTP connect()». – yudijohn

+0

Вы проверили, правильно ли установлен phpmailer autoload.php? – Vainglory07

+1

Да, я проверил его, я меняю имя и ошибку файла загрузки php, поэтому он находится в правильном месте – yudijohn

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