sundyandy 发表于 2010-6-2 13:16:45

email类的疑问

本帖最后由 sundyandy 于 2010-6-2 13:18 编辑


$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里面.格式如下:


<?phpif ( ! defined('BASEPATH')) exit('No direct script access allowed');

$config='smtp';
$config='mail@aaa.com';
$config='posmail@aaa.com';
$config='bbb';
$config='25';
?>




问题1:
在代码中直接load后,写

$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:

$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);

依然出错


如果直接写成

$config='smtp';
$config='mail@aaa.com';
$config='posmail@aaa.com';
$config='bbb';
$config='25';



则会发送成功


附上错误代码

<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:<mail@aaa.com><br /><pre>from: </pre>The following SMTP error was encountered: <br />Unable to send data: RCPT TO:<149056651@qq.com><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." <mail@aaa.com>
Return-Path: <mail@aaa.com>
To: 149056651@qq.com
Subject: =?utf-8?Q?Email_Test?=
Reply-To: "mail@aaa.com" <mail@aaa.com>
X-Sender: mail@aaa.com
X-Mailer: CodeIgniter
X-Priority: 3 (Normal)
Message-ID: <4c05e80a2c014@aaa.com>
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." <mail@aaa.com>
Return-Path: <mail@aaa.com>
To: 149056651@qq.com
Subject: =?utf-8?Q?Email_Test?=
Reply-To: "mail@aaa.com" <mail@aaa.com>
X-Sender: mail@aaa.com
X-Mailer: CodeIgniter
X-Priority: 3 (Normal)
Message-ID: <4c05e80a2c014@aaa.com>
Mime-Version: 1.0


Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit

Testing the email.
</pre>


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

求正解

Hex 发表于 2010-6-2 14:31:16

首先,config/email.php 是可以用的,我一直在用,不存在问题。
你如果在 config 中放了 email.php 就要去掉 $this->email->initialize($config);
这个手册有明确说明。

spt119 发表于 2010-6-5 13:24:00

代码太多,没细看。CI的email类是好用的。我也在用。
提示一点:目前有很多免费邮箱是不支持邮件群发的,需要注意。

chujun2046 发表于 2010-11-19 10:28:39

我使用Email类库也遇到这样的问题,测试了几次发现config/email.php 配置文件不能载入,上面两位说的方法都注意了,还是不行,哪位高手给解决一下啊?万分焦急

visvoy 发表于 2010-11-19 11:36:16

注意:->load->library()不会将config文件加载到系统config里面,
她只是将这个$config数组传给email的构造函数用,用完拉倒,不保存

chujun2046 发表于 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';
?>

chujun2046 发表于 2010-11-19 11:46:41

按照上面的代码不能发送邮件,但是直接把配置信息放在发送邮件的函数里是可以的,不知道是哪里的问题,请老师执教

easywu 发表于 2015-9-20 20:57:37

我也碰到这个问题了,但是我的现象很奇怪,我用126的邮箱是可以发的,但是用阿里云的邮箱就提示:unable to send email using php smtp。请指教!
页: [1]
查看完整版本: email类的疑问