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:实时打印输出到屏幕.方便非常基本的调试输出.
使用传输异常处理,如下所示:
try {
$mailer->send($message);
}
catch (\Swift_TransportException $e) {
echo $e->getMessage();
}
Run Code Online (Sandbox Code Playgroud)
在您的 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)