我用一个非常简单的 php 电子邮件提交脚本和表单制作了一个 contact.php 文件。脚本和表单在同一个文件中。对于我的生活,我无法让它在提交时发送电子邮件。如果我删除 isset($_POST['submit'] 的 if 语句,那么它当然会在页面加载时自动发送邮件,我确实收到了。但是一旦我将它设置为仅在提交时工作,我没有收到电子邮件。现在我使用的是gmail帐户,但以后不会了。我不是php专家,但从研究来看,这似乎是一个非常简单的脚本。我尝试了许多不同的变体,我现在只想保持简单。我的表单符合 HTML5 标准,并且我在发送前使用 HTML5 进行验证,所以现在我不需要任何类型的验证。我不确定为什么这不会发送。我尝试过不同的标题。我已经尽可能多地搜索了stackoverflow,看看是否有任何解决方案,我已经尝试了几个,但我仍然无法发送这个。
contact.php 代码:
<?php
if(isset($_POST['submit']))
{
$to = 'someone@gmail.com';
$subject = 'Contact Form Submission';
$name = $_POST['name'];
$email = $_POST['email'];
$telephone = $_POST['telephone'];
$website = $_POST['website'];
$message = $_POST['message'];
$header = 'MIME-Version: 1.0' . "\r\n";
$header .= "From: ". $email ."\r\n";
$header .= "Reply-To: ". $email ."\r\n";
$header .= "Content-type: text/html; charset= utf-8 \r\n";
$body = "From: $name\n E-Mail: $email\n Telephone: $telephone\n Website: $website\n
Message:\n $message";
if(mail($to, $subject, $body, $header))
{
echo 'Thank you! Your message has been sent. We will try to contact you within one
business day.';
}
else
{
echo 'There was an error with your submission. Please try again.';
}
}
?>
<form action="contact.php" method="post">
<div>
<label>Name</label>
<input name="name" type="text" placeholder="Full Name" required>
<label>E-mail</label>
<input name="email" type="email" placeholder="someone@somewhere.com" required>
<label>Telephone</label>
<input name="telephone" type="tel" placeholder="xxx-xxx-xxxx" required>
<label>Website (Optional)</label>
<input name="website" type="url" placeholder="http://www.yoursite.com">
</div>
<div>
<label>Message</label>
<textarea name="message" placeholder="Type what you want here" required></textarea>
<input id="submit" name"submit" type="submit" value="Send Message">
</div>
<div class="call">
<span>Or call us at (555) 555-5555</span>
</div>
</form>
我还尝试对表单标签执行操作,因为它从同一个文件调用脚本,并且我尝试使用<?= $_SERVER["PHP_SELF"]; ?>
. 我确信这是我想念的简单的东西,但我真的在浪费时间试图弄清楚这一点。同样,如果我删除检查 $_POST['submit'] 的 if 语句,它确实会发送邮件,所以我知道它会发送。但这就像我的提交输入与脚本不正确,或者其他什么。没有把握。