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

[HELP] email类的疑问

[复制链接]
发表于 2010-6-2 13:16:45 | 显示全部楼层 |阅读模式
本帖最后由 sundyandy 于 2010-6-2 13:18 编辑
PHP复制代码
 
$this->config->load('email');
                               
//echo $this->config->item('protocol')."<br>";
//echo $this->config->item('smtp_host')."<br>";
//echo $this->config->item('smtp_user')."<br>";
//echo $this->config->item('smtp_pass')."<br>";
//die();
 
$config['protocol'] = $this->config->item('protocol');
$config['smtp_host'] = $this->config->item('smtp_host');
$config['smtp_user'] = $this->config->item('smtp_user');
$config['smtp_pass'] = $this->config->item('smtp_pass');
//$config['smtp_port'] = $this->config->item('smtp_port');
                               
//$config['protocol'] = 'smtp';
//$config['smtp_host'] = 'mail.aaa.com';
//$config['smtp_user'] = 'posmail@aaa.com';
//$config['smtp_pass'] = 'bbb';        
                               
$this->email->initialize($config);
                               
                                 
$this->email->from($config['smtp_user'], 'Mr.');
$this->email->to($this->input->post('test'));
                                 
                               
$this->email->subject('Email Test');
$this->email->message('Testing the email.');
                               
$this->email->send();
 
复制代码



根据手册
在配置文件中设置 Email 参数
如果您不想使用使用上述方法设定参数,您可以把它们放入一个配置文件。创建一个新文件称为email.php ,添加$config数组在该文件中。然后将该文件保存为config/email.php 它将自动的被使用。如果您保存了一个参数配置文件,就不需要使用$this->email->initialize()函数来初始化参数了

我把config写在config/email.php里面.格式如下:

PHP复制代码
 
<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 
$config[protocol]='smtp';
$config[smtp_host]='mail@aaa.com';
$config[smtp_user]='posmail@aaa.com';
$config[smtp_pass]='bbb';
$config[smtp_port]='25';
 ?>
 
 
 
复制代码


问题1:
在代码中直接load后,写
PHP复制代码
 
$this->email->from($config['smtp_user'], 'Mr.');
$this->email->to($this->input->post('test'));
                                 
                               
$this->email->subject('Email Test');
$this->email->message('Testing the email.');
                               
$this->email->send();
 
复制代码

会出错,貌似配置文件是不会自动加载到页面里面一样.


问题2:
PHP复制代码
 
$config['protocol'] = $this->config->item('protocol');
$config['smtp_host'] = $this->config->item('smtp_host');
$config['smtp_user'] = $this->config->item('smtp_user');
$config['smtp_pass'] = $this->config->item('smtp_pass');
$config['smtp_port'] = $this->config->item('smtp_port');
 
复制代码

把config文件里面的值赋值到config数组,然后
$this->email->initialize($config);

依然出错


如果直接写成
PHP复制代码
 
$config[protocol]='smtp';
$config[smtp_host]='mail@aaa.com';
$config[smtp_user]='posmail@aaa.com';
$config[smtp_pass]='bbb';
$config[smtp_port]='25';
 
复制代码



则会发送成功


附上错误代码
HTML复制代码
 
<div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">
 
<h4>A PHP Error was encountered</h4>
 
<p>Severity: Warning</p>
<p>Message:  fsockopen() [<a href='function.fsockopen'>function.fsockopen</a>]: php_network_getaddresses: getaddrinfo failed: 在数据库查找中出现一个不可恢复的错误。 </p>
<p>Filename: libraries/Email.php</p>
<p>Line Number: 1652</p>
 
</div><div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">
 
<h4>A PHP Error was encountered</h4>
 
<p>Severity: Warning</p>
<p>Message:  fsockopen() [<a href='function.fsockopen'>function.fsockopen</a>]: unable to connect to mail@aaa.com:25 (Unknown error)</p>
<p>Filename: libraries/Email.php</p>
<p>Line Number: 1652</p>
 
</div><div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">
 
<h4>A PHP Error was encountered</h4>
 
<p>Severity: Warning</p>
<p>Message:  fwrite(): supplied argument is not a valid stream resource</p>
<p>Filename: libraries/Email.php</p>
<p>Line Number: 1795</p>
 
</div><div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">
 
<h4>A PHP Error was encountered</h4>
 
<p>Severity: Warning</p>
<p>Message:  fgets(): supplied argument is not a valid stream resource</p>
<p>Filename: libraries/Email.php</p>
<p>Line Number: 1818</p>
 
</div><div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">
 
<h4>A PHP Error was encountered</h4>
 
<p>Severity: Warning</p>
<p>Message:  fwrite(): supplied argument is not a valid stream resource</p>
<p>Filename: libraries/Email.php</p>
<p>Line Number: 1795</p>
 
</div><div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">
 
<h4>A PHP Error was encountered</h4>
 
<p>Severity: Warning</p>
<p>Message:  fgets(): supplied argument is not a valid stream resource</p>
<p>Filename: libraries/Email.php</p>
<p>Line Number: 1818</p>
 
</div><div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">
 
<h4>A PHP Error was encountered</h4>
 
<p>Severity: Warning</p>
<p>Message:  fwrite(): supplied argument is not a valid stream resource</p>
<p>Filename: libraries/Email.php</p>
<p>Line Number: 1795</p>
 
</div><div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">
 
<h4>A PHP Error was encountered</h4>
 
<p>Severity: Warning</p>
<p>Message:  fgets(): supplied argument is not a valid stream resource</p>
<p>Filename: libraries/Email.php</p>
<p>Line Number: 1818</p>
 
</div><div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">
 
