单击提交按钮时如何触发邮件功能

时间:2016-02-11 14:36:16

标签: php

我试图让应用程序在点击按钮时发送电子邮件。我尝试使用isset函数来做到这一点。但我的代码不能很好地运作。我如何解决它?

演示如下:

<!-- <button name="sendemail">send</button> -->
<input type="submit"  value="send"/>
<?php 
if(isset($_POST['Submit'])){
?>
<?php

// multiple recipients
// $to  = 'aidan@example.com' . ', ';   
// $to .= 'wez@example.com';
$to="example@outlook.com";
// subject
$subject = 'test01';

// message
$message = '
<html>
<head>
  <title>Birthday Reminders for August</title>
</head>
<body>
  <p>Here are the birthdays upcoming in August!</p>
</body>
</html>
';

$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'To: Mary <mary@example.com>, Kelly <kelly@example.com>' . "\r\n";
$headers .= 'Cc: birthdayarchive@example.com' . "\r\n";



    mail($to, $subject, $message, $headers);
}
?>

3 个答案:

答案 0 :(得分:0)

您需要为name元素设置input属性,并且input元素需要在表单中。此外,$_POST['submit']应为小写以保持一致。

您还应该检查mail()是否已成功发送。 <{1}}将在发送时返回mail(),如果未发送则返回true

只是一个注释,实际发送的邮件将取决于您的托管/服务器,即使它返回false,也不一定意味着邮件已发送。

http://php.net/manual/en/function.mail.php了解true的更多信息。

以下代码应该有效:

mail()

希望这会有所帮助。谢谢!

答案 1 :(得分:0)

点击发送电子邮件按钮

,您可以使用以下代码触发电子邮件
<form action="" method="post">
    <input type="submit" value="Send details to college" />
    <input type="hidden" name="button_pressed" value="1" />
</form>

<?php

if(isset($_POST['button_pressed']))
{
    $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);

    echo 'Email Sent.';
}

?>

答案 2 :(得分:0)

这里有几点需要解决。首先,您的输入按钮不会执行任何操作,因为它不是表单的一部分。因此,您必须使用某种JavaScript或仅使用HTML表单来提交按钮,因此我们可以使用PHP处理它。一个简单的表格如下所示。注意metohd="POST",这允许我们稍后在PHP中从$_POST - 数组中收集信息(默认表单设置为使用GET)。

<form method="POST">
    <input type="submit" name="submit" value="Send!" />
</form>

此表单将通过POST阵列将数据发送到它所放置的同一页面,因此也将PHP放在这里。

其次,您的提交按钮中没有name属性,并且由于PHP使用名称而不是ID(如JavaScript),因此您需要添加此属性。这可以在上面的代码片段中看到。

此外,您永远不会检查邮件是否实际发送过。你永远不应该把任何事情视为理所当然。

<?php 
if (isset($_POST['submit'])) {
    /* add headers, messages and such here */

    // Check if the mail is being sent from the server
    if (mail($to, $subject, $message, $headers)) [
        // Mail was sent! Great!
    } else {
        // It failed sending the mail
    }
}
?>