Plesk Server(Centos)上的SMTP配置

时间:2018-08-02 15:22:35

标签: smtp php-7 plesk

我正在尝试编写代码以通过SMTP发送简单邮件,我读到我必须使用类phpmailer并在服务器根目录上安装pear引擎,我下载了一些其他文件来验证SMTP但总是需要更多我没有或无法收费的文件。实际上,PHP错误显示如下:

  

警告:require_once():open_basedir限制有效。文件(/opt/plesk/php/7.1/share/pear/PEAR.php)不在允许的路径内:(/var/www/vhosts/necotec.es/:/tmp/)第48行的www / vhosts / necotec.es / httpdocs / prueba_smtp / Mail.php

     

警告:require_once(/opt/plesk/php/7.1/share/pear/PEAR.php):无法打开流:/var/www/vhosts/necotec.es/httpdocs/prueba_smtp/Mail中不允许进行该操作.php,第48行

     

严重错误:require_once():无法在/var/www/vhosts/necotec.es/中打开所需的'PEAR.php'(include_path ='。:/ opt / plesk / php / 7.1 / share / pear')第48行的httpdocs / prueba_smtp / Mail.php

我不知道是否找不到或存在渗透问题,默认情况下文件在此服务器上占644位。任何线索都将对您有所帮助。

1 个答案:

答案 0 :(得分:0)

  

open_basedir限制有效

错误表示某些文件或脚本位于允许的目录之外。 在您的情况下,该文件为/opt/plesk/php/7.1/share/pear/PEAR.php

在Plesk中,您可以禁用open_basedir(不安全):域> example.com> PHP设置,并将open_basedir设置为none

另一种方法(更安全)是将open_basedir设置为{WEBSPACEROOT}{/}{:}{TMP}{/}:/opt/plesk/php/7.1

我可以使用以下步骤在测试服务器(Plesk 17.5-17.8)上配置PHPMailer:

  1. 使用SSH登录到服务器
  2. 进入域文档根目录:# cd /var/www/vhosts/example.com/httpdocs/
  3. 运行从github获得的命令:# composer require phpmailer/phpmailer
  4. 结果,“ vendor”文件夹出现在“ httpdocs”文件夹中。
  5. 基于0-send-email-plesk.php创建了一个testmail.php文件:

    <?php
    
    use PHPMailer\PHPMailer\PHPMailer;
    use PHPMailer\PHPMailer\Exception;
    
    //Load Composer's autoloader
    require 'vendor/autoload.php';
    $mail = new PHPMailer;
    $mail->isSMTP();
    $mail->SMTPDebug = 2; # 0 off, 1 client, 2 client y server
    $mail->CharSet  = 'UTF-8';
    $mail->Host = 'localhost';
    $mail->Port = 25;
    $mail->SMTPSecure = 'tls'; # SSL is deprecated
    $mail->SMTPOptions = array (
        'ssl' => array(
            'verify_peer'  => true,
            'verify_depth' => 3,
            'allow_self_signed' => true,
            'peer_name' => 'Plesk',
        )
    );
    $mail->SMTPAuth = true;
    $mail->Username = 'sender@example.com';
    $mail->Password = 'password';
    $mail->setFrom('sender@example.com', 'Name Surname');
    $mail->addAddress('recipient@domain.tld', 'Name Surname');
    $mail->Subject = 'Email subject';
    $mail->msgHTML('Email content with <strong>html</strong>');
    if (!$mail->send()) {
        echo "Mailer Error: " . $mail->ErrorInfo;
    } else {
        echo "Message sent!";
    }
    ?>
    

    假定已使用本地邮件服务器,邮件服务器使用了默认的Plesk自签名证书: Plesk>工具和设置> SSL / TLS证书>用于保护邮件的证书

    < / li>