【问题标题】:Send email to address from form input从表单输入向地址发送电子邮件
【发布时间】:2012-05-09 13:18:33
【问题描述】:

我有一个非常标准的联系表格,其中包含姓名、电子邮件地址和电话号码。以及按照标准格式将电子邮件发送到指定的电子邮件地址,

$to      = 'diysoakwells@hotmail.com';

我还想使用表单中输入的电子邮件地址中的地址向用户发送电子邮件。我在想像这样使用电子邮件输入中的 post 变量会起作用:

$to      = 'diysoakwells@hotmail.com', $email;

但没有运气。有人可以指出我正确的方向吗?使用这种方法是否存在任何安全风险?我最终的目标是为用户提供一个复选框,如果选中该复选框,则会将电子邮件副本发送给他们自己。

这是我的表单的链接

http://www.diysoakwells.com.au/cart.php

提前谢谢你:)

<?php
include_once("wsp_captcha.php");

if(WSP_CheckImageCode() != "OK") {
header('location:/form-rejected.php');
die();
}
$to      = 'diysoakwells@hotmail.com';
$subject = 'Order Inquiry';
$jcitems = " <p><b>ORDER:</b></p><p> " . $_POST['jcitems']."<p/>" . "<p><b>Total:</b> $" . $_POST['jctotal']."</p>";
$time = date ("h:i A"); 
$date = date ("l, F jS, Y");
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
$headers .= 'From: inquiry@diysoakwells.com' . "\r\n" .
'Reply-To: noreply@diysoakwells.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
$name = $_POST['name'];
$phone = $_POST['phone'];
$emaile = $_POST['emaile'];
$textbox = $_POST['textbox'];
$text = "<html><body><p><b>Message:</b>\n$textbox</p><p>This form was submitted on Your Web Site on \n $date at\n $time</p><p><b>Customers Email Address:</b> $emaile</p><p><b>Customers Name:</b> $name </p><p><b>Customers Phone Number:</b> $phone </p></html>    </body>";
$body = $text . $jcitems;
mail($to, $subject, $body, $headers);
Header('Location: ../form-accepted.php');
?>

【问题讨论】:

  • 嗨,我回来了,又要解决这个问题了。还是没有解决!这是代码,电子邮件到达 diysoakwells@hotmail.com 但不是来自表单输入的 $email 地址。

标签: php email


【解决方案1】:

你所做的并不是你想做的。在 PHP 中连接两个字符串是使用 .不是 ,所以正确的语法是:

$to      = 'diysoakwells@hotmail.com'.", ".$emaile;

或者干脆

$to      = "diysoakwells@hotmail.com, $emaile";

假设负责发送电子邮件的代码使用 php 的 mail() 函数,它允许在 $to 参数中发送多个电子邮件。如果这不起作用,那么如果没有看到实际代码,我将无法发挥更多作用。

【讨论】:

  • 谢谢我已经尝试过了,但没有收到来自 $email 的电子邮件?
【解决方案2】:

电子邮件的“收件人”字段接受字符串,电子邮件地址以逗号分隔。

$to = 'diysoakwell@hotmail.com, ' . $emaile;

应该可以解决问题。

您应该检查他们提供的电子邮件地址是否已格式化为电子邮件地址,并且最好使用 CAPTCHA 来防止自动机器人将您的表单用作垃圾邮件工具。

【讨论】:

  • PHP 的语法受 Perl 影响,而 .是 Perl 中的字符串连接运算符。尽管在这种特殊情况下,您可以使用加号连接两封电子邮件,但不建议避免不必要的影响,因为 PHP 是一种松散类型的语言,您最终可能会得到数学结果而不是连接的字符串。
  • 试过这个方法,我没有收到任何错误,电子邮件被发送到字符串地址,但变量地址没有任何结果
  • 您是否只是更改了上面代码中的$to 行,还是您也移动了它?
  • 我刚把$to = 'diysoakwells@hotmail.com';改成了$to = 'diysoakwell@hotmail.com, ' . $emaile;
  • 将 $email 作为 $subject 的一部分发布,但不适用于抄送或您描述的方法。我不明白!
【解决方案3】:

如果您使用 php mail() function,您可以通过指定额外的标头来发送副本:

$headers = 'Cc: '.$emaile;
mail($to, $subject, $message, $headers);

【讨论】:

  • 感谢 cmets 伙计们,我现在尝试一些建议。
  • 这里的结果相同,输入地址变量没有邮件出现?
猜你喜欢
  • 1970-01-01
  • 2016-11-04
  • 1970-01-01
  • 2017-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-04
相关资源
最近更新 更多