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

d.h*_*276 10 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);
    }
?>
Run Code Online (Sandbox Code Playgroud)

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

cyb*_*b0k 14

你应该尝试使用swiftmailer logger插件.

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.";
    }
?>
Run Code Online (Sandbox Code Playgroud)

编辑:

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

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


kjd*_*n84 5

使用传输异常处理,如下所示:

    try {
        $mailer->send($message);
    }
    catch (\Swift_TransportException $e) {
        echo $e->getMessage();
    }
Run Code Online (Sandbox Code Playgroud)


Jef*_*vis 4

在您的 swift 邮件程序扩展下有一个异常处理程序。

根/lib/classes/Swift/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);
    }
}
Run Code Online (Sandbox Code Playgroud)