Swift Mailer - 无法发送邮件,也找不到错误日志

时间:2013-10-14 18:01:30

标签: php swiftmailer

PHP和Swiftmailer的新手,尚未使其正常运行。我已将/ lib /目录上传到Hostgator共享Web服务器根目录中的目录。我在/ lib /:

上面的目录中上传了以下内容
<?php
        require_once 'lib/swift_required.php';

$transport = Swift_SmtpTransport::newInstance('mail.****.com', 25)
    ->setUsername('****@****.com')
    ->setPassword('****');

$mailer = Swift_Mailer::newInstance($transport);

$message = Swift_Message::newInstance('Subject Here')
    ->setFrom(array('****@****.com' => '****'))
    ->setTo(array('****@****.com' => '****'));

    $message->setBody('This is the message');

    if (!$mailer->send($message, $errors))
    {
        echo "Error:";
        print_r($errors);
    }
?>

它不会发送消息,但我也无法查看任何错误日志。我在php.ini的所有部分都启用了错误日志记录 - 但是当我尝试转到我在浏览器中上传.php文件的位置时,我收到404错误。当我通过ssh连接时,我有jailshell访问权限。当我试图去/var/log/php-scripts.log时,我没有得到许可。想知道我还能在哪里找到错误来修复它?

3 个答案:

答案 0 :(得分:13)

您应该尝试使用swiftmailer logger plugin

  

Logger插件有助于在发送过程中进行调试。它可以帮助确定SMTP服务器拒绝地址的原因,或任何其他难以发现的问题。

您只需创建新的记录器实例,并使用registerPlugin()方法将其添加到邮件程序对象。

<?php
require_once 'lib/swift_required.php'; 
$transport = Swift_SmtpTransport::newInstance('mail.****.com', 25)
    ->setUsername('****@****.com')
    ->setPassword('****');

$mailer = Swift_Mailer::newInstance($transport);
$logger = new \Swift_Plugins_Loggers_ArrayLogger();
$mailer->registerPlugin(new \Swift_Plugins_LoggerPlugin($logger));

$message = Swift_Message::newInstance('Subject Here')
    ->setFrom(array('****@****.com' => '****'))
    ->setTo(array('****@****.com' => '****'));

    $message->setBody('This is the message');

    if (!$mailer->send($message, $errors)) {
        // Dump the log contents
        // NOTE: The EchoLogger dumps in realtime so dump() does nothing for it. We use ArrayLogger instead.
        echo "Error:" . $logger->dump();
    }else{
        echo "Successfull.";
    }
?>

编辑:

  

Swift_Plugins_Loggers_ArrayLogger:在数组中保留一组日志消息。可以清除阵列内容或将其转储到屏幕上。

     

Swift_Plugins_Loggers_EchoLogger:实时打印输出到屏幕。方便非常基本的调试输出。

答案 1 :(得分:4)

像这样使用传输异常处理:

    try {
        $mailer->send($message);
    }
    catch (\Swift_TransportException $e) {
        echo $e->getMessage();
    }

答案 2 :(得分:3)

在您的快速邮件程序扩展名下,有一个异常处理程序。

根/ LIB /类/夫特/ SwiftException.php

默认情况下会出现一些错误的错综复杂的内容,因此很难找到它们。大多数页面也建议使用同样错综复杂的方法来记录错误。

如果您只想查看错误,请添加一个回声,如下所示(或者您可能想要用它做的任何其他事情)。

class Swift_SwiftException extends Exception
{

    /**
     * Create a new SwiftException with $message.
     *
     * @param string $message
     */
    public function __construct($message)
    {
        echo $message;
        parent::__construct($message);
    }
}