<h4>A PHP Error was encountered</h4>
 
<p>Severity: Warning</p>
<p>Message:  fwrite(): supplied argument is not a valid stream resource</p>
<p>Filename: libraries/Email.php</p>
<p>Line Number: 1795</p>
 
</div><div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">
 
<h4>A PHP Error was encountered</h4>
 
<p>Severity: Warning</p>
<p>Message:  fgets(): supplied argument is not a valid stream resource</p>
<p>Filename: libraries/Email.php</p>
<p>Line Number: 1818</p>
 
</div><div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">
 
<h4>A PHP Error was encountered</h4>
 
<p>Severity: Warning</p>
<p>Message:  fwrite(): supplied argument is not a valid stream resource</p>
<p>Filename: libraries/Email.php</p>
<p>Line Number: 1795</p>
 
</div><div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">
 
<h4>A PHP Error was encountered</h4>
 
<p>Severity: Warning</p>
<p>Message:  fwrite(): supplied argument is not a valid stream resource</p>
<p>Filename: libraries/Email.php</p>
<p>Line Number: 1795</p>
 
</div><div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">
 
<h4>A PHP Error was encountered</h4>
 
<p>Severity: Warning</p>
<p>Message:  fgets(): supplied argument is not a valid stream resource</p>
<p>Filename: libraries/Email.php</p>
<p>Line Number: 1818</p>
 
</div>The following SMTP error was encountered: 186898288 <br />Unable to send data: AUTH LOGIN<br />Failed to send AUTH LOGIN command. Error: <br />Unable to send data: MAIL FROM:<[email]mail@aaa.com[/email]><br /><pre>from: </pre>The following SMTP error was encountered: <br />Unable to send data: RCPT TO:<[email]149056651@qq.com[/email]><br /><pre>to: </pre>The following SMTP error was encountered: <br />Unable to send data: DATA<br /><pre>data: </pre>The following SMTP error was encountered: <br />Unable to send data: User-Agent: CodeIgniter
Date: Wed, 2 Jun 2010 13:11:38 +0800
From: "Mr." <[email]mail@aaa.com[/email]>
Return-Path: <[email]mail@aaa.com[/email]>
To: 149056651@qq.com
Subject: =?utf-8?Q?Email_Test?=
Reply-To: "mail@aaa.com" <[email]mail@aaa.com[/email]>
X-Sender: mail@aaa.com
X-Mailer: CodeIgniter
X-Priority: 3 (Normal)
Message-ID: <[email]4c05e80a2c014@aaa.com[/email]>
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
 
Testing the email.
<br />Unable to send data: .<br /><br />The following SMTP error was encountered: <br />Unable to send email using PHP SMTP.  Your server might not be configured to send mail using this method.<br /><pre>User-Agent: CodeIgniter
Date: Wed, 2 Jun 2010 13:11:38 +0800
From: "Mr." <[email]mail@aaa.com[/email]>
Return-Path: <[email]mail@aaa.com[/email]>
To: 149056651@qq.com
Subject: =?utf-8?Q?Email_Test?=
Reply-To: "mail@aaa.com" <[email]mail@aaa.com[/email]>
X-Sender: mail@aaa.com
X-Mailer: CodeIgniter
X-Priority: 3 (Normal)
Message-ID: <[email]4c05e80a2c014@aaa.com[/email]>
Mime-Version: 1.0
 
 
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
 
Testing the email.
</pre>
 
复制代码


备注:正确的smtp我替换成aaa.com

求正解
发表于 2010-6-2 14:31:16 | 显示全部楼层
首先,config/email.php 是可以用的,我一直在用,不存在问题。
你如果在 config 中放了 email.php 就要去掉 $this->email->initialize($config);
这个手册有明确说明。
发表于 2010-6-5 13:24:00 | 显示全部楼层
代码太多,没细看。CI的email类是好用的。我也在用。
提示一点:目前有很多免费邮箱是不支持邮件群发的,需要注意。
发表于 2010-11-19 10:28:39 | 显示全部楼层
我使用Email类库也遇到这样的问题,测试了几次发现config/email.php 配置文件不能载入,上面两位说的方法都注意了,还是不行,哪位高手给解决一下啊?万分焦急
发表于 2010-11-19 11:36:16 | 显示全部楼层
注意:->load->library()不会将config文件加载到系统config里面,
她只是将这个$config数组传给email的构造函数用,用完拉倒,不保存
发表于 2010-11-19 11:43:56 | 显示全部楼层
下面是我完整的代码,麻烦老师帮忙看看,不胜感激

控制器 Sendmail.php:
<?php
        class Sendmail extends Controller
        {
                function __construct()
                {
                        parent::Controller();
                }
                function send()
                {
                        $this->load->library('email');                       
                        $this->email->from("broex@163.com");
                        $this->email->to("chujun2046@163.com");
                        $this->email->subject("储君的主题");
                        $this->email->message("2010陶喆演唱会");
                        $this->email->send();
                }
        }
?>

配置文件 config/email.php:
<?php
$config['protocol']='smtp';
$config['charset']='gbk';
$config['smtp_host']='smtp.163.com';
$config['smtp_user']='broex';
$config['smtp_pass']='123456';
$config['smtp_port']='25';
?>
发表于 2010-11-19 11:46:41 | 显示全部楼层
按照上面的代码不能发送邮件,但是直接把配置信息放在发送邮件的函数里是可以的,不知道是哪里的问题,请老师执教
发表于 2015-9-20 20:57:37 | 显示全部楼层
我也碰到这个问题了,但是我的现象很奇怪,我用126的邮箱是可以发的,但是用阿里云的邮箱就提示:unable to send email using php smtp。请指教!

本版积分规则