【问题标题】:Send php mail to user if form submitted如果表单提交,则向用户发送 php 邮件
【发布时间】:2015-10-31 14:08:00
【问题描述】:

如果用户的帖子被接受,我正在尝试使用 phpmail 功能向用户发送电子邮件。首先,如果提交了表单,我将在查询中捕获用户电子邮件,但我不确定如何实现邮件功能。应该是这样的吗?:

if(isset($_POST ['submit'])){

//Some query to get the user email address
$results = $dbh->prepare("select $user_email from wp_users where
wp_users.ID=$user_ID");


$to=$results;
$subject="Whatever you want your subject to be";
$headers = "From: WHATEVER@WHATEVER.COM\r\n";
$headers .= "Reply-To: WHATEVER@WHATEVER.COM \r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";

$message= "WHATEVER MESSAGE";
mail ($to , $subject , $message, $headers);
echo "Your message has been sent";


$insrt = "INSERT INTO table(ID,
        text,
        VALUES (
        :ID,
        :text)";
$stmt = $dbh->prepare($insrt);
$stmt->bindParam(':ID', $user_ID, PDO::PARAM_INT);       
$stmt->bindParam(':text', $_POST['post_text'], PDO::PARAM_STR); 
$stmt->execute(); 
} 

【问题讨论】:

  • 你确定这是对的select $user_email
  • 你的意思是send mail to $results?????你想发送电子邮件到mysql查询吗?
  • 选择 $user_email 只是为了这个帖子传达想法。我主要是询问该查询之后的评论部分。我知道当他们被接受时我需要获取用户电子邮件(我将通过查询捕获并保存在 $results 之类的东西中),但我不知道如何实际将邮件发送到那个用户在他们的电子邮件中($results)
  • 如果你把你的想法转换成工作代码会更好,这样我们就可以看到什么是不工作的,并且从数据库中获取数据,加载到变量并发送电子邮件并不难,只需通过搜索就可以得到很多工作示例的结果,从谷歌开始,所以不是代码编写服务。
  • 我看到了很多关于这个函数的信息,但是没有关于如何调用/实现它到 if(isset($_POST ['submit'])).这就是我最终来到这里的原因。我只需键入 mail();我的示例中的注释区域在哪里?

标签: php phpmailer


【解决方案1】:

如果我理解正确,您可以执行以下操作:

try{

/*YOUR INSERT STATEMENT FROM ABOVE*/

$to=$results;
$subject="Whatever you want your subject to be";
$headers = "From: WHATEVER@WHATEVER.COM\r\n";
$headers .= "Reply-To: WHATEVER@WHATEVER.COM \r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";

$message= "WHATEVER MESSAGE";
mail ($to , $subject , $message, $headers);
echo "Your message has been sent";
}
Catch($error){
Do whatever you want here. Add another mail function to let you know that     the post was not accepted, etc.
}

如果这就是你想要的,请告诉我。

【讨论】:

  • 这是假设您希望用户仅在他们的评论被数据库接受时发送电子邮件。如果您希望在他们只是尝试发表评论的情况下发送它,那么情况会有所不同。随时通知我,如果我的回答有帮助,请查看。
  • 我想你明白了。请查看我更新的代码,看看我是否正确实施了您的答案。我需要添加类似mail()的东西吗?执行 php 邮件或包括 phpmail 或任何东西?这是我第一次使用这个功能。我正在跳过 Try/Catch,因为我对 Do 部分没有任何内容...
  • JW500 看起来不错。取出回显“您的消息已发送部分”。这是我的测试遗留下来的。如果您希望邮件仅在用户的帖子被接受后才发送出去,那么请留下 try catch 部分。会发生什么:如果帖子进入数据库,则将发送邮件,否则不会发生任何事情。所以你不必在 catch 部分有任何东西。这有点像 if else statemnet,如果发生某事,则执行某种行为,但如果没有发生某事,则不要执行任何操作。
  • 成功了(没有 Try/Catch 的东西)。我不需要 Try/Catch,因为整个代码块只有在帖子被接受时才会运行,这使得 try/catch 变得多余。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-08
  • 2017-09-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多