Используйте PHPMailer с Slim Framework - PullRequest
0 голосов
/ 25 марта 2019

Я использую Slim Framework для создания нескольких веб-служб, теперь я хочу создать такой сервис, как: www.example.com/public/feedback. Этот сервис должен отправлять письмо с данными из формы, тогда я могуНайти способ использовать библиотеку PHPMailer в структуре Slim.Нужно ли включать библиотеку в index.php, и ее можно использовать в файле rout.php?Заранее спасибо.

Редактировать: Я надеюсь, что это может прояснить мои опасения:

require __DIR__ . '/../vendor/autoload.php';

require __DIR__ . '/../../PHPMailer/Exception.php';
require __DIR__ . '/../../PHPMailer/PHPMailer.php';
require __DIR__ . '/../../PHPMailer/SMTP.php';

session_start();

// Instantiate the app
$settings = require __DIR__ . '/../src/settings.php';
$app = new \Slim\App($settings);

Приведенный выше код находится в моем файле index.php в общей папке и в route.php в папке src Iиметь следующий код:

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
use PHPMailer\PHPMailer\SMTP;
$app->get('/feedback',function(Request $request,Response $response,array $args){
  $mail = PHPMailer(true);
  try {
      //Server settings
      $mail->SMTPDebug = 2;                                       // Enable verbose debug output
      $mail->isSMTP();                                            // Set mailer to use SMTP
      $mail->Host       = 'example.com';         // Specify main and backup SMTP servers
      $mail->SMTPAuth   = true;                                   // Enable SMTP authentication
      $mail->Username   = 'user@example.com';// SMTP username
      $mail->Password   = 'secret';                         // SMTP password
      $mail->SMTPSecure = 'tls';                                  // Enable TLS encryption, `ssl` also accepted
      $mail->Port       = 587;                                    // TCP port to connect to

      //Recipients
      $mail->setFrom('user@example.com','WebApp Contact');
      $mail->addAddress('mmucino@yahoo.com','Marco Muciño');               // Name is optional

      // Content
      $mail->isHTML(true);                                  // Set email format to HTML
      $mail->Subject = 'Here is the subject';
      $mail->Body    = 'This is the HTML message body <b>in bold!</b>';
      $mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

      $mail->send();
      echo 'Message has been sent';
  } catch (Exception $e) {
      echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
  }
  return $response->withJSON(array(
    'status' => 'OK'
  ));

С моими реальными данными вместо example.com

Но если я позвоню в службу с URL:

example.com/public/feedback

Iполучите ошибку:

Slim Application Error
The application could not run because of the following error:

Details
Type: Error
Message: Call to undefined function PHPMailer()
File: /home/tecallia/public_html/gabriel/src/routes.php
Line: 405

Что я делаю не так?Заранее спасибо.

...