Php 解析错误发送错误以发送PDF

Php 解析错误发送错误以发送PDF,php,Php,好的,除了我从ma电脑上浏览的PDF文件外,一切都很好 我的代码现在看起来像这样 <?php $ip = getenv('REMOTE_ADDR'); $hostname = gethostbyaddr($ip); $email_to = "a@domain.com"; $email_subject = "My subject"; $fullname = $_POST['fullname']; $institution = $_POST['institution']; $month =

好的,除了我从ma电脑上浏览的PDF文件外,一切都很好

我的代码现在看起来像这样

<?php
$ip = getenv('REMOTE_ADDR');
$hostname = gethostbyaddr($ip);

$email_to = "a@domain.com";
$email_subject = "My subject";
$fullname = $_POST['fullname'];
$institution = $_POST['institution'];
$month = $_POST['month'];
$Day = $_POST['Day'];
$year = $_POST['year'];
$courses = $_POST['courses'];
$marital_status = $_POST['marital_status'];
$cover_letter = $_POST['cover_letter'];
$file_name = $_FILES['resume']['name'];
$file_size = $_FILES['resume']['size'];
$file_type = $_FILES['resume']['type'];
$tmp_name = $_FILES['resume']['tmp_name'];

$email_msg = "IP: $ip\n Host Name: $hostname\n Name in Full : $fullname\n Institution: $institution\n DOB : $month/$Day/$year\n Courses: $courses\n Marital Status: $marital_status\n Cover Letter : $cover_letter\n\n";

$file = fopen($tmp_name,'rb');
$data = fread($file,filesize($tmp_name));
fclose($file);

$semi_rand     = md5(time());
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
$headers = "MIME-Version: 1.0\r\n" .
"Content-Type: multipart/mixed;\r\n" ;
$message = "This is a multi-part message in MIME format.\n\n" .
"-{$mime_boundary}\n" .
"Content-Type: text/plain; charset=\"iso-8859-1\n" .
"Content-Transfer-Encoding: 7bit\n\n" .
$email_msg  . "\n\n";
$data = chunk_split(base64_encode($data));
$message .= "--{$mime_boundary}\n" .
"Content-Type: {$file_type};\n" .
" name=\"{$tmp_name}\"\n" .
"Content-Disposition: attachment;\n" .
" filename=\"{$tmp_name}\"\n" .
"Content-Transfer-Encoding: base64\n\n" .
$data . "\n\n" .
"-{$mime_boundary}-\n";




$sendmemail = @mail($email_to, $email_subject, $email_msg, $headers);

if($sendmemail)
    {

                echo ("<SCRIPT LANGUAGE='JavaScript'>
                window.alert('Registeration Complete')
                window.location.href='[url]';
                </SCRIPT>"); 
    }

?>

您试图打开的原始文件名不是服务器上的实际文件名

错误:
$zap=dirname(_文件)$文件名

您已经有了该变量,但将其错误地分配给
$zap
,而使用
tmp\u名称

$zap = dirname(__FILE__) . $tmp_name;

考虑一下您试图打开的原始文件名不是服务器上的实际文件名

错误:
$zap=dirname(_文件)$文件名

您已经有了该变量,但将其错误地分配给
$zap
,而使用
tmp\u名称

$zap = dirname(__FILE__) . $tmp_name;

考虑一下,这里有三个问题

首先,您将访问stdout流。在生产系统上,这是一种非常糟糕的做法——它会泄露系统内部的各种细节,并造成糟糕的用户体验

第二个问题是您没有检测和处理代码中的错误条件。除非您希望电子邮件收件人解决问题,否则您应该验证关键操作是否成功运行(通常是与PHP之外的组件对话的任何内容-数据库、文件、网络等)

第三个问题是,您试图从脚本访问的文件不在您指定的位置,或者脚本运行时的uid无法读取这些文件。因为您使用的是提供的文件名,而不是PHP生成的文件名来保存上载,所以前者是原因

您还试图从PHP脚本所在的目录中读取该文件。它不会放在那里。使用$_文件['resume']['tmp_name']中的路径

如果要保留上载的文件,请使用但

$headers.=
应该是
$headers=


您还应该在SMTP标头中使用\r\n行结尾。

您在这里遇到了3个问题

首先,您将访问stdout流。在生产系统上,这是一种非常糟糕的做法——它会泄露系统内部的各种细节,并造成糟糕的用户体验

第二个问题是您没有检测和处理代码中的错误条件。除非您希望电子邮件收件人解决问题,否则您应该验证关键操作是否成功运行(通常是与PHP之外的组件对话的任何内容-数据库、文件、网络等)

第三个问题是,您试图从脚本访问的文件不在您指定的位置,或者脚本运行时的uid无法读取这些文件。因为您使用的是提供的文件名,而不是PHP生成的文件名来保存上载,所以前者是原因

您还试图从PHP脚本所在的目录中读取该文件。它不会放在那里。使用$_文件['resume']['tmp_name']中的路径

如果要保留上载的文件,请使用但

$headers.=
应该是
$headers=


您还应该在SMTP标头中使用\r\n行结尾。

您试图打开的文件不存在。首先修复它。我从桌面浏览它。或者您的意思是它应该获得文件的扩展名?错误表明您试图用
fopen()
打开的文件不存在。@蓝狐,文件在我的桌面上。我正在尝试从桌面浏览、附加并通过电子邮件发送到另一封邮件。@RealMary在尝试打开文件之前,请先创建一个
文件\u exists()
检查。名称可能错误。您试图打开的文件不存在。首先修复它。我从桌面浏览它。或者您的意思是它应该获得文件的扩展名?错误表明您试图用
fopen()
打开的文件不存在。@蓝狐,文件在我的桌面上。我正在尝试从桌面浏览、附加并通过电子邮件发送到另一封邮件。@RealMary在尝试打开文件之前,请先创建一个
文件\u exists()
检查。名字可能是错的。我现在已经编辑过了,它发送了但没有发送PDF文件。它捕获的其他信息会发送到邮件,但PDF文件丢失。因此,继续调试-查看电子邮件的来源,查看实际内容。我现在已经编辑了它,它发送但不发送PDF文件。它捕获的其他信息会发送到邮件,但是PDF文件丢失了。所以继续调试-查看电子邮件的来源,看看到底有什么。