首页 文章

Plesk服务器(Centos)上的SMTP配置

提问于
浏览
1

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

警告:require_once():open_basedir限制生效 . 文件(/opt/plesk/php/7.1/share/pear/PEAR.php)不在/ var /中的允许路径中:(/ var / www / vhosts / necotec.es /:/ tmp /) www / vhosts / necotec.es / httpdocs / prueba_smtp / Mail.php第48行警告:require_once(/opt/plesk/php/7.1/share/pear/PEAR.php):无法打开流:/中不允许操作第48行的var / www / vhosts / necotec.es / httpdocs / prueba_smtp / Mail.php致命错误:require_once():无法打开所需的'PEAR.php'(include_path =' . :/ opt / plesk / php / 7.1 /第48行/var/www/vhosts/necotec.es/httpdocs/prueba_smtp/Mail.php中的share / pear')

我不知道是否找不到或者是一个permision问题,默认文件在此服务器中需要644个permisions . 任何线索都会有所帮助 .

1 回答

  • 0

    open_basedir限制生效

    错误意味着某些文件或脚本位于允许的目录之外 . 在您的情况下,此文件是 /opt/plesk/php/7.1/share/pear/PEAR.php .

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

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

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

    • 使用SSH登录服务器

    • 去了域文档根目录: # cd /var/www/vhosts/example.com/httpdocs/

    • 运行从github获取的命令: # composer require phpmailer/phpmailer

    • 因此"vendor"文件夹出现在"httpdocs"文件夹中 .

    • 基于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!";
    }
    ?>
    

    它假定使用本地邮件服务器并且邮件服务器使用Default Plesk自签名证书: Plesk > Tools & Settings > SSL/TLS Certificates > Certificate for securing mail

相关问题