电子邮件在重定向到页面时不会触发

时间:2013-02-15 11:05:16

标签: php wordpress forms

我有一个表单可以在提交时触发电子邮件,但我想在提交时将其重定向到其他页面。

目前,电子邮件只通过以下内容(即重新加载同一页面):

<form id="customisesystem" name="enquiry" onsubmit="return formCheck(this);" method="POST" action="<?php echo the_permalink(); ?>">

我想将此更改为以下内容:

<form id="customisesystem" name="enquiry" onsubmit="return formCheck(this);" method="POST" action="<?php bloginfo('url'); ?>/thank-you">

然而,这不会触发电子邮件。

有人能看出出了什么问题吗?

这是发送电子邮件的脚本。

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

$to = "rob@domain.com";
$header = 'From: admin@domain.com';
$subject = "Quotation";
$enquiry_first_name = $_POST['enquiryfirstname'];
$enquiry_last_name = $_POST['enquirylastname'];
$enquiry_title = $_POST['enquirytitle'];
$enquiry_organisation = $_POST['enquiryorganisation'];
$enquiry_address = $_POST['enquiryaddress'];
$enquiry_country = $_POST['enquirycountry'];
$enquiry_email_address = $_POST['enquiryemailaddress'];
$enquiry_telephone = $_POST['enquirytelephone'];
$enquiry_additional_comments = $_POST['enquiryadditionalcomments'];
$enquiry_product = get_the_title();
if(!empty($_POST['hardware'])) {
    foreach($_POST['hardware'] as $check) {
        $hardwareresults .= $check."\n";
    }
}
if(!empty($_POST['systems'])) {
    foreach($_POST['systems'] as $check) {
        $systemsresults .= $check."\n";
    }
}
$productresults = "";
$quantities = array_combine($_POST['product'], $_POST['quantity']);
foreach ($quantities as $product => $quantity) {
    if ($quantity > 0) {
        $productresults .= "$quantity x $product \n";
    }
}


$body = "You have a quote request from the website:

Name: $enquiry_title $enquiry_first_name $enquiry_last_name
Type of organisation: $enquiry_organisation 
Address: $enquiry_address, $enquiry_country
E-Mail: $enquiry_email_address 
Tel: $enquiry_telephone
Comments: $enquiry_additional_comments

Send more information on:
$systemsresults

Quotation:
$enquiry_product

Hardware:
$hardwareresults

Accessories:
$productresults 

Kind regards";

mail($to, $subject, $body, $header);

echo "Thank you for your enquiry.";

} ?>

2 个答案:

答案 0 :(得分:2)

继续使用发送电子邮件的<?php echo the_permalink(); ?>

在您使用echo "Thank you for your enquiry.";的电子邮件代码之后,将其替换为

header('location: ' . bloginfo('url') . '/thank-you');

修改

要在感谢页面中获取发布的数据,您应该从邮件页面传递该数据。

在这种情况下,有两种方法可以在其他页面上发送数据

  1. 使用get方法。 `/感谢信/名称= ABC&放大器;年龄= XYZ
  2. 将值存储在会话中并在会话页面上访问它们
  3. 修改

    尝试这样的事情

    header('location: http://www.yourblog.com/thank-you/?title=' . $enquiry_title);
    

    在感谢页面中,将其转换为变量,然后将该变量回显到要显示它的位置。

    <?php
    $title = $_GET['title'];
    ...
    ?> Thank you message and your HTML structure
     Your message titled: <b> <?php echo $title; ?> </b> is received. we will contact you shortly
    .... blah blah
    

    我希望这是有道理的。

答案 1 :(得分:0)

这很正常,因为您没有向您的电子邮件脚本发送任何信息。要在发送电子邮件后将客户端重定向到另一个页面,您必须将propper HTTP标头发送给用户代理。 您可以通过将此代码添加到电子邮件脚本的最后一行来实现此目的(请勿更改提交表单中的操作):

header ( "Location: " . bloginfo('url') . "/thank-you" );

这将在邮件发送过程结束后将用户重定向到另一个页面。

修改

正如“Aamir Mahmood”已经提到的,您可以在URL查询字符串中传递标题,如下所示:

header ( "Location: http://some.site.com/foo/bar/thank-you/?title=$enquery_title");

在感谢页面上就是这样:

$title = $_GET["title"];
# use $title as you need

我跳这个帮助