当前位置: 首页 > 面试题库 >

使用相同的脚本通过html表单从PHP发送电子邮件

艾浩广
2023-03-14
问题内容

当用户完成HTML表单的填写后,我想通过PHP发送电子邮件,然后通过电子邮件从表单中发送信息。我想从显示具有表单的网页的同一脚本中执行此操作。

我找到了此代码,但是邮件未发送。

<?php

if (isset($_POST['submit'])) {
    $to = $_POST['email']; 
    $subject = $_POST['name'];
    $message = getRequestURI();
    $from = "zenphoto@example.com";
    $headers = "From:" . $from;

    if (mail($to, $subject, $message, $headers)) {
        echo "Mail Sent.";
    }
    else {
        echo "failed";
    }
}

?>

用PHP发送电子邮件的代码是什么?


问题答案:

编辑(#1)

如果我理解正确,那么您希望将所有内容都放在一个页面中并从同一页面执行。

您可以使用下面的代码从单个页面发送邮件,例如index.phpcontact.php

此答案与我的原始答案之间的唯一区别是<form action="" method="post">操作保留为空白。

最好header('Location: thank_you.php');不要echo在PHP处理程序中使用,之后再将用户重定向到另一个页面。

将下面的整个代码复制到一个文件中。

<?php 
if(isset($_POST['submit'])){
    $to = "email@example.com"; // this is your Email address
    $from = $_POST['email']; // this is the sender's Email address
    $first_name = $_POST['first_name'];
    $last_name = $_POST['last_name'];
    $subject = "Form submission";
    $subject2 = "Copy of your form submission";
    $message = $first_name . " " . $last_name . " wrote the following:" . "\n\n" . $_POST['message'];
    $message2 = "Here is a copy of your message " . $first_name . "\n\n" . $_POST['message'];

    $headers = "From:" . $from;
    $headers2 = "From:" . $to;
    mail($to,$subject,$message,$headers);
    mail($from,$subject2,$message2,$headers2); // sends a copy of the message to the sender
    echo "Mail Sent. Thank you " . $first_name . ", we will contact you shortly.";
    // You can also use header('Location: thank_you.php'); to redirect to another page.
    }
?>

<!DOCTYPE html>
<head>
<title>Form submission</title>
</head>
<body>

<form action="" method="post">
First Name: <input type="text" name="first_name"><br>
Last Name: <input type="text" name="last_name"><br>
Email: <input type="text" name="email"><br>
Message:<br><textarea rows="5" name="message" cols="30"></textarea><br>
<input type="submit" name="submit" value="Submit">
</form>

</body>
</html>

原始答案

我不太确定问题是什么,但给人的印象是,该消息的副本将发送给填写表格的人。

这是HTML表单和PHP处理程序的经过测试/有效的副本。这使用了PHP mail()函数。

PHP处理程序还将把消息的副本发送给填写表格的人。

//如果您不打算使用它,则可以在一行代码前使用两个正斜杠。

例如: // $subject2 = "Copy of your form submission";将不执行。

HTML格式:

<!DOCTYPE html>
<head>
<title>Form submission</title>
</head>
<body>

<form action="mail_handler.php" method="post">
First Name: <input type="text" name="first_name"><br>
Last Name: <input type="text" name="last_name"><br>
Email: <input type="text" name="email"><br>
Message:<br><textarea rows="5" name="message" cols="30"></textarea><br>
<input type="submit" name="submit" value="Submit">
</form>

</body>
</html>

PHP处理程序(mail_handler.php)

(使用来自HTML表单的信息并发送电子邮件)

<?php 
if(isset($_POST['submit'])){
    $to = "email@example.com"; // this is your Email address
    $from = $_POST['email']; // this is the sender's Email address
    $first_name = $_POST['first_name'];
    $last_name = $_POST['last_name'];
    $subject = "Form submission";
    $subject2 = "Copy of your form submission";
    $message = $first_name . " " . $last_name . " wrote the following:" . "\n\n" . $_POST['message'];
    $message2 = "Here is a copy of your message " . $first_name . "\n\n" . $_POST['message'];

    $headers = "From:" . $from;
    $headers2 = "From:" . $to;
    mail($to,$subject,$message,$headers);
    mail($from,$subject2,$message2,$headers2); // sends a copy of the message to the sender
    echo "Mail Sent. Thank you " . $first_name . ", we will contact you shortly.";
    // You can also use header('Location: thank_you.php'); to redirect to another page.
    // You cannot use header and echo together. It's one or the other.
    }
?>

以HTML格式发送:

如果希望将邮件作为HTML发送,并且对于这两个实例,则需要使用不同的变量名称创建两组独立的HTML标头。

阅读手册mail(),了解如何以HTML格式发送电子邮件:

  • http://php.net/manual/zh/function.mail.php

脚注:

  • 关于HTML5

您必须使用action属性指定将处理提交的数据的服务的URL。

如在_4.10.1.3_ 下 所述,配置表单以与服务器进行通信

因此,action=""将无法在HTML5中使用。

正确的语法为:

  • action="handler.xxx" 要么
  • action="http://www.example.com/handler.xxx"

请注意,这xxx将是用于处理该过程的文件类型的扩展名。这可能是一个.php.cgi.pl.jsp文件扩展名等。



 类似资料:
  • 问题内容: 如何使用PHP发送带有图片的HTML格式的电子邮件? 我想要一个带有一些设置和HTML输出的页面,该页面通过电子邮件发送到一个地址。我该怎么办? 主要问题是附加文件。我怎样才能做到这一点? 问题答案: 非常简单,将图像保留在服务器上,然后将PHP + CSS发送给它们… 正是这一行告诉邮件发件人和收件人,该电子邮件包含(希望)格式正确的HTML,需要对其进行解释: 这是我获得信息的链接

  • 如何使用PHP发送带有图片的HTML格式的电子邮件? 我想有一个网页与一些设置和HTML输出,通过电子邮件发送到一个地址。我该怎么办? 主要问题是附加文件。我怎么能那样做?

  • 问题内容: 我正在尝试从PHP发送简单的HTML电子邮件。下面的代码仅导致GMail中的空白电子邮件。它还有一个名为“ noname”的空附件,这根本不是我想要的;尽管那可能只是它无法正常工作的症状。 我使用的代码是: 问题答案: 原来关键是编码类型。代替: 我需要使用: 它可能取决于您如何在自己的文本编辑器中保存PHP文件的细节。我没有研究它,但是PHP中的 iconv 函数可能也给我带来了一些

  • 问题内容: 伙计们,谢谢您抽出宝贵的时间看。我正在使用jQuery创建一个非常基本的AJAX联系表单。电子邮件发送了,但是打开电子邮件后没有POST数据,因此我只得到了在PHP脚本中定义的字符串。在我手机的电子邮件客户端上,电子邮件内容的字面意思是“未定义”。我尝试添加不同类型的标头数据无济于事,并且在PHP mail()函数上添加了许多变体。 我非常愿意为简单的AJAX表单采用更简单的解决方案,

  • 我已经建立了一个谷歌表单,我的回复被记录在一个电子表格中。理想情况下,我希望回复也通过电子邮件发送。