私が作成したこのフォームを使用すると、ファイルは完全に送信されますが、拡張子は省略されます。私は送信した拡張子を知っていたので、ファイルが破損していないことを確認できましたが、顧客はどの拡張子を受け取っているかを知りません (5 つの可能性があります)。顧客に正しい拡張子のファイルを送信するにはどうすればよいですか。正しい名前も良いですが、必須ではありません。
HTML:
</p>
<title>The Legend Maker - submit a story (test server)</title>
<link href="/CSS/CSS.css" rel="stylesheet" type="text/css">
<div align="center">
<p><span class="linkText"><a href="/index.html">Home</a> <a href="/contact-us.php">Contact Us</a> <a href="/payments.html">Payments</a></span> </p>
<p> </p>
<h2 class="headingText"> </h2>
<h2 class="headingText"> </h2>
<h2 class="headingText"> </h2>
<h2 class="headingText">(for testing purposes)</h2>
<h2 class="headingText">Submit a story test server</h2>
</div>
<form method="post" action="scripts/email.php" enctype="multipart/form-data">
<table width="476" height="468" border="0" cellpadding="0" cellspacing="2">
<tr>
<td width="23%" height="25" class="bodytext"><p align="center">Your Name:</p></td>
<td width="77%"><input name="name" type="text" id="name" size="32"></td>
</tr>
<tr>
<td height="25" class="bodytext"><p align="center">Email Address:</p></td>
<td><input name="email" type="text" id="email" value="you@example.com" size="32"></td>
</tr>
<tr>
<td height="44" class="bodytext"><p align="center">Recipient's Gender:</p></td>
<td><label>
<select name="gender" id="gender">
<option value="male" selected="selected">Male</option>
<option value="female">Female</option>
<option value="other">Other</option>
</select>
</label></td>
</tr>
<tr>
<td height="44" class="bodytext"><p align="center">Recipient's Name:</p> </td>
<td align="left" valign="top"><input name="recipientname" type="text" id="recipientname" value="ex: Jonny" size="32" /></td>
</tr>
<tr>
<td height="44" class="bodytext"><p align="center">Recipient's Interests or Hobbies:</p></td>
<td align="left" valign="top"><textarea name="hobbies" cols="50" rows="6" id="hobbies">ex: horseback riding, biking...</textarea></td>
</tr>
<tr>
<td class="bodytext"><p align="center">Recipient's Age:</p></td>
<td align="left" valign="top"><input name="age" type="text" id="age" size="5" maxlength="3" /></td>
</tr>
<tr>
<td class="bodytext"><p align="center">Other Important Information:</p></td>
<td align="left" valign="top"><textarea name="otherinfo" cols="50" rows="7" id="otherinfo">ex: other things the recipient may enjoy or their favorite superhero
Please specify information you are giving us also:
don't do this: superman
submit it like this: favorite superhero: superman</textarea></td>
</tr>
<tr>
<td class="bodytext"><p align="center">Images You Would Like To Include In Story:</p></td>
<td align="left" valign="top"><label>
<br />
<input type="file" name="file" id="file" />
</label></td>
</tr>
<tr>
<td class="bodytext"><p align="center"> </p></td>
<td align="left" valign="top"><input type="submit" name="Submit" value="Send" /></td>
</tr>
</table>
</form>
PHP:
<?php
require_once '../PHPMailer_5.2.2/class.phpmailer.php';
$name = $_POST['name'] ;
$email = $_POST['email'] ;
$gender = $_POST['gender'] ;
$recipientname = $_POST['recipientname'] ;
$hobbies = $_POST['hobbies'] ;
$age = $_POST['age'] ;
$otherinfo = $_POST['otherinfo'] ;
$file = $_POST['file'] ;
$body = "Name: $name
Email: $email
Gender: $gender
Recipient's name: $recipientname
Hobbies: $hobbies
Age: $age
Other Information: $otherinfo";
$mail = new PHPMailer(true); //defaults to using php "mail()"; the true param means it will throw exceptions on errors, which we need to catch
try {
$mail->AddAddress('***erna@yahoo.com', 'Michael ***');
$mail->SetFrom($email, $name);
$mail->AddReplyTo($email, $name);
$mail->Subject = "Message From Legendmaker Customer: $name";
$mail->Body = $body;
$mail->AddAttachment($_FILES['file']['tmp_name']); // attachment
$mail->Send();
echo "Story Request Sent Successfully</p>\n";
} catch (phpmailerException $e) {
echo $e->errorMessage(); //Pretty error messages from PHPMailer
} catch (Exception $e) {
echo $e->getMessage(); //Boring error messages from anything else!
}
?>