我的联系表格有一些问题。我已经尝试了几种解决方案并且一直在阅读Stack Overflow ...但是由于每个代码都不同,我需要一些独特的解决方案。它应该很简单。
这是我的“表单页面”:
<form class="contact_form" action="send_form_email.php" method="post" name="contact_form">
<ul>
<li>
<label for="name">Namn:</label>
<input type="text" name="name" required />
</li>
<li>
<label for="email">E-post:</label>
<input type="text" name="email" required />
</li>
<li>
<label for="phone">Tfn:</label>
<input type="text" name="phone" required />
</li>
<li>
<label for="message">Meddelande:</label>
<textarea name="message" cols="40" rows="6" required ></textarea>
</li>
<li>
<button class="submit" type="submit">Skicka</button>
</li>
</ul>
</form>
今天我使用post函数在同一页面上发布“成功消息”。但我无法使用任何尝试的解决方案。验证已经在CSS3中构建。我需要的是发送一封电子邮件,其中包含(已生效,但邮件和验证会在新页面上弹出),并会在同一页面上显示一条消息(此无论我尝试什么都行不通。。
帮助?
答案 0 :(得分:0)
mail()
的Windows实现在许多方面与Unix实现有所不同。首先,它不使用本地二进制文件来编写消息,而只是在直接套接字上运行,这意味着需要在网络套接字(可以在本地主机或远程机器上)上侦听MTA。
其次,像From:, Cc:, Bcc: and Date:
这样的自定义标头首先不是由MTA解释的,而是由PHP解析的。
因此,to参数不应该是“ Something ”形式的地址。与MTA通话时,mail命令可能无法正确解析。
注意的: 值得注意的是mail()函数不适合循环中的大量电子邮件。此功能为每封电子邮件打开和关闭SMTP套接字,效率不高。 要发送大量电子邮件,请参阅»PEAR :: Mail和»PEAR :: Mail_Queue包。
注意的: 以下RFC可能很有用:»RFC 1896,»RFC 2045,»RFC 2046,»RFC 2047,»RFC 2048,»RFC 2049和»RFC 2822。
您可以在正确创建标题时编写干净的PHP代码。首先,构建一个数组中所有头的列表。然后,用“\ r \ n”字符粘贴它们。
此代码现在看起来干净而且直截了当。 (只需将其与您的代码进行比较)
<?php
$headers = array();
$headers[] = "MIME-Version: 1.0";
$headers[] = "Content-type: text/plain; charset=iso-8859-1";
$headers[] = "From: Sender Name <sender@domain.com>";
$headers[] = "Bcc: JJ Chong <bcc@domain2.com>";
$headers[] = "Reply-To: Recipient Name <receiver@domain3.com>";
$headers[] = "Subject: {$subject}";
$headers[] = "X-Mailer: PHP/".phpversion();
mail($to, $subject, $email, implode("\r\n", $headers));
?>
正如其他人所说,好的,笔记;在执行以下操作时,可以轻松利用“附加标头”参数:
<?php
mail( $_POST['to'], $_POST['subject'], $_POST['message'], 'Reply-to: '.$_POST['from']."\r\n" );
?>
解决此问题的一种简单方法是从标题字符串中删除CRLF,如下所示:
<?php
$_POST['from'] = str_replace( "\r\n", '', $_POST['from'] );
?>
这样,额外数据将成为前一个标题的一部分。
还有imap_mail
用于发送电子邮件。
此链接非常有用:http://php.net/manual/en/function.imap-mail.php
答案 1 :(得分:0)
根据您在PHP中处理帖子的方式,您的问题有多种解决方案。
对于纯PHP / HTML,我的解决方案是,
看起来像那样
send_form_email.php
if ( some_error )
$_SESSION['msg'] = 'Some error message';
else
$_SESSION['msg'] = 'Success !!';
header('Location: http://www.example.com/');
some_other_file.php
if (isset($_SESSION['msg']))
echo $_SESSION['msg']; // or add it to a variable for late use in your HTML
另一种解决方案是使用Ajax将表单发送到您的php文件,然后将您文件中的响应(消息)显示在HTLM页面的块中。