gmail smtp 在我使用 codeigniter 框架的主机中不起作用

Posted

技术标签:

【中文标题】gmail smtp 在我使用 codeigniter 框架的主机中不起作用【英文标题】:gmail smtp not working in my hosting using codeigniter framework 【发布时间】:2011-09-12 17:25:30 【问题描述】:

我希望使用 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 2008 年 7 月 1 日

如果启用了 openssl。仍然是我的代码中的错误是什么?

我开始对使用本地主机进行开发感到沮丧,当它上传到共享主机时,它出现了很多错误。

任何帮助将不胜感激! thx 在高级

【问题讨论】:

【参考方案1】:

看起来您在共享主机中的 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";

【讨论】:

您好,谢谢您的回答。我刚刚问了我的共享托管服务提供商。他们说他们没有启用端口 465,现在他们启用了它。我尝试使用 Joomla 1.6 来测试它现在可以工作的 gmail smtp。但我尝试在我的 codeigniter 网站上进行 2 次测试,当我点击注册按钮时,我的网站没有任何响应。页面就像继续加载......这是否意味着我 2 清除任何 cookie 或重置任何东西? ok.. 我关闭浏览器并重新打开。现在它可以工作了。谢谢!!【参考方案2】:

在较新的 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";



?>

【讨论】:

以上是关于gmail smtp 在我使用 codeigniter 框架的主机中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

CodeIgniter 上的 SMTP 显示成功,但电子邮件未发送到 Gmail 帐户

使用 codeigniter 通过 gmail smtp 服务器发送电子邮件

无法使用 codeIgniter 从 gmail smtp 服务器发送电子邮件?

无法在 codeigniter 中从 gmail 发送电子邮件,SMTP 身份验证错误

使用gmail,codeigniter,wamp localhost发送邮件

在 Codeigniter 中无法发送电子邮件 - fsockopen():无法连接到 ssl://smtp.gmail.com:465(连接被拒绝)