在提交php联系表单

时间:2017-07-20 03:16:33

标签: php mailgun

我做了一个简单的联系我们表格,它工作得非常好。但现在,在添加用于发送和接收电子邮件的mailgun脚本后,它只向我显示空白页面。

脚本:

<?php
require 'vendor/autoload.php';
use Mailgun\Mailgun;
$mailgun = new Mailgun('key-41616099541fe1b0187e7cd970127240', new \Http\Adapter\Guzzle6\Client());

$mgClient = new Mailgun('key-41616099');
$domain = "sandbox614b.mailgun.org";

$from = 'Demo contact form <test@example.com >';
$to = 'Demo contact form <test@example.com>';
$name = $_POST['name'];
$subject =  $_POST['subject'];
$message = $_POST['message'];

$fields = array('name' => 'Name', 'email' => 'Email', 'phone' => 'Phone', 'subject' => 'Subject', 'message' => 'Message'); 

$okMessage = 'Contact form successfully submitted. Thank you, I will get back to you soon!';

$errorMessage = 'There was an error while submitting the form. Please try again later';

// if you are not debugging and don't need error reporting, turn this off by error_reporting(0);
error_reporting(E_ALL & ~E_NOTICE);
try
{
    if(count($_POST) == 0) throw new \Exception('Form is empty');

    $content = "You have a new message from your contact form";
    foreach ($_POST as $key => $value) 
    {
        if (isset($fields[$key]))
            {
            $content .= "$fields[$key]: $value\n";

    //recaptcha-response
    $recaptcha_secret = "6LfK7ygUAAAAAIYzE6mbqdxbmuroi4gJWqdIpmBu";
    $response = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$recaptcha_secret."&response=".$_POST['g-recaptcha-response']);
    $response = json_decode($response, true);

# Make the call to the client.
$result = $mgClient->sendMessage("$domain",
          array('from'    => 'Mailgun Sandbox <postmaster@sandbox614b.mailgun.org>',
                'to'      => 'Nami <nami19@gmail.com>',
                'subject' => 'Hello Nami',
                'text'    => 'Congratulations Nami, you just sent an email with Mailgun!  You are truly awesome! '));

      echo "Form Submit Successfully.";
        } else {
        echo "You are a robot";
        }
    }
}
   catch (\Exception $e)
{
    $responseArray = array('type' => 'danger', 'message' => $errorMessage);
}

?>

我可能做错了什么?

1 个答案:

答案 0 :(得分:0)

坦率地说,这段代码看起来很糟糕。除非您有未发布的代码,否则大多数代码似乎并未实际执行任何操作或以其他方式连接到任何内容。您发布的内容只有57行代码,因此就我而言,第68行并不存在(关于您的其他评论)。

您的 sendMessage()功能中存在语法错误,以及您定义 $ content 变量的位置。您将 $ mailgun 声明为类,但实际上并未在任何地方使用它。您的 forEach()循环遍历每个帖子值并尝试发送电子邮件,在您的情况下,我认为不是目标。 for循环中的if语句将始终返回true,因此使用它没有意义。这些只是立刻向我伸出的东西。

根据您发布的内容,这是唯一具有逻辑相关性的代码:

Session::get('data')

我建议你比较两者并找出一些关键的差异来开始。

Namita,这是一个充满希望帮助你的人的精彩社区。但是,你的问题太笼统了。看起来好像你已经从随机位置粘贴了一些碎片,而没有考虑代码的作用。而且,更重要的是,您没有向我们提供任何类型的实际错误,也没有为尝试解决问题而做过任何事情,更不用说确定问题了。

我建议您查看MailGun文档,您可以在此处找到它:https://documentation.mailgun.com/en/latest/user_manual.html

请务必从顶部的栏中选择“PHP”,以便查看PHP代码示例。