php - 我无法在 Elastix 上通过 php 发送电子邮件

标签 php email phpmailer elastix

我正在尝试在 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");
?>

我认为与权限有关,因为当我在命令行上运行它时,输出是:

root

电子邮件已发送。但是当我尝试通过 Web 打开文件时,我没有发送任何内容,接下来是输出:

Asteriks

所以我试图给 Asteriks root 权限,但它不起作用:(。 在另一个尝试中,我下载了 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 有什么帮助吗?

最佳答案

所以,我终于能够通过 PHP 发送电子邮件了。 PHPMailer 库在 PHP 5.1.6 上无法正常工作 所以我尝试了几次,因为(最终)给我的错误是:

Parse error: syntax error, unexpected T_FUNCTION in var/www/html/[...]/class.phpmailer.php on line 3040

所以我偶然将 class.phpmailer.php 的代码变成了这样:

/**
     * Clear queued addresses of given kind.
     * @access protected
     * @param string $kind 'to', 'cc', or 'bcc'
     * @return void
     */
    protected function clearQueuedAddresses($kind)
    {
        //if (version_compare(PHP_VERSION, '5.3.0', '<')) {
            $RecipientsQueue = $this->RecipientsQueue;
            foreach ($RecipientsQueue as $address => $params) {
                if ($params[0] == $kind) {
                    unset($this->RecipientsQueue[$address]);
                }
            }
        //} else {
        //    $this->RecipientsQueue = array_filter(
        //        $this->RecipientsQueue,
        //        function ($params) use ($kind) {
        //            return $params[0] != $kind;
        //        });
        //}
    }

关于php - 我无法在 Elastix 上通过 php 发送电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33613462/

相关文章:

PHPMailer 向错误的收件人发送电子邮件

javascript - 不允许输入类型来选择过期日期

PHP 退出后不加载页面的其余部分;

java - 使用javamail发送邮件时出现问题

python - 如何使用 Python 发送带有 .csv 附件的电子邮件

PHPmailer - 如果附件的变量 $file1 没有值,则无法发送

ssl - phpmailer、requre() 和 include_path 合并

php - 如何将两个函数放在一起

php - Doctrine 获取扩展给定抽象类的所有模型的存储库

.net - 如何在 .NET 中对电子邮件进行数字签名?