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时,我没有得到许可。想知道我还能在哪里找到错误来修复它?
答案 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);
}
}