PHP mail () не работает из определенного файла - PullRequest
0 голосов
/ 08 апреля 2019

У меня есть страница, которая взимает плату за покупку, и я хочу отправить электронное письмо администратору в случае успеха. Поэтому, когда условие выполняется (заряд прошел успешно), я вызываю функцию mail (). В приведенном ниже коде см. В разделе if ($ subscription) {} (Да, это условие работает правильно). Тем не менее, это никогда не работает. Если я помещаю функцию mail в отдельный файл, она работает нормально. Это возвращает истину, и я получаю письмо. Это просто не будет работать из файла, над которым я работаю. Очень загадочно! Я много раз переживал все и не вижу ничего, что могло бы конфликтовать с функцией mail ().

<?php
error_reporting(E_ALL);
ini_set('display_errors', 'On');
//set_error_handler("var_dump");
session_start();

if ( ( isset($_SESSION['signup_token']) ) AND ( $_POST['token'] == 
$_SESSION['signup_token'] ) ) {
// Start Charging

include_once 'classes/index.php';
\Stripe\Stripe::setApiKey("XXXXXXXXXXXXXXXXXXXXX");

// Set the stripe plan
switch ( $_POST['plan'] ) {
    case 'Basic Hosting':
        $plan = 'plan_xxxxxxxxxxxxxxxxxx';
        break;
    case 'Business Hosting':
        $plan = 'plan_xxxxxxxxxxxxxxxxxxxx';
        break;
    case 'Pro Hosting':
        $plan = 'plan_xxxxxxxxxxxxxxxxxxxxxx';
        break;
    case "Discount Hosting":
        $plan = 'something';
        break;
    case 'New Website';
        $plan = 'New Website';
        break;
}

$pin = mt_rand('100000', '999999');

try {

    // Create the Stripe customer
    $customer = \Stripe\Customer::create([
        'email' => $_POST['email'],
        //'description' => $_POST['first_name'] . ' ' . $_POST['last_name'],
        'metadata' => array(
            'Purchased from' => 'example.com',
            'Name' => $_POST['name'],
            'Support PIN' => $pin,
        ),
        'source'  => $_POST['stripeToken'],
    ]);

    // Subscribe the customer to the selected plan
    $subscription = \Stripe\Subscription::create([
        'customer' => $customer->id,
        'items' => [['plan' => $plan]],
    ]);

    if ( $subscription ) {
        $to = "something@gmail.com";
        $subject = "New subscription to";
        $txt = "<strong>Customer Name:</strong> <br />";
        $txt .= "<strong>Customer Email:</strong> <br />";
        $txt .= "<strong>Support PIN:</strong> ";
        $headers = "From: store@example.com" . "\r\n";
        $headers .= "MIME-Version: 1.0" . "\r\n";
        $headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";

        if (mail( $to, $subject, $txt, $headers ) ) {
            echo "<p>Email to admin sent</p>";
        };
        include 'purchase_success.php';
    }

    if ( $plan == 'New Website') {
        include 'includes/new_website_email.php';
        //include 'includes/new_subscription_email.php';
    }

} catch (Exception $e) {

    error_log("unable to sign up customer:" . $_POST['stripeEmail'].
    ", error:" . $e->getMessage());
    $error = $e->getMessage();

}

// End Charging
} else {

    echo "Why are you here?";

}

1 Ответ

0 голосов
/ 09 апреля 2019

Не думаю, что с этим кодом что-то не так.Я разместил свое приложение на другом сервере, и оно работало нормально.Так как это в dev, я просто буду использовать другой сервер.Может быть, это может служить примером для кого-то.Когда все остальное не работает с mail (), это может быть сервер!

...