Formtoemailpro (http://formtoemail.com/) を購入したこともあり、これを使って多くの php メール スクリプトを行ったり来たりしてきましたが、今のところこれを使用しています。このスクリプト (および f2ep) から 1 通の電子メールを受信しましたが、ラベルと名前の一部と電子メール アドレスのみが送信され、他のフィールドは送信されませんでした。エコーで確認したところ、各変数が何として定義されているかがわかりました。
ホスティングプランとしてdreamhostを使用しています。試したすべてのスクリプトで同様の結果が得られます。電子メールに 1 つ以上のフィールドがあれば表示されます。テストに使用したメールは個人の Gmail アカウントですが、クライアントが使用したいと考えているメールは、新しいドメイン/ホスティングで設定したもので、Google Apps アカウントだと思います。
私が間違っている基本的なことはありますか? また、スクリプトの改善にもオープンです。
html:
<form name="form1" id="form1" method="post" action="formtest.php">
<span class="formtext">
<p>
<label for="nameFirst">First Name:</label>
<input type="text" name="nameFirst" id="nameFirst" />
</p>
<p>
<label for="nameLast">Last Name:</label>
<input type="text" name="nameLast" id="nameLast" />
</p>
<p>
<label for="email">E-mail: </label>
<input type="text" name="email" id="email" />
</p>
<p>
<label for="phone"> Phone:</label>
<input type="text" name="phone" id="phone" />
</p>
<p>
<label for="subject">Reason for contacting us?</label>
<br />
<select name="subject" id="subject">
<option>Request more information</option>
<option>Recommend a project</option>
<option>Suggest a resource</option>
<option>Get us to help a community</option>
</select>
</p>
<p>
<label for="messagebox" class="formtext">Message:</label>
<br>
<textarea name="messagebox" id="messagebox" cols="45" rows="5"></textarea>
</p>
<p>
<input type="submit" name="submit" id="button" value="Send" />
</p>
</span>
</form>
php:
<?php
$to = "foo@example.com";
$subject = $_POST['subject'];
$name = $_POST['nameFirst'].$_POST['nameLast'];
$phone = $_POST['phone'];
$email = $_POST['email'];
$message = $_POST['messagebox'];
if(isset($_POST['submit'])) {
$body = "From: {$name}\n Phone: {$phone}\n E-Mail: {$email}\n Message:\n {$message}";
$headers = "From: ". $name . " <" . $email . ">\r\n";
$headers .= "Reply-To:". $email ."\r\n";
mail($to, $subject, $body, $headers);
// redirect
header('Location: ThankYouContact.html');
}
// Error Checking http://bit.ly/NDhVrm
/* if (@mail($to, $subject, $message)) { //@ suppresses error msg
echo('<p>Mail sent successfully.</p>');
} else {
echo('<p>Mail could not be sent.</p>');
} */
// Function to validate against any email injection attempts
function IsInjected($str)
{
$injections = array('(\n+)',
'(\r+)',
'(\t+)',
'(%0A+)',
'(%0D+)',
'(%08+)',
'(%09+)'
);
$inject = join('|', $injections);
$inject = "/$inject/i";
if(preg_match($inject,$str))
{
return true;
}
else
{
return false;
}
}
?>