用户
 找回密码
 入住 CI 中国社区
搜索
查看: 3800|回复: 4
收起左侧

[HELP] 发送邮箱 报错信息 高手帮忙看一下!万分感谢!

[复制链接]
发表于 2010-1-11 15:29:39 | 显示全部楼层 |阅读模式
本帖最后由 qbz2004 于 2010-1-11 15:34 编辑

在本地调试好使,但传到服务器上就出现这种问题。
本地环境:Apache
服务器:Windows 2003 Service IIS 6

我想应该是服务器不支持 smtp
服务器也是我们公司的,公司人少,这个事就落到我头上了。
如果真是服务器不支持的话。
帮忙看看最下面的解决方案。
小弟真不敢随便改服务器啊。要是坏了罪就大了。

我的代码:
//获得表单中的邮箱信息
  $config['protocol'] = 'smtp';
  $config['smtp_host'] = 'ssl://smtp.gmail.com';
  $config['smtp_user'] = 'qbz2004@gmail.com'; //发信人
  $config['smtp_pass'] = 'z362020103';//发信人密码
  $config['smtp_port'] = '465';
  $config['smtp_timeout'] = '5';
  $config['newline'] = "\r\n";
  $config['crlf'] = "\r\n";
  $config['charset'] = "utf-8";

  $this->load->library('email');
  $this->email->initialize($config);
  //发信人,发信人名字
   $this->email->from($row->smtp_user, $row->username);
  //收信人
  $this->email->to($mymail);
  //标题
  $this->email->subject($row->mail_title);
  //内容
  $this->email->message($row->mail_text);
  if($this->email->send()) {
   echo '<script type="text/javascript">alert("发送成功,请查收!");window.history.go(-1);</script>';
  }
  else {
   show_error($this->email->print_debugger());
   //echo '<script type="text/javascript">alert("发送失败");window.history.go(-1);</script>';
  }

错误信息:
A PHP Error was encountered
Severity: Warning
Message: fsockopen() [function.fsockopen]: unable to connect to ssl://smtp.gmail.com:465 (Unable to find the socket transport "ssl" - did you forget to enable it when you configured PHP?)
Filename: libraries/Email.php
Line Number: 1646
A PHP Error was encountered
Severity: Warning
Message: fwrite(): supplied argument is not a valid stream resource
Filename: libraries/Email.php
Line Number: 1789
A PHP Error was encountered
Severity: Warning
Message: fgets(): supplied argument is not a valid stream resource
Filename: libraries/Email.php
Line Number: 1812
A PHP Error was encountered
Severity: Warning
Message: fwrite(): supplied argument is not a valid stream resource
Filename: libraries/Email.php
Line Number: 1789



网站查到的 解决方案:

Google 的企业邮局不错,可是应用起来真是麻烦. 正常设置不能发送邮件. 研究几个小时后得到办法. 分享一下.

环境 Windows 2003 Service IIS 6:
1.设置PHP 打开php.ini配置文件,找到 ;extension=php_openssl.dll 去掉前面的";"号, 意思就是开启这个openssl扩展. 将php目录下的libeay32.dll,ssleay32.dll ext/php_openssl.dll复制到system32目录下。 重新启动Web服务.
2.设置邮件发送方式: SMTP 服务器:ssl://smtp.gmail.com SMTP 端口:465 SMTP 用户名:你设置的邮局帐号 如 Service@28600.com 成功.

先谢过各位高手了。。
我的代码应该是好用的。如果有正需要这个方面代码的话。可以参考。
发表于 2010-1-11 15:31:49 | 显示全部楼层
确实是不支持 ssl 这个协议,打开那个扩展就可以了,打开 PHP 扩展不会影响服务器的,大不了可以改回来,呵呵
发表于 2010-1-11 16:21:24 | 显示全部楼层
股沟企业邮局用过,可以收发,这是我弄的设置
$config['protocol'] = 'smtp';
$config['smtp_host'] = 'ssl://smtp.gmail.com';
$config['smtp_port'] = 465;
$config['smtp_timeout'] = '5';
$config['smtp_user'] = 'xxx@gmail.com';
$config['smtp_pass'] = 'xxx';
$config['charset'] = 'GBK';
$config['useragent'] = 'xxx.com';
$config['mailtype'] = 'html';
$config['newline'] = "\r\n";
$config['crlf'] = "\r\n";
 楼主| 发表于 2010-1-11 16:44:23 | 显示全部楼层
确实是不支持 ssl 这个协议,打开那个扩展就可以了,打开 PHP 扩展不会影响服务器的,大不了可以改回来,呵 ...
Hex 发表于 2010-1-11 15:31



    先谢谢大家!
是不支持ssl对吧。如果不用ssl就OK了呗?
我这么说对不?
貌似还另一种不用ssl 的方法。我找找试试!
发表于 2010-1-11 17:41:16 | 显示全部楼层
用 qq smtp 吧,我一直用,很不错,呵呵

本版积分规则