【问题标题】:How do I send an email of the current page using a button?如何使用按钮发送当前页面的电子邮件?
【发布时间】:2015-08-31 11:03:48
【问题描述】:

我正在尝试发送我的 html 页面的电子邮件。这是我到目前为止的代码:

<script language="javascript">
    function emailCurrentPage() {
        window.location.href = "mailto:?subject=" + document.title + "&body=" + encodeURI(document.location);
    }
</script>

<button onclick="emailCurrentPage()">Email page</button>

它发送当前页面的链接,但我希望在电子邮件中显示整个 html 页面。有没有办法做到这一点?

更新和编辑:所以我决定尝试使用 php 来解决这个问题,因为在我看来,使用 javascript 似乎不可能完成。我对php知之甚少。到目前为止,这是我的代码:

<?php

    $to  = 'john@example.com';
    $subject = 'A test email!';

    // To send HTML mail, the Content-type header must be set
    $headers  = 'MIME-Version: 1.0' . "\r\n";
    $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

    // Put your HTML here
    $message = file_get_contents('example.html');

    // Mail it
    mail($to, $subject, $message, $headers);

    echo "Message Sent!"

}
?>

<form action="php/emailPage.php" method="post">
    <input type="submit" name="submit" value="Email Page">
</form>

当我单击按钮时,我得到的只是“消息已发送!”消息,但没有电子邮件。我将“john@example.com”更改为我的电子邮件,但收件箱中没有收到电子邮件。关于问题是什么的任何想法?

【问题讨论】:

  • 没有。并非没有一些服务器端代码。
  • 原始 HTML 或 HTML 电子邮件?
  • 最好的办法是创建一个为用户创建邮件的服务器端函数。
  • 有没有办法使用javascript来完成这个?我知道可以使用像 php 这样的语言,但我希望能够仅使用 javascript 来完成此操作。

标签: javascript php html email xampp


【解决方案1】:

如果您想坚持使用纯 JavaScript,则很难在不打开用户电子邮件客户端的情况下做到这一点。这将是一种糟糕的方法,因为我建议不要使用 javascript:

window.open('mailto:test@example.com?subject=subject&body=body');

这个第三方解决方案更好,你可能想看看:https://medium.com/@mariusc23/send-an-email-using-only-javascript-b53319616782

【讨论】:

  • 如何让正文显示当前的 html 页面?此外,这仅用于测试目的。
【解决方案2】:

您可以使用预先确定的主题和正文打开如上所示的电子邮件客户端。如果您添加一个文本区域,您可以让用户在您的页面中编写电子邮件:

<textarea id="myText">
    User writes stuff here
</textarea>
<button onclick="sendMail(); return false">Send</button>

SendMail 调用你的 JS 脚本,你只需要替换你 window.open 中的第二个词体就可以得到 textarea 文本。这可能会返回 HTML 标记中的 HTML 代码,您也可以将其插入正文而不是 textarea 文本。 (或外层HTML)

document.documentElement.innerHTML


window.open('mailto:test@example.com?subject=subject&body='+escape(document.getElementById('myText').value));

我也找到了这个,但我不知道这是否适合你。 http://www.emailjs.com/

【讨论】:

  • 感谢您的回复,但我正在寻找电子邮件的正文作为整个 html 页面。
  • 不 document.documentElement.outerHTML 像我提到的那样返回所有内容吗?您可能必须自己在 window.open 中添加文档类型,因为这并不意味着我相信。您还可以使用 document.getElementsByTagName('html')[0] 获取 head 标签内的所有内容,然后添加 doctype + html 标签。就像保罗在这里的评论一样:stackoverflow.com/questions/817218/…
  • 它不起作用。无论如何,我认为不可能用 javascript 来完成。所以我决定使用 php 来解决这个问题。如果您对 php 有任何了解,请查看我原始帖子中的更新和编辑部分,看看您是否可以提供帮助。谢谢。
【解决方案3】:

我使用 php 并安装 XAMPP 解决了这个问题。我在 XAMPP 中使用了 apache、mysql 和水星。我按照水银here 的步骤进行操作。我还必须更改 php.ini 文件和 sendmail.ini 文件中的一些内容。这些步骤可以在here 找到。希望这有助于减少其他人完成此任务的时间,因为我花了很长时间。 php代码与我的原始帖子相同。此外,您必须将代码放在以下目录 C:\xampp\htdocs 中。我在 htdocs 中创建了一个名为 HTMLTemplates 的文件夹。为了在我的浏览器中运行它,我输入了 localhost/HTMLTemplates/myfile.html

【讨论】:

  • 另外,如果您在启动 appache 时遇到问题,我的解决方案是退出 Skype,然后启动 appache,以便它可以在端口 80 上运行。
猜你喜欢
  • 2012-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-12
  • 1970-01-01
  • 2012-10-01
  • 1970-01-01
相关资源
最近更新 更多