CodeIgniter电子邮件不工作 [英] CodeIgniter Email Doesn't Work

查看:172
本文介绍了CodeIgniter电子邮件不工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我配置了可通过localhost访问的SMTP服务器。



PHP mail()命令运行正常,我在预定任务中使用它来将备份作为附件发送电子邮件。 >

如果我使用CodeIgniter v1.7.2电子邮件库使用以下代码,并且CI调试输出表示邮件已发送,但SMTP服务器日志显示Bad Sender。

  $ this-> CI-> load-> library('email'); 

$ config ['protocol'] ='mail';
$ config ['smtp_host'] ='localhost';
$ config ['mailtype'] ='html';
$ config ['crlf'] =\r\\\
; // CHANGED FROM DEFAULTS
$ config ['newline'] =\r\\\
; // CHANGED FROM DEFAULTS

$ this-> CI-> email-> initialize($ config);

$ this-> CI-> email-> from('noreply@hiddendomain.com');
$ this-> CI-> email-> to($ _ POST ['email']);

$ this-> CI-> email-> subject('Password Reset');
$ this-> CI-> email-> message('测试电子邮件类。< a href =http://www.google.co.uk>测试< / a> ');

$ this-> CI-> email-> send();

这是从PHP邮件的2条消息的日志(更改的域到hiddendomain1 / 2)

  03/10/11 16:26:39 ME-I0107:[496]中继授权:发件人IP(127.0.0.1)授权的IP范围。 
03/10/11 16:26:39 ME-I0149:[496] AFAB1A79683B434EAD6A415C5DAA7D52.MAI已成功接收并且传递线程已启动
03/10/11 16:26:39 ME-I0074: [496](调试)谈话结束
03/10/11 16:26:39 ME-I0107:[552]中继授予:发件人IP(127.0.0.1)在授权的IP范围内。
03/10/11 16:26:39 ME-I0149:16B8D83CD6B040489608FCE5E9C3A177.MAI被成功接收并且传递线程被初始化
03/10/11 16:26:39 ME-I0074: [552](Debug)谈话结束
03/10/11 16:26:40 ME-I0018:[8F72D521DC554A13AA1E0973090A75B9.MAI]来自([SMTP:noreply@hiddendomain1.com])的出站邮件被重新命名为[CC32D29A0BA34D9496B1602A8150B7EE .MAI]到目标域[hiddendomain2.com]
03/10/11 16:26:40 ME-I0123:域[hiddendomain2.com]有MX列表[mailserver.hiddendomain2.com]
03/10/11 16:26:40 ME-I0026:[CC32D29A0BA34D9496B1602A8150B7EE.MAI]发送消息
03/10/11 16:26:40 ME-I0018:[9D2654AE500442E4A90DDFD75B98C0B5.MAI]来自([SMTP :noreply@hiddendomain1.com])重新命名为[90EF8F85B103431FB14A32F535AFFFFD.MAI]到目标域[hiddendomain2.com]
03/10/11 16:26:40 ME-I0123:域[hiddendomain2.com]有MX list [mailserver.hiddendomain2.com]
03/10/11 16:26:40 ME-I0026:[90EF8F85B103431FB14A32F535AFFFFD.MAI]发送消息
03/10/11 16:26:40 ME-I0049 :[CC32D29A0BA34D9496B1602A8150B7EE.MAI]发送已成功完成
03/10/11 16:26:41 ME-I0049:[90EF8F85B103431FB14A32F535AFFFFD.MAI]发送成功完成

这是通过CodeIgniter发送后的日志,您可以看到CI电子邮件库正在添加< char到From地址,有什么帮助可以告诉我为什么吗?这是CI的错误?

  03/10/11 16:26:42 ME-I0107:[568] :发件人IP(127.0.0.1)在授权的IP范围内。 
