【问题标题】:Sending emails automatically at the click of a button单击按钮自动发送电子邮件
【发布时间】:2011-08-04 17:56:57
【问题描述】:

我正在设计一个紧急响应页面,我们需要的功能之一是能够单击一个按钮(例如“向大使馆发送详细信息”),然后将自动生成的电子邮件发送给预期的收件人(@ 987654321@) 无需进入 Microsoft Outlook 并单击发送。有没有办法做到这一点?

我知道的唯一方法是<a href='mailto:example@test.com'>,但这会在 Outlook 中打开电子邮件,我真的需要它完全自动化。

【问题讨论】:

  • 既然你提到了PHP,那就用PHP来做吧,你描述的是一个网页上的Outlook可以识别的mailto链接,而不是发出电子邮件/文本/通知的PHP代码。

标签: php email mailto


【解决方案1】:

这样的事情可以作为一个起点:

<form action="" method="post">
    <input type="submit" value="Send details to embassy" />
    <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.';
}

?>

更新

这可以用作Javascript函数来调用mail.php页面并发送电子邮件而无需重新加载页面。

function sendemail()
{
    var url = '/mail.php';

    new Ajax.Request(url,{
            onComplete:function(transport)
            {
                var feedback = transport.responseText.evalJSON();
                if(feedback.result==0)
                    alert('There was a problem sending the email, please try again.');
            }
        });

}

你需要这个方法的原型:http://www.prototypejs.org/api/ajax/request

我没有对此进行测试,但希望它应该是正确的。

【讨论】:

  • 谢谢!我为此工作了大约 3 天!
【解决方案2】:

PHP 支持使用mail function 发送电子邮件。您可以在 PHP 文档中找到示例。 (见链接)

PHP 文档中的示例:

<?php
// The message
$message = "Line 1\nLine 2\nLine 3";

// In case any of our lines are larger than 70 characters, we should use wordwrap()
$message = wordwrap($message, 70);

// Send
mail('caffeinated@example.com', 'My Subject', $message);
?> 

【讨论】:

  • 感谢 Rhapsody,这很好用。我现在遇到的问题是,当我在 mail.php 文件中使用此方法并提交表单时,页面会重定向。我需要我发送电子邮件的页面完全不受影响,因为它上面有重要的秒表,如果重定向,这些将被重置。
  • 可能值得考虑对 mail.php 脚本进行 Ajax 调用,这将停止页面加载,但运行脚本。
  • 嗨,gmadd,你能发一个这样的例子吗?我还没有机会详细研究 AJAX,所以我不知道如何使用它。谢谢
  • @user683526 我已经用一些未经测试的 Ajax 代码更新了我的答案。
猜你喜欢
  • 2012-03-10
  • 2014-12-28
  • 1970-01-01
  • 1970-01-01
  • 2013-12-31
  • 1970-01-01
  • 2016-05-21
  • 2011-11-14
  • 1970-01-01
相关资源
最近更新 更多