我已经在许多 php 电子邮件脚本上来回使用这个,甚至购买了 Formtoemailpro (http://formtoemail.com/),现在我将使用这个。我最终确实收到了来自这个脚本(和 f2ep)的一封电子邮件,但它只发送了标签和部分名称和电子邮件地址,而不是任何其他字段。当我检查回声时,它确实知道每个变量应该定义为什么。
我使用dreamhost 作为我的托管计划。我在尝试的每个脚本上都得到了类似的结果——如果有的话,会显示电子邮件中的一个或多个字段。我用来测试的电子邮件是我的个人 gmail 帐户,但我的客户想要使用的电子邮件是他们使用新域/托管设置的电子邮件 - 我相信这是一个谷歌应用程序帐户。
有什么基本的我弄错了吗? 我也对脚本的改进持开放态度。
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;
}
}
?>