03/10/11 16:26:42 ME-I0149:B1D7A0FCDF44403291E8EAD33F5F144F.MAI已成功接收并且传递线程已启动
03/10/11 16:26:42 ME-I0074: [568](Debug)会话结束
03/10/11 16:26:42 ME-I0018:[38DFE013802046528FAC7823871869CC.MAI]来自([SMTP:< noreply@hiddendomain1.com])的出站邮件被重新命名为[AC83949E463246DDBD022BBF355D4606.MAI]到目标域[hiddendomain2.com]
03/10/11 16:26:42 ME-I0123:域[hiddendomain2.com]有MX列表[mailserver.hiddendomain2.com]
03/10/11 16:26:42 ME-I0026:[AC83949E463246DDBD022BBF355D4606.MAI]发送消息
03/10/11 16:26:42 ME-IXXXX:[A​​C83949E463246DDBD022BBF355D4606.MAI]远程服务器返回了响应指示永久错误。服务器响应:(501错误的发件人地址语法**)
03/10/11 16:26:42 ME-E0036:[AC83949E463246DDBD022BBF355D4606.MAI] MAIL FROM命令失败。
03/10/11 16:26:42 ME-E0008:[AC83949E463246DDBD022BBF355D4606.MAI]出站,无法将命令发送到服务器(错误10038)。
03/10/11 16:26:42 ME-E0060:[AC83949E463246DDBD022BBF355D4606.MAI] - 无法将邮件递送到目标域(hiddendomain2.com)。消息返回给发件人。
03/10/11 16:26:43 ME-I0119:域[hiddendomain1.com]已使用本地环回地址[127.0.0.1],因为它是本地托管的。
03/10/11 16:26:43 ME-I0026:[AC83949E463246DDBD022BBF355D4606.MAI]发送消息
03/10/11 16:26:43 ME-I0102:[572]地址([SMTP :< noreply@hiddendomain1.com])将被传送到Catch-All地址。
03/10/11 16:26:43 ME-I0149:[572] CAEFBF802B8646DB99B4D2401571AE3E.MAI已成功接收并且传递线程已启动
03/10/11 16:26:43 ME-I0049: [AC83949E463246DDBD022BBF355D4606.MAI]发送已成功完成
03/10/11 16:26:43 ME-I0074:[572](调试)谈话结束
03/10/11 16:26:43 ME -I0132:为CAEFBF802B8646DB99B4D2401571AE3E.MAI
呈现的Catch-All消息

它看起来错误在此报告,关闭作为SMTP服务器的问题,但似乎问题确实与CI库的兼容性问题: http ://codeigniter.com/forums/viewthread/114030/



我很确定这是CI的问题,因为PHP邮件工作正常。任何人都可以确认?因为如果不是我需要改变我使用CI的脚本。我可以提供任何日志/详细信息

解决方案

我曾经有同样的问题, p>

 
$ config ['protocol'] ='smtp';
$ config ['validate'] ='FALSE';

我希望对你有用


I configured an SMTP server accessible via localhost.

PHP mail() command works fine, I use it in scheduled tasks to email backups as attachments.

If I use CodeIgniter v1.7.2 email library using the following code, and the CI debug output says the message is sent, but the SMTP server logs show Bad Sender.

        $this->CI->load->library('email');

        $config['protocol'] = 'mail';
        $config['smtp_host'] = 'localhost';
        $config['mailtype'] = 'html';
        $config['crlf']        = "\r\n";        // CHANGED FROM DEFAULTS
        $config['newline']     = "\r\n";        // CHANGED FROM DEFAULTS

        $this->CI->email->initialize($config);

        $this->CI->email->from('noreply@hiddendomain.com');
        $this->CI->email->to($_POST['email']); 

        $this->CI->email->subject('Password Reset');
        $this->CI->email->message('Testing the email class. <a href="http://www.google.co.uk">test</a>');   

        $this->CI->email->send();

This is the log from PHP mail for 2 messages (changed domains to hiddendomain1/2)

