0

对,我是 PHP 和 mySQL 的新手,但我有几个问题希望你们中的一些人能回答,因为这让我很困惑。

(我仍然会尝试在谷歌上阅读更多内容,看看我是否可以在此过程中找到任何答案,所以如果我找到任何答案,我也会在这里发布我自己的答案)

  1. 我想在我的网站上提供反馈表。我正在查看 PHP 电子邮件表单,但我在这里有点困惑——

在 API 上,它说要有人向我发送电子邮件,php 脚本需要输入并发送以下代码:

mail(to,subject,message,headers,parameters)

但是,我意识到这个函数内部没有“from”参数。为什么会这样?在收到这样的反馈请求后,我如何才能找到对方的电子邮件并通过我自己的电子邮件回复他/她?

我还在阅读人们将发件人的电子邮件包含在“标题”参数本身中的部分。如果我将其包含在“标头”参数中,邮件系统将如何收集有发件人的电子邮件?(我问这部分是因为我的虚拟主机在我回复之前提供了自动回复,我希望它能够识别发件人的电子邮件是系统应该自动回复的电子邮件)

在网页上放一个 mailto:email@email.com 链接会更容易吗?

我认为这几乎就是我现在想要找出的所有问题,我有更复杂的问题,但我想我会先尝试解决更简单的问题。

4

5 回答 5

6

查看手册中的 php 邮件

附加标题(可选)

要插入到电子邮件标题末尾的字符串。

这通常用于添加额外的标题(发件人、抄送和密送)。多个额外的标头应该用 CRLF (\r\n) 分隔。

手册中的示例

$to      = 'nobody@example.com';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: webmaster@example.com' . "\r\n" .
           'Reply-To: webmaster@example.com' . "\r\n" .
           'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);

更新:

您还询问了将名称放在发件人地址中的问题。为此,只需将标头中的 From: 更改为WEBMASTER NAME <webmaster@example.com>

于 2012-05-02T14:44:47.963 回答
1

如果你在你的页面上放了一个 mailto 链接,当用户点击它时,它将打开用户的电子邮件客户端,他们可以向你发送电子邮件。缺点是页面上的电子邮件地址很容易被垃圾邮件发送者访问。

如果您使用 PHP 表单,那么您的电子邮件地址将保持隐藏状态 - 它隐藏在代码中。不利的一面是,设置它涉及更多。

正如上面提到的 Set Sail Media,您可以在 headers 参数中指定 From 地址。如果没有设置,那么它将使用网络服务器运行的进程的详细信息(例如 apache@example.com。)这不是最有用的,但通常不是问题。

如果您想知道用户的电子邮件地址是什么,唯一的方法就是在表单中询问他们。你不能自动捡起来。

于 2012-05-02T14:51:40.840 回答
0

邮件功能仅用于通过本地配置或指定的远程邮件服务器向人们“发送”邮件,它不能“接收”邮件,为此您需要其他功能,例如从邮件服务器读取数据,这取决于该邮件服务器。

在网页上放置“mailto”链接更容易,但基本上使用“mail()”,您可以制作他们使用的一个完整的小表单,使您的 Web 服务器充当只能发送邮件的电子邮件客户端(除非你加入高级功能)。

于 2012-05-02T14:46:44.677 回答
0

这是一个基本的表单处理脚本,您可能会觉得很有帮助。

<?php

if ( isset( $_POST ) && count( $_POST ) > 0 ){
    // Form was submitted, process it

    foreach ( $_REQUEST as $k=>$v ){ // Loop through values submitted and add them to a message to send to form owner
        $k = stripslashes( $k );
        $v = stripslashes( $v );
        $message .= "$k: $v\r\n";
    }

    $headers = "From: Name <email@domain.com>\r\n"; // This is the FROM address
    // Uncomment the following line to set From using the value passed to the form
    // $headers = "From: {$_POST['your_name']} <{$_POST['email']}>\r\n"; // This is the FROM address

    $ab = mail( 'recipient_email@domain.com', 'Contact Submission Form', $message, $headers ); // Send the email

    if ( $ab == true ){
        // Message sent!
        echo '<strong>Thank you, your message was received.</strong>';
    }

}

?>

<form action="" method="post" id="contactform">
<label for="your_name">Name:</label>
<input type="text" name="your_name" id="your_name" class="field" value="" />
<label for="email">Email:</label>
<input type="text" name="email" id="email" class="field" value="you@domain.com" />
<label for="phone">Phone:<span>(optional)</span></label>
<input type="text" name="phone" id="phone" class="field" value="(000) 000-0000" />
<label for="message">Message:</label>
<textarea name="message" id="message" class="field textarea" cols="20" rows="5"></textarea>

<input type="submit" value="Send Message" />

</form>
于 2012-05-02T14:47:52.317 回答
0

发送电子邮件的 SMTP 服务器是您的(您的网站)(可以配置为远程服务器)。这就是为什么 From 字段通常取自表单中的文本字段。

于 2012-05-02T14:51:23.777 回答