用PHP发送带有附件的邮件

用PHP发送带有附件的邮件,php,html,email,email-attachments,Php,Html,Email,Email Attachments,以下是我发送带有附件的电子邮件的代码: if (isset($_POST['submit'])) { @$name=stripslashes($_POST['name']); @$last_name=stripslashes($_POST['last_name']); @$phone=stripslashes($_POST['phone']); @$address=stripslashes($_POST['address']); @$email=stripslashes($_POST['ema

以下是我发送带有附件的电子邮件的代码:

if (isset($_POST['submit'])) {

@$name=stripslashes($_POST['name']);
@$last_name=stripslashes($_POST['last_name']);
@$phone=stripslashes($_POST['phone']);
@$address=stripslashes($_POST['address']);
@$email=stripslashes($_POST['email']);
@$age=stripslashes($_POST['age']);
@$education=stripslashes($_POST['education']);
@$position=stripslashes($_POST['position']);
@$s_date=stripslashes($_POST['s_date']);
@$message=stripslashes($_POST['message']);





@$attachment=$_FILES['attachment']['name'];
$to="m.khaleghi@mitoconnect.com"; 
$subject="Job Application";
$max_file_size = 1000; 
$formats = array('pdf','docx'); 


if ( empty($name)  ){   

        sw_alert('warning','Please Fill All Fields'); 

}

$hash = md5(uniqid(time()));
$header = "";  

$header .= "MIME-Version: 1.0\n";  
$header .= "Content-Type: multipart/mixed; boundary=\"".$hash."\"\n\n";  
$header .= "This is a multi-part message in MIME format.\n";  

$header .= "--".$hash."\n";  
$header .= "Content-type: text/html; charset=utf-8\n";  
$header .= "Content-Transfer-Encoding: 7bit\n\n";  


$header .= "$name.\n"; 
$header .= "$last_name.\n";
$header .= "$phone.\n"; 
$header .= "$address.\n";
$header .= "$email.\n"; 
$header .= "$age.\n";
$header .= "$education.\n";
$header .= "$position.\n"; 
$header .= "$s_date.\n"; 
$header .= "$message.\n"; 



if (!empty ($attachment)) { 
$tmp_name = $_FILES['attachment']['tmp_name'];
$type = $_FILES['attachment']['type'];
$file_name = $_FILES['attachment']['name'];
$file_size = $_FILES['attachment']['size']/1024;

if ($file_size>$max_file_size) {


sw_alert('warning','File size is too large'); 
die("<meta http-equiv=\"content-Type\" content=\"text/html; charset=utf-8\">
<meta http-equiv='refresh' content='2;url=".$_SERVER['HTTP_REFERER']."' />
 ");

   }


@$ext = end(explode('.',$file_name));
if(!in_array($ext,$formats)){


sw_alert('warning','File type is not allowed'); 

die("<meta http-equiv=\"content-Type\" content=\"text/html; charset=utf-8\">
<meta http-equiv='refresh' content='2;url=".$_SERVER['HTTP_REFERER']."' />
 ");

}


$content = chunk_split(base64_encode(file_get_contents($tmp_name)));  
$header .= "--".$hash."\n";  
$header .= "Content-Type: application/octet-stream; 
name=\"".$file_name."\"\n";  
$header .= "Content-Transfer-Encoding: base64\n";  
$header .= "Content-Disposition: attachment; 
filename=\"".$file_name."\"\n\n";  
$header .= $content."\n\n";  
}  

$sendemail = @mail($to,$subject,null,$header); 

if($sendemail)  
{  
sw_alert('success','Your application has been sent'); 
}  
else  
{  
sw_alert('warning','Something Wrong , Please try again'); 
}  


}
if(isset($\u POST['submit'])){
@$name=stripslashes($_POST['name']);
@$last_name=stripslashes($_POST['last_name']);
@$phone=stripslashes($_POST['phone']);
@$address=stripslashes($_POST['address']);
@$email=stripslashes($_POST['email']);
@$age=stripslashes($_POST['age']);
@$education=stripslashes($_POST['education']);
@$position=stripsalashes($_POST['position']);
@$s_date=stripslashes($u POST['s_date']);
@$message=stripslashes($_POST['message']);
@$attachment=$_文件['attachment']['name'];
$to=“m。khaleghi@mitoconnect.com"; 
$subject=“职务申请”;
$max_file_size=1000;
$formats=array('pdf','docx');
if(空($name)){
sw_警报(“警告”,“请填写所有字段”);
}
$hash=md5(uniqid(time());
$header=“”;
$header.=“MIME版本:1.0\n”;
$header.=“内容类型:多部分/混合;边界=\”.$hash.\“\n\n”;
$header.=“这是MIME格式的多部分消息。\n”;
$header.=“-”$hash.\n”;
$header.=“内容类型:text/html;字符集=utf-8\n”;
$header.=“内容传输编码:7bit\n\n”;
$header.=“$name.\n”;
$header.=“$last\u name.\n”;
$header.=“$phone.\n”;
$header.=“$address.\n”;
$header.=“$email.\n”;
$header.=“$age.\n”;
$header.=“$education.\n”;
$header.=“$position.\n”;
$header.=“$s_日期。\n”;
$header.=“$message.\n”;
如果(!empty($attachment)){
$tmp_name=$_文件['attachment']['tmp_name'];
$type=$_文件['attachment']['type'];
$file_name=$_FILES['attachment']['name'];
$file\u size=$\u FILES['attachment']['size']/1024;
如果($file\u size>$max\u file\u size){
sw_警报(“警告”,“文件大小太大”);
死(”
");
}
@$ext=end(分解('.',$file_name));
if(!in_数组($ext,$formats)){
sw_警报(“警告”,“不允许文件类型”);
死(”
");
}
$content=chunk\u split(base64\u编码(file\u get\u contents($tmp\u name));
$header.=“-”$hash.\n”;
$header.=“内容类型:应用程序/八位字节流;
名称=\“”.$file\u name.\“\n”;
$header.=“内容传输编码:base64\n”;
$header.=“内容配置:附件;
文件名=\“”.$file\u name.\“\n\n”;
$header.=$content.“\n\n”;
}  
$sendmail=@mail($to,$subject,null,$header);
如果($sendmail)
{  
sw_警报(“成功”,“您的申请已发送”);
}  
其他的
{  
sw_警报(“警告”,“出现问题,请重试”);
}  
}
一切就绪,工作正常,但我在另一边有个问题!当我收到电子邮件时,所有信息显示在一行中:

姓名姓氏电话地址电子邮件年龄教育职位开始日期信息

但我希望他们是这样的:

名称
姓氏
电话
地址
电子邮件
年龄
教育
位置
开始日期
消息

我尝试过使用“\n”和“\r\n”的不同方法,但都不起作用。有人有解决方案吗?

“我尝试过使用“\n”和“\r\n”的不同方法,但都不起作用。有人有解决方案吗?”

这是因为您希望以HTML格式发送电子邮件

$header .= "Content-type: text/html; charset=utf-8\n";
新行需要使用

旁注:

我注意到您使用了
$\u服务器['HTTP\u REFERER']
。这并不总是可靠的

阅读以下主题:


使用

而不是
\n
,因为您的内容类型是text/html

html压缩空白(即换行符),但您可以只更改为纯文本消息(保留空白),如下所示:

$header .= "Content-type: text/plain; charset=utf-8\n";  
显然,您以该格式放置的任何HTML标记都不会以这种方式呈现


顺便说一句,您的代码可能容易受到标头注入攻击,并且您无法安全地处理上载。请参阅有关安全处理文件上载的PHP文档,或者使用一个为您处理所有这些内容的库,例如您标记了此问题的库。

待处理的编辑需要添加

标记;被拒绝。使用PHPMailer,这堆乱七八糟的东西看起来有点像样,可读性更高,也更容易传递给预期的收件人。谢谢大家,我已经将类型更改为text/plain,并且成功了。谢谢,很好Luck@M.Bourne勾选其中一个答案,并勾选旁边的勾号,将其设置为答案<代码>:-)