Php 如何以web表单上传文件并通过电子邮件发送?
我正在尝试创建一个RMA表单,除了上传+电子邮件附件,我的一切都正常工作 我想做的是让客户上传他们文档的扫描副本(jpeg、gif、png、pdf、word等格式),但我似乎无法启动。我有各种各样的文件上传方法,但我似乎不知道从哪里开始 这是到目前为止我的php代码Php 如何以web表单上传文件并通过电子邮件发送?,php,mysql,html,Php,Mysql,Html,我正在尝试创建一个RMA表单,除了上传+电子邮件附件,我的一切都正常工作 我想做的是让客户上传他们文档的扫描副本(jpeg、gif、png、pdf、word等格式),但我似乎无法启动。我有各种各样的文件上传方法,但我似乎不知道从哪里开始 这是到目前为止我的php代码 $name=$_POST['first'] ." ".$_POST['last']; $email=$_POST['email']; $address=$_POST['street'] ." ". $_POST['city'] ."
$name=$_POST['first'] ." ".$_POST['last'];
$email=$_POST['email'];
$address=$_POST['street'] ." ". $_POST['city'] ."".$_POST['province'] ." ".$_POST['postal'];
$pod=$_POST['pod'];
$sku=$_POST['sku'];
$description=$_POST['description'];
$problem=$_POST['problem'];
$case_id=$_POST['case_id'];
$status=$_POST['status'];
$phone=$_POST['parea'] ."".$_POST['pfirst'] ."".$_POST['plast'];
$tracking=$_POST['tracking'];
$date=$_POST['date'];
$link = mysql_connect('m', 'sk', 's1');
if (!$link)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db(s);
$status = "Pending";
$tracking = "";
$date = date('c');
$case_id = mt_rand(1252,10000);
while( $fetch = mysql_fetch_array( mysql_query("SELECT `case_id` FROM `webform` WHERE `case_id` = $case_id") ) )
{
$case_id = mt_rand(1252,10000);
}
//$error[] = preg_match('/\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i', $_POST['email']) ? '' : 'INVALID EMAIL ADDRESS';
if(!eregi("^[a-z0-9]+([_\\.-][a-z0-9]+)*" ."@"."([a-z0-9]+([\.-][a-z0-9]+)*)+"."\\.[a-z]{2,}"."$",$email )){
$error.="Invalid email address entered";
$errors=1;
}
if($errors==1) echo $error;
else{
$values = array ($name,$phone,$email,$address,$pod,$sku,$description,$problem);
$required = array($name,$phone,$email,$address,$pod,$sku,$description,$problem);
$your_email = "fahad@home.com";
$email_subject = "RMA: ".$case_id;
$email_content = "new message:\n";
foreach($values as $key => $value){
if(in_array($value,$required)){
if ($key != $phone && $key != $address)
$email_content .= $value.' '.$_POST[$value]."\n";
}
}
if(@mail($your_email,$email_subject,$email_content,$case_id)) {
echo 'Request Submitted!<br />';
echo 'RMA:'. $case_id;
} else {
echo 'ERROR!';
}
}
$queries = array ($values, $case_id);
$piece = implode(",",$queries);
mysql_query("INSERT INTO `webform` (`case_id`, `name`, `phone`, `email`, `address`, `pod`, `sku`, `description`, `problem`, `status`, `tracking`, `date_recieved`) VALUES ('$case_id', '$name', '$phone', '$email', '$address', '$pod', '$sku','$description', '$problem', '$status', '$tracking', '$date')")
or die(mysql_error());
mysql_close($link);
?>
$name=$\u POST['first']。”.$\u POST['last'];
$email=$_POST['email'];
$address=$\邮政['street'].“”$_邮政['city']。$邮政['province']。$邮政['postal'];
$pod=$_POST['pod'];
$sku=$_POST['sku'];
$description=$_POST['description'];
$problem=$_POST['problem'];
$case\u id=$\u POST['case\u id'];
$status=$_POST['status'];
$phone=$\u POST['parea']。$\u POST['pfirst']。$\u POST['plast'];
$tracking=$_POST['tracking'];
$date=$_POST['date'];
$link=mysql_connect('m','sk','s1');
如果(!$link)
{
die('无法连接:'.mysql_error());
}
mysql\u选择\u数据库;
$status=“待定”;
$tracking=“”;
$date=日期('c');
$case_id=mt_rand(125210000);
而($fetch=mysql\u fetch\u数组(mysql\u查询(“从`webform`中选择`case\u id``WHERE`case\u id`=$case\u id”))
{
$case_id=mt_rand(125210000);
}
//$error[]=preg\u match('/\b[A-Z0-9.\u%-]+@[A-Z0-9.-]+\[A-Z]{2,4}\b/i',$\u POST['email'])?''无效的电子邮件地址';
如果(!eregi(“^[a-z0-9]+([\\.-][a-z0-9]+)*”。”([a-z0-9]+([\.-][a-z0-9]+)*)+“\\.[a-z]{2,}.”,$email)){
$error.=“输入的电子邮件地址无效”;
$errors=1;
}
如果($errors==1)echo$error;
否则{
$values=数组($name、$phone、$email、$address、$pod、$sku、$description、$problem);
$required=数组($name、$phone、$email、$address、$pod、$sku、$description、$problem);
$your_email=”fahad@home.com";
$email\u subject=“RMA:”.$case\u id;
$email\u content=“新邮件:\n”;
foreach($key=>$value的值){
if(在_数组中($value$required)){
如果($key!=$phone&&$key!=$address)
$email\u content.=$value.'.$\u POST[$value]。“\n”;
}
}
if(@mail($your_email、$email_subject、$email_content、$case_id)){
回显“请求已提交!
”;
回显“RMA:”.$case_id;
}否则{
回声“错误!”;
}
}
$queries=数组($values,$case\u id);
$piece=内爆(“,”,$queries);
mysql_查询(“插入到'webform'('case_id','name','phone','email','address','pod','sku','description','problem','status','tracking','date_received`)值('$case_id','name','phone','email','address','pod','sku','sku','description','problem','status','status','tracking','date等等)。”
或者死(mysql_error());
mysql_close($link);
?>
所以基本上,我不确定文件上传部分放在哪里,甚至不知道如何使用它。我有一个工作的html设计,它带来了文件浏览器和一切,我只是不知道如何链接到php端的过程,然后上传后附加到电子邮件
提前感谢大家的帮助 我只使用这个,它对我很有用 我不会的 我的公司每月发送数百万封电子邮件,电子邮件附件是我们面临的最大问题。底线是,你附加了一些东西,你被屏蔽或标记为垃圾邮件的几率会大大增加
改为发送链接。在链接中使用唯一的散列标识符,用户可以单击该标识符启动下载。它有助于减少电子邮件、更方便地发送垃圾邮件、更容易为您编码,并使客户更快乐。RTFM?好的,听起来不错,但是我该怎么做呢?我知道如何将文件上传到服务器上,但不幸的是,就散列标识符而言,我没有任何线索。可能有一些唯一的标识符可以使用。数据库中是否有RMA id?如果是这样,您可以对该数字进行base64编码并将其保存为您的文件名。或者,将随机生成的文件名保存到RMA数据库记录中,并以这种方式构建链接。不管怎样,您只需要拥有某种独特的、非顺序的id,它可以点击提供文件的页面,或者直接指向文件,告诉浏览器要下载什么。我个人会通过一个download.php页面发送我的用户,然后根据$\u请求变量提供文件。我会试一试。我想我会按照你的建议,强制文件名与RMA编号匹配,因为它总是唯一的,然后在给收件人的电子邮件中,我会让它回显url+$RMAN编号。非常感谢你的帮助