我正在尝试编写代码以通过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位。任何线索都将对您有所帮助。
答案 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:
# cd /var/www/vhosts/example.com/httpdocs/
# composer require phpmailer/phpmailer
基于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>