ОШИБКА ПОЧТЫ: Не удалось создать функцию почты, Php-мейлер - PullRequest
0 голосов
/ 03 декабря 2018

Я использую php mailer для отправки почтовой программы на учетную запись электронной почты в моем домене, используя информацию, полученную из элементов формы, но это приводит к этой ошибке Could not Instantiate Mail Function, я пробовал ее на своем сервере xamp и в сети тожемой домен, он все еще не работает, пожалуйста, что я могу сделать не так, ниже мой код, потому что я не использую SMTP, пожалуйста, где моя ошибка может быть

<?php 
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
if (isset($_POST['button'])) {
        $solution =     mailer($_POST['first_name'],$_POST['last_name'],$_POST['phone_number'],
        $_POST['ref_phone_number'], $_POST['type_of_vehicle'], $_POST['vehicle_model'],
        $_POST['vehicle_plate_no']) . "<br/>";
        echo $solution;   
}
function mailer($first_name, $last_name, $phone_number, $ref_phone_number,     $type_of_vehicle, $vehicle_model,$vehicle_plate_no){
require_once "vendor/autoload.php";

//PHPMailer Object
$mail = new PHPMailer;

//From email address and name
$mail->From = "earlybird@mendelsmore.com";
$mail->FromName = $first_name." ".$last_name;

//To address and name
$mail->addAddress("mendelsnzeh@mendelsmore.com"); //Recipient name is optional

//Address to which recipient will reply
$mail->addReplyTo("info@mendelsmore.com", "Reply");

//Send HTML or Plain Text email


$mail->Subject = "Early Bird Subscription for ".$first_name." ".$last_name;
$message = '<html><body>';
$message .= '<table rules="all" style="border-color: #666;"  cellpadding="10">';
$message .= "<tr style='background: #eee;'><td><strong>Name:</strong> </td> <td>" . $first_name." ".$last_name . "</td></tr>";
$message .= "<tr><td><strong>Phone No:</strong> </td><td>" . $phone_number . "</td></tr>";
$message .= "<tr><td><strong>Referral Phone Number:</strong> </td><td>" .  $ref_phone_number . "</td></tr>";
$message .= "<tr><td><strong>Type of vehicle:</strong> </td><td>" .   $type_of_vehicle . "</td></tr>";
$message .= "<tr><td><strong>Vehicle Model:</strong> </td><td>" . $vehicle_model . "</td></tr>";
$message .= "<tr><td><strong>Vehicle Plate Number:</strong> </td><td>" . $vehicle_plate_no . "</td></tr>";
$mail->Body = $message;
$mail->isHTML(true);
// $mail->AltBody = "This is the plain text version of the email content";

if(!$mail->send()) 
{
return "Mailer Error: " . $mail->ErrorInfo;
} 
else 
{
return "Message has been sent successfully";
}
}
?>

<body>
    <h2>Early Bird Subscription</h2>
    <div class="row" style="margin-left: 10px;">
        <form name="mailer" method="post">
        <div class="form-group">
 <input type="text" name="first_name" class="form-control" placeholder="First Name" required>
</div>
<div class="form-group">
<input type="text" name="last_name" class="form-control" placeholder="Last Name" required>
     </div>
 <div class="form-group">
 <input type="number" name="phone_number" class="form-control" placeholder="Phone Number" required>
 </div>
 <div class="form-group">
 <input type="number" name="ref_phone_number" class="form-control"  placeholder="Referral Phone Number" required>
  </div><div class="form-group"><input type="text" name="type_of_vehicle" class="form-control" placeholder="Type of Vehicle" required>
  </div>
  <div class="form-group">
  <input type="text" name="vehicle_model" class="form-control" placeholder="Vehicle Model" required>
  </div>
  <div class="form-group">
  <input type="text" name="vehicle_plate_no" class="form-control" placeholder="Vehicle Plate Number" required>
   </div>
   <div class="form-group">
   <button type="submit" class="btn btn-primary btn-block btn-flat"    name="button">Sign Up</button>
   </div>           </form>
    </div>
  </body>

Ответы [ 2 ]

0 голосов
/ 03 декабря 2018

Это описано в документации и во многих повторяющихся вопросах здесь.

Вы получаете эту ошибку, потому что вы отправляете, используя встроенную почтовую функцию PHP (что PHPMailer использует по умолчанию), ноу вас не установлен или настроен локальный почтовый сервер.Установите почтовый сервер, и он сможет работать.

Либо используйте SMTP для подключения к удаленному почтовому серверу.Посмотрите множество примеров, предоставляемых PHPMailer, чтобы узнать, как это сделать.

0 голосов
/ 03 декабря 2018

Вы не включили класс PHPMailer в свой код.

Поместите это в начало вашего кода.

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require 'path/to/PHPMailer/src/Exception.php';
require 'path/to/PHPMailer/src/PHPMailer.php';
require 'path/to/PHPMailer/src/SMTP.php';

Нет необходимости использовать автозагрузчик для этого метода.Попробуйте так и посмотрите, работает ли он.Тогда вы можете возиться с автозагрузчиком.

...