【问题标题】:Composing but not sending an email using PHP使用 PHP 撰写但不发送电子邮件
【发布时间】:2014-09-02 07:50:10
【问题描述】:

我正在编写一个 php 应用程序,它(除其他外)创建一些用于发送电子邮件的报告。我想让我的客户点击“创建电子邮件”按钮,这将导致许多电子邮件客户端窗口打开预先填充的数据,以便我的客户可以在发送电子邮件之前检查内容。

我可以生成一个带有许多 mailto 标签的 html 页面,然后客户在发送之前单击它以打开电子邮件(用于检查),但这显然是劳动密集型的,也是我写这篇文章的部分原因php 应用程序。解决方案是在生成的 html 页面上使用一些 javascript 来触发页面加载时的所有 mailto 链接吗?还是有更好的办法?

附加编辑: 关键是客户需要在发送电子邮件之前手动检查内容 - 抱歉我没有说清楚。此后,客户指定他希望电子邮件在他的电子邮件客户端中显示为草稿预先撰写的电子邮件,而不是出现在网页上。

谢谢

【问题讨论】:

  • 我不会依赖mailto 链接从您的应用程序发送邮件。
  • @jeroen - 有什么理由不依赖 mailto?我知道有人无法配置他们的邮件客户端,但此应用程序适用于我知道他们的电子邮件客户端配置正确的特定客户。

标签: javascript php html email


【解决方案1】:

在服务器端发送邮件会更加通用和有效,而不是要求客户端依赖自己的邮件客户端(当有人在浏览器中单击 mailto 链接时,浏览器会尝试打开邮件Outlook 或 Thunderbird 等客户端,可能已配置也可能未配置)。您可以在页面上打印各种表单,包括主题、地址和消息输入,通过邮寄方式摄取它们(即用户提交表单),然后直接从服务器发送电子邮件以响应表单提交。从这个开始:

http://us3.php.net/manual/en/function.mail.php

然后查看 PHPMailer:

https://github.com/PHPMailer/PHPMailer

此外,如果您使用的是框架,他们可能有自己的实用程序来发送邮件,这比上述两种方法更可取。我所说的一个非常简单的例子可能看起来像这样:

<form action='/' method='post'>
  To Address: <input type='text' name='to_addr' /> <br/>
  Subject: <input type='text' name='subject' /> <br/>
  Message: <textarea name='to_addr'></textarea> <br/><br/>
  <input type='submit' name='send' value='Send Message' />
</form>
<?php

if(!empty($_POST['send']))
  mail( $_POST['to_addr'] , $_POST['subject'] , $_POST['message'] , 'From: no-reply@somedomain.com');

【讨论】:

  • 有趣的想法 - 谢谢。不幸的是,我已经与我的客户核实过,他们并不“信任”这种在网页中查看电子邮件的机制——他们希望在点击之前在他们的电子邮件客户端中查看电子邮件(就好像他们自己编写了电子邮件一样)发送按钮。
  • 不幸的是,我不认为有一种在客户端发送电子邮件的编程方式,尤其是从像电子邮件客户端这样的单独程序中发送电子邮件,因此您的客户必须单击发送如果他们想使用自己的客户端电子邮件客户端 (hark.com/clips/…),则可以发送每封电子邮件。因此,无论如何以编程方式打开这些窗口都不会节省很多?
  • 感谢您的 cmets。节省的时间是在创建报告和打开 50 多封包含报告(每个不同)的预先编写的草稿电子邮件,然后客户可以在点击发送之前检查这些报告。他们不相信应用程序能够正确创建报告,因此希望手动进行所有检查。认为我无法以编程方式点击 50 个 mailto: 链接。
【解决方案2】:

你可以使用这段代码。

    $subject = 'Your mail subject';
    $message = 'Your message.';
    $header  = "From: webmaster@yourwebsite.com"."\r\n";
    $header .= "Reply-To: webmaster@yourwebsite.com"."\r\n";
    $header .= "MIME-Version: 1.0"."\r\n";
    $header .= "Content-Type: text/plain; charset=utf-8"."\r\n";
    $header .= "Content-Transfer-Encoding: 8bit"."\r\n";
    $header .= "X-Mailer: PHP v".phpversion();
    mail($newemail, $subject, $message, $header);
    header('Location: '.$success_page);
    exit;

【讨论】:

  • 不幸的是,这只是发送一封电子邮件,这不是必需的。客户需要阅读/检查(和修改)创建的电子邮件,然后客户点击发送。
  • 您可以从数据库中获取数据,然后使用该数据(PREVIEWING)预填充字段,然后可以使用上面的代码发送。希望这会有所帮助。
  • 谢谢,但关键是不应该发生发送。客户会手动发送,我只是撰写电子邮件。
【解决方案3】:

经过进一步调查,我似乎无法使用 mailto html 标签,因为它是will not accept html tags within the a href(例如没有格式化的表格)和is restricted in the number of characters

因此,目前的解决方案是返回使用上述建议的 php 邮件表单,并抄送客户邮件帐户,以便他们可以根据要求将电子邮件副本存储在他们的电子邮件帐户中。此外,我将使用 tinymce,以便客户可以在电子邮件正文中编辑预先编写的 html。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-16
    • 1970-01-01
    • 2014-08-17
    • 2015-02-23
    • 2013-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多