【发布时间】:2015-11-09 16:17:52
【问题描述】:
我正在尝试在 Elastix 上通过 php 发送电子邮件。 当我将 php 作为 ssh 运行时,它可以工作,但是当我尝试在 Web (PHP) 上运行时,我什么也没发送。 这是我的代码:
#!/usr/bin/php -q
<?php
echo shell_exec('whoami');
shell_exec("sudo sendEmail -f j.example@example.com -t example@example.com -u Subject -m Message-s example.com.mx -o tls=yes -xu j.user@example.com.mx -xp password");
?>
我认为是关于权限的,因为当我在命令行上运行它时,输出是:
根
电子邮件已发送。但是当我尝试通过 Web 打开文件时,我什么也没发送,输出是下一个:
星号
所以我尝试给 Asteriks 根权限,但它不起作用:(。 在另一个尝试中,我下载了 PHPMailer 库,但我没有发送电子邮件。我尝试使用 Xampp 在 Windows 上执行此操作,它可以工作并且与 PHP (5.1.6) 的版本相同。
这是我的 PHPMailer 代码:
<?PHP
$mail = new PHPMailer;
$mail->isSMTP();
$mail->Host = 'example.com';
$mail->SMTPAuth = true;
$mail->Username = 'example@example.com';
$mail->Password = 'password';
$mail->SMTPSecure = 'ssl';
$mail->Port = 465;
$mail->SMTPOptions = array(
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
)
);
$mail->From = 'example@example.com';
$mail->FromName = 'Name';
$mail->addAddress('example@example.com');
$mail->WordWrap = 50;
$mail->isHTML(true);
$mail->Subject = 'Here is the subject';
$mail->Body = 'This is the HTML message body <b>in bold!</b>';
if(!$mail->send()) {
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
echo 'Message has been sent';
}
?>
它适用于 Windows,但不适用于 Elastix 有什么帮助吗?
【问题讨论】:
-
whoami 毫无意义,因为您使用的是 sudo - 您以 root 身份运行
sendEmail。既然你已经用 phpmailer 标记了这个,那么你的 phpmailer 代码在哪里?如果您使用的是 phpmailer,为什么首先要使用 shell_exec? -
我在另一个答案中添加了代码。抱歉,我是 Stackoverflow 的新手 :( 感谢您的回答 :)
-
您可以编辑您的问题。不要发布其他信息作为答案。无论如何,您会遇到什么(如果有的话)错误?如果 phpmailer 没有吐出错误,那么这不是 php 问题。 PHP 的工作相当于从你那里拿一个信封,然后把它从街角的邮箱里走下来。一旦信封落入插槽,php 的工作就完成了,它报告成功。如果邮局随后丢失了您的邮件,那不是 php 的问题,并且首先对 php 不可见。
-
不,我没有收到任何错误,只是一个空白页。
-
那么在你的脚本到达 send() 调用之前,有些东西正在破坏你的脚本。打开 display_errors 和 error_reporting。那些不应该首先在调试/开发系统上关闭。
标签: php email phpmailer elastix