PHP Perl-mail/mime.PHP无法打开流

PHP Perl-mail/mime.PHP无法打开流,php,php-5.5,Php,Php 5.5,我需要一些帮助如何使用Perl发送电子邮件 当我尝试运行此代码时: require_once ("Mail.php"); require_once ("Mail/mime.php"); $text = "test"; $html_message = '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> &

我需要一些帮助如何使用Perl发送电子邮件

当我尝试运行此代码时:

require_once ("Mail.php");
require_once ("Mail/mime.php");

$text = "test";
$html_message = '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>....</title>
</head>
<body>
    <p>...</p>
</body>
</html>';

$headers["From"] = 'sample@sampel.com';
$headers["To"] = "sample@sampel.com"; 
$headers["Subject"] = "Sample SMTP PERL";
$headers["Content-Type"] = 'text/html; charset=UTF-8';
$headers["Content-Transfer-Encoding"]= "8bit";

$mime = new Mail_mime; 
$mime->setTXTBody($text); 
$mime->setHTMLBody($html_message); 
$mimeparams=array(); 

// It refused to change to UTF-8 even if the header was set to this, after adding the following lines it worked.

$mimeparams['text_encoding']="8bit"; 
$mimeparams['text_charset']="UTF-8"; 
$mimeparams['html_charset']="UTF-8"; 
$mimeparams['head_charset']="UTF-8"; 

$mimeparams["debug"] = "True"; 

$body = $mime->get($mimeparams); 
$headers = $mime->headers($headers); 
$page_content = "Mail now."; 

// SMTP server name, port, user/passwd 
$smtpinfo["host"] = "xxx;
$smtpinfo["port"] = "465";
$smtpinfo["auth"] = true;
$smtpinfo["username"] = "sample@sample.com";
$smtpinfo["password"] = "xxx";
$smtpinfo["debug"] = "True"; 


// Create the mail object using the Mail::factory method
$mail=& Mail::factory("smtp", $smtpinfo);

$mail->send($to, $headers, $body));

我不知道如何解决这个问题。请帮助。

首先,这是php,不是Perl。如果您通过一个perl解释器将其输入,您将得到各种各样的错误,这些错误与您所得到的非常不同。(抱歉,如果这听起来意味着……我希望它能提供信息。)

其次,错误消息非常有用。它说什么是允许的,什么是不允许的

(include_path='。:/usr/php/54/usr/lib64:/usr/php/54/usr/share/pear:/usr/lib/php/pear')

通常,这是因为路径或文件系统权限无效

要排除文件系统权限是罪魁祸首,您可以检查是否允许每个人读取该文件(
cd path/To/Mail;chmod a+r mime.php,linux中的
)。如果“运行web服务器的用户”(通常是非特权用户)无法读取文件(或者没有对邮件文件夹的执行权限,可以通过
cd path/to/Mail;cd..;chmod a+x Mail
)授予该权限),则无法导入文件Mail/mime.php(或必需)。根据环境的不同,文件系统权限可能会导致这些问题(web主机配置不稳定,在许多linux发行版上使用默认的
umask
时自行滚动,等等)。这是第一个看的地方。执行权限不仅在该文件夹上是必需的,而且在文件系统树的任何位置都是必需的

include_路径告诉您在哪里查找文件。开头的“.”表示“当前目录”。有可能Mail.php没有抛出错误是因为有一些Mail.php可用,而不是您认为的

许多人建议总是使用绝对路径而不是相对路径(就像你的require_一样),以避免意外和意外行为

这在很大程度上取决于Mail.php和Mail/mime.php在目录结构中相对于php脚本的位置。php脚本的父文件夹是“.”。您需要确保Mail.php和Mail/mime.php的路径与之相关。例如,如果您有:

/path/to/my/web/stuff/admin/this.php
/path/to/my/web/stuff/Mail.php
/path/to/my/web/stuff/Mail/mime.php
在this.php中,您必须为require_once语句引用“../Mail.php”和“../Mail/mime.php”,因为这些文件位于this.php所在的一个目录中


基本上,如果没有关于文件权限和目录结构的信息,我们就无法提供什么。我希望这篇关于共同问题的综述会有所帮助。如果您可以更新您的问题,以包含有关目录结构的信息,并确认权限是正确的,其他人可能可以帮助您解决此问题。

首先,这是php,而不是Perl。如果您通过一个perl解释器将其输入,您将得到各种各样的错误,这些错误与您所得到的非常不同。(抱歉,如果这听起来意味着……我希望它能提供信息。)

其次,错误消息非常有用。它说什么是允许的,什么是不允许的

(include_path='。:/usr/php/54/usr/lib64:/usr/php/54/usr/share/pear:/usr/lib/php/pear')

通常,这是因为路径或文件系统权限无效

要排除文件系统权限是罪魁祸首,您可以检查是否允许每个人读取该文件(
cd path/To/Mail;chmod a+r mime.php,linux中的
)。如果“运行web服务器的用户”(通常是非特权用户)无法读取文件(或者没有对邮件文件夹的执行权限,可以通过
cd path/to/Mail;cd..;chmod a+x Mail
)授予该权限),则无法导入文件Mail/mime.php(或必需)。根据环境的不同,文件系统权限可能会导致这些问题(web主机配置不稳定,在许多linux发行版上使用默认的
umask
时自行滚动,等等)。这是第一个看的地方。执行权限不仅在该文件夹上是必需的,而且在文件系统树的任何位置都是必需的

include_路径告诉您在哪里查找文件。开头的“.”表示“当前目录”。有可能Mail.php没有抛出错误是因为有一些Mail.php可用,而不是您认为的

许多人建议总是使用绝对路径而不是相对路径(就像你的require_一样),以避免意外和意外行为

这在很大程度上取决于Mail.php和Mail/mime.php在目录结构中相对于php脚本的位置。php脚本的父文件夹是“.”。您需要确保Mail.php和Mail/mime.php的路径与之相关。例如,如果您有:

/path/to/my/web/stuff/admin/this.php
/path/to/my/web/stuff/Mail.php
/path/to/my/web/stuff/Mail/mime.php
在this.php中,您必须为require_once语句引用“../Mail.php”和“../Mail/mime.php”,因为这些文件位于this.php所在的一个目录中


基本上,如果没有关于文件权限和目录结构的信息,我们就无法提供什么。我希望这篇关于共同问题的综述会有所帮助。如果您可以更新您的问题,以包括有关目录结构的信息和权限正确性的确认,其他人可能可以帮助您解决此问题。

确保您已安装所需的PEAR软件包

Mail.php是“Mail”的一部分,但mime.php是“Mail\u mime”的一部分


确保已安装所需的PEAR软件包

Mail.php是“Mail”的一部分,但mime.php是“Mail\u mime”的一部分

pear install Mail Mail_Mime