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(连接被拒绝)