2011-06-20 2 views
0

RMAフォームを作成しようとしていますが、アップロード+メールの添付ファイル以外はすべて動作しています。ウェブフォームでファイルをアップロードしてメールで送信するにはどうすればよいですか?

私がしようとしているのは、顧客にドキュメントのスキャンされたコピーをアップロードさせることです(jpeg、gif、png、pdf、word形式など)。私は様々なファイルのアップロード方法についていますが、どこから始めるべきか分かりません。

これは、これまで

$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._%-][email protected][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 = "[email protected]"; 
$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); 


?> 

だから基本的に、私はファイルのアップロードセクション、あるいはその使用方法をどこに配置するかわからないんだけど、私のPHPコードです。私はファイルブラウザとすべてを持ってきて、そのプロセスをPHP側にリンクする方法を知らないし、アップロードした後に電子メールに添付する作業用のhtmlデザインを持っています。

皆様のご協力のほどよろしくお願い申し上げます。

+0

RTFM? http://php.net/manual/en/features.file-upload.post-method.php –

答えて

1

私はそうではありません。

私の会社は毎月何百万もの電子メールを送信し、電子メールの添付ファイルは私たちが持っている最大の問題です。要するに、あなたは物事を添付し、あなたは重要な要素によってスパムのためにブロックされたり、旗を立てる可能性を高めます。

代わりにリンクを送信してください。ユーザーがクリックしてダウンロードを開始できる、リンク内に一意のハッシュ識別子を使用します。それは、より小さな電子メール、より多くのスパムに優しい配信、あなたのための簡単なコーディング、そしてより幸せな顧客になります。

+0

大丈夫ですが、どうすればいいですか?私はファイルをサーバーにアップロードする方法を知っていますが、ハッシュ識別子が得られる限り、残念なことにヒントはありません。 – Fahad

+0

あなたが使用できる固有の識別子があります。データベースにRMA IDがありますか?もしそうなら、その番号をbase64でエンコードしてファイル名として保存することができます。または、ランダムに生成されたファイル名をRMAデータベースレコードに保存し、そのようにリンクを構築します。それにもかかわらず、ファイルを扱うページにヒットするか、ブラウザに何をダウンロードするかを指示するファイルを直接指し示す、一意の非シーケンシャルIDが必要です。私は個人的に、$ _REQUEST varsに基づいてファイルを提供するdownload.phpページを介してユーザーをルーティングします。 – bpeterson76

+0

私はそれを打つつもりです。私はあなたが提案したやり方は、ファイル名がRMA番号と一致するように強制することだと思います。それは常に一意になりますから、受信者への電子メールではURL + $ rmanumberをエコーし​​ます。あなたの助けてくれてありがとう – Fahad

関連する問題