Gmail SMTP не работает на моем хостинге с использованием рамки codeigniter - PullRequest
9 голосов
/ 10 июня 2011

Я хочу использовать Gmail SMTP для отправки информации о пользователе на зарегистрированный адрес электронной почты.

Код, который я использую, отлично работает на моем локальном хосте, но когда я перешел на виртуальный хостинг, он выдает следующую ошибку:

A PHP Error was encountered
Severity: Warning

Message: fsockopen() [function.fsockopen]: unable to connect to ssl://smtp.googlemail.com:465 (Connection timed out)

Filename: libraries/Email.php

Line Number: 1652

A PHP Error was encountered
Severity: Warning

Message: fwrite(): supplied argument is not a valid stream resource

Filename: libraries/Email.php

Line Number: 1795

.... (more error msg here)

An Error Was Encountered
The following SMTP error was encountered: 110 Connection timed out
Unable to send data: AUTH LOGIN
Failed to send AUTH LOGIN command. Error: 
Unable to send data: MAIL FROM:


from: 
The following SMTP error was encountered: 
Unable to send data: RCPT TO:

to: 
The following SMTP error was encountered: 
Unable to send data: DATA

.... (more error msg here)

Вот мой почтовый конфигура

$pass = $this->generatePassword('6');

$config = Array(
  'protocol' => 'smtp',
  'smtp_host' => 'ssl://smtp.googlemail.com',
  'smtp_port' => 465,
  'smtp_timeout'=>'30',
  'smtp_user' => 'username@gmail.com',
  'smtp_pass' => 'mypassword',
  'mailtype'  => 'html',
  'charset'   => 'iso-8859-1'
);
$this->load->library('email', $config);
$this->email->set_newline("\r\n");

$this->email->from('admin@lalala.com','Title');
$this->email->to($this->input->post('email'));

$this->email->subject('Subject here');
$this->email->message('Your login username is '.$this->input->post('username').'<br/>'.'Password is '.$pass);

if (!$this->email->send()){
  show_error($this->email->print_debugger());
}else{ echo 'YEAH!!!';}

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

openssl Поддержка OpenSSL
Версия OpenSSL OpenSSL 0.9.8e-fips-rhel5 01 июля 2008

Если openssl включен.все же, что будет ошибкой в ​​моем коде?

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

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

Ответы [ 2 ]

15 голосов
/ 11 июня 2011

Похоже, ваш порт ssl в виртуальном хостинге близок, используйте этот код, чтобы проверить, открыт ли он.

$fp = fsockopen("www.google.com", 80, &$errno, &$errstr, 10); // work fine
if (!$fp)
    echo "www.google.com -  $errstr   ($errno)<br>\n";
else
    echo "www.google.com -  ok<br>\n";


$fp = fsockopen("smtp.gmail.com", 465, &$errno, &$errstr, 10); // NOT work
if (!$fp)
    echo "smtp.gmail.com 465  -  $errstr   ($errno)<br>\n";
else
    echo "smtp.gmail.com 465 -  ok<br>\n";


$fp = fsockopen("smtp.gmail.com", 587, &$errno, &$errstr, 10); // NOT work
if (!$fp)
    echo "smtp.gmail.com 587  -  $errstr   ($errno)<br>\n";
else
    echo "smtp.gmail.com 587 -  ok<br>\n";
4 голосов
/ 13 июля 2014

есть обновление для тестового скрипта в более новой версии php:

<?php

    $fp = fsockopen("www.google.com", 80, $errno, $errstr, 10); // work fine
    if (!$fp)
        echo "www.google.com -  $errstr   ($errno)<br>\n";
    else
        echo "www.google.com -  ok<br>\n";


    $fp = fsockopen("smtp.gmail.com", 465, $errno, $errstr, 10); // NOT work
    if (!$fp)
        echo "smtp.gmail.com 465  -  $errstr   ($errno)<br>\n";
    else
        echo "smtp.gmail.com 465 -  ok<br>\n";


    $fp = fsockopen("smtp.gmail.com", 587, $errno, $errstr, 10); // NOT work
    if (!$fp)
        echo "smtp.gmail.com 587  -  $errstr   ($errno)<br>\n";
    else
        echo "smtp.gmail.com 587 -  ok<br>\n";



?>
...