PHPMailer 在 CakeEmail 不具有相同配置的地方工作

PHPMailer works where CakeEmail doesn't with the same configuration

我遇到了以下问题,正如您从标题中所想象的那样,我有一个带有联系表的 CakePHP v2.5.6 应用程序,每次提交时都会给我一个身份验证错误,这让我很惊讶,在尝试使用 PHPMailer 进行简单测试后,它在显然相同的配置下完美运行。

CakePHP 配置(app/Config/email.php)

<?php

class EmailConfig {

public $info = array(
    'transport' => 'Smtp',
    'host' => 'smtp.foo.com',
    'port' => 25,
    'username' => 'username',
    'password' => 'password'
    );
}   

CakePHP 发件人代码

CakeEmail::deliver('foo@foo.es', 'Subject', 'Test', 'info');  

CakePHP 错误报告

PHPMailer 测试脚本

<?php
require './PHPMailer/PHPMailerAutoload.php';

$mail = new PHPMailer;

//$mail->SMTPDebug = 3;                               

$mail->isSMTP();                                     
$mail->Host = 'smtp.foo.com';  
$mail->SMTPAuth = true;                              
$mail->Username = 'username';               
$mail->Password = 'password';                           
$mail->Port = 25;                                   

$mail->setFrom('info@example.es', 'Mailer');
$mail->addAddress('foo@foo.es', 'Mr. foo');                  
$mail->addReplyTo('info@example.es', 'Information');

$mail->isHTML(true);                                  // Set email format to HTML

$mail->Subject = 'Here is the subject';
$mail->Body    = 'This is the HTML message body <b>in bold!</b>';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

if(!$mail->send()) {
    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
    echo 'Message has been sent';
}  

所以我的问题是,配置之间是否真的存在差异,或者我遗漏了什么?为什么 PHPMailer 可以工作而 CakeEmail 不能?
提前谢谢你:)

我找到的解决方案看起来很虚假,但关于错误原因的调试信息并不完全准确。
东西不见了,PHPMailer 和 CakeEmail 的不同之处在于 from 配置字段。

来自配置的 PHPMailer

$mail->setFrom('info@example.es', 'Mailer');  

您可能会注意到 CakeEmail 配置文件缺少该字段,因此只需添加它,错误就会消失。

最终的 CakeEmail 配置文件应如下所示:

<?php

class EmailConfig {

public $info = array(
    'transport' => 'Smtp',
    'host' => 'smtp.foo.com',
    'port' => 25,
    'username' => 'username',
    'password' => 'password',
    'from' => 'info@example.es'
    );
}   

我希望这对某人有所帮助 :)