03/10/11 16:26:39   ME-I0107: [496] Relay Granted: Sender IP (127.0.0.1) is within an authorized IP range.
03/10/11 16:26:39   ME-I0149: [496] AFAB1A79683B434EAD6A415C5DAA7D52.MAI was received successfully and delivery thread was initiated
03/10/11 16:26:39   ME-I0074: [496] (Debug) End of conversation
03/10/11 16:26:39   ME-I0107: [552] Relay Granted: Sender IP (127.0.0.1) is within an authorized IP range.
03/10/11 16:26:39   ME-I0149: [552] 16B8D83CD6B040489608FCE5E9C3A177.MAI was received successfully and delivery thread was initiated
03/10/11 16:26:39   ME-I0074: [552] (Debug) End of conversation
03/10/11 16:26:40   ME-I0018: [8F72D521DC554A13AA1E0973090A75B9.MAI] Outbound message from ([SMTP:noreply@hiddendomain1.com]) requeued as [CC32D29A0BA34D9496B1602A8150B7EE.MAI] to the target domain [hiddendomain2.com]
03/10/11 16:26:40   ME-I0123: Domain [hiddendomain2.com] has MX list [mailserver.hiddendomain2.com]
03/10/11 16:26:40   ME-I0026: [CC32D29A0BA34D9496B1602A8150B7EE.MAI] Sending message
03/10/11 16:26:40   ME-I0018: [9D2654AE500442E4A90DDFD75B98C0B5.MAI] Outbound message from ([SMTP:noreply@hiddendomain1.com]) requeued as [90EF8F85B103431FB14A32F535AFFFFD.MAI] to the target domain [hiddendomain2.com]
03/10/11 16:26:40   ME-I0123: Domain [hiddendomain2.com] has MX list [mailserver.hiddendomain2.com]
03/10/11 16:26:40   ME-I0026: [90EF8F85B103431FB14A32F535AFFFFD.MAI] Sending message
03/10/11 16:26:40   ME-I0049: [CC32D29A0BA34D9496B1602A8150B7EE.MAI] Send Completed Successfully
03/10/11 16:26:41   ME-I0049: [90EF8F85B103431FB14A32F535AFFFFD.MAI] Send Completed Successfully

This is the log after sending via CodeIgniter, as you can see the CI email library is adding the < char to the From address, can any help tell me why? is this is bug with CI?

03/10/11 16:26:42   ME-I0107: [568] Relay Granted: Sender IP (127.0.0.1) is within an authorized IP range.
03/10/11 16:26:42   ME-I0149: [568] B1D7A0FCDF44403291E8EAD33F5F144F.MAI was received successfully and delivery thread was initiated
03/10/11 16:26:42   ME-I0074: [568] (Debug) End of conversation
03/10/11 16:26:42   ME-I0018: [38DFE013802046528FAC7823871869CC.MAI] Outbound message from ([SMTP:<noreply@hiddendomain1.com]) requeued as [AC83949E463246DDBD022BBF355D4606.MAI] to the target domain [hiddendomain2.com]
03/10/11 16:26:42   ME-I0123: Domain [hiddendomain2.com] has MX list [mailserver.hiddendomain2.com]
03/10/11 16:26:42   ME-I0026: [AC83949E463246DDBD022BBF355D4606.MAI] Sending message
03/10/11 16:26:42   ME-IXXXX: [AC83949E463246DDBD022BBF355D4606.MAI] Remote server returned a response indicating a permanent error. Server Response: (501 Bad sender address syntax**)
03/10/11 16:26:42   ME-E0036: [AC83949E463246DDBD022BBF355D4606.MAI] MAIL FROM command Failed.
03/10/11 16:26:42   ME-E0008: [AC83949E463246DDBD022BBF355D4606.MAI] Outbound, could not send the command to the server (error 10038).
03/10/11 16:26:42   ME-E0060: [AC83949E463246DDBD022BBF355D4606.MAI] - Message could not be delivered to target domain (hiddendomain2.com). Message returned to Sender.
03/10/11 16:26:43   ME-I0119: Domain [hiddendomain1.com] has used local loopback address [127.0.0.1] because it is hosted locally.
03/10/11 16:26:43   ME-I0026: [AC83949E463246DDBD022BBF355D4606.MAI] Sending message
03/10/11 16:26:43   ME-I0102: [572] Address ([SMTP:<noreply@hiddendomain1.com]) is to be delivered to Catch-All address.
03/10/11 16:26:43   ME-I0149: [572] CAEFBF802B8646DB99B4D2401571AE3E.MAI was received successfully and delivery thread was initiated
03/10/11 16:26:43   ME-I0049: [AC83949E463246DDBD022BBF355D4606.MAI] Send Completed Successfully
03/10/11 16:26:43   ME-I0074: [572] (Debug) End of conversation
03/10/11 16:26:43   ME-I0132: Catch-All Message rendered for CAEFBF802B8646DB99B4D2401571AE3E.MAI

It looks the bug was reported here but shunned off as a problem with the SMTP server but it seems the problem is indeed a compatibility issues with the CI lib: http://codeigniter.com/forums/viewthread/114030/

I am pretty damn sure that this is a problem with CI as PHP mail works fine. Can anyone confirm? because if not I need to change the script I use with CI. I can provide any logs / details

解决方案

I used to have the same problem, I did this change in my code:

$config['protocol'] = 'smtp';
$config['validate'] = 'FALSE';

I hope that works for you

这篇关于CodeIgniter电子邮件不工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