Я пытаюсь запустить MailerSend, платформу для исходящей электронной почты. Я загрузил необходимый код на свой сервер, и MailerSend работает нормально, если я помещу следующий код в один файл PHP и выполню этот файл — назовем его «SendAnEmail.php»:
require '/home/xxxxx/vendor/autoload.php';
use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\Recipient;
use MailerSend\Helpers\Builder\EmailParams;
use MailerSend\Helpers\Builder\Attachment;
$mailersend = new MailerSend(['api_key' => $apiKey]);
$recipients[] = new Recipient($email, '');
$emailParams = (new EmailParams())
->setFrom('fromemail.com')
->setFromName('My System')
->setRecipients($recipients)
->setSubject($subject)
->setHtml('This is the HTML content')
->setText('This is the text content')
->setReplyTo('[email protected]')
->setReplyToName('My System')
->setAttachments($attachments);
// send the email
$response = $mailersend->email->send($emailParams);
Проблема в том, что я хочу, чтобы этот код выполнялся внутри функции, поэтому я могу вызвать функцию из нескольких php-скриптов внутри системы, отправить функции основную информацию (адрес, строку темы, основной текст и т. д.) и получить функция отправки электронного письма. Я не могу заставить это работать: когда я помещаю первые пять строк приведенного выше кода в вызывающий PHP-скрипт, я получаю сообщение об ошибке «Класс «Получатель» не найден». Если я помещу первые пять строк кода выше в функцию, я получу синтаксическую ошибку «неожиданное использование», указывающую на первый оператор «использования».
Я не эксперт в PHP. Я знаю, как предоставить функции обычные переменные из вызывающего сценария с помощью глобального оператора внутри функции, но я не знаю, как предоставить класс Receipient или другие нужные мне классы внутри функции.
Надеюсь, этот вопрос ответит на этот вопрос - я не совсем уверен, что использую правильную терминологию. Любая помощь приветствуется.
С уважением.
Приносим извинения, ответ ниже решил проблему. К вашему сведению, вызываемая функция использовала класс MailerSend для отправки электронного письма — это был код, который работал в автономном файле, и — как только класс стал «доступным» для кода внутри функции — функция работала нормально, как хорошо.






Было бы что-то вроде этого:
require '/home/xxxxx/vendor/autoload.php';
use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\Recipient;
use MailerSend\Helpers\Builder\EmailParams;
use MailerSend\Helpers\Builder\Attachment;
function sendEmail($email, $subject, $body) {
$mailersend = new MailerSend(['api_key' => $apiKey]);
$recipients[] = new Recipient($email, '');
$emailParams = (new EmailParams())
->setFrom('fromemail.com')
->setFromName('My System')
->setRecipients($recipients)
->setSubject($subject)
->setHtml('This is the HTML content')
->setText('This is the text content')
->setReplyTo('[email protected]')
->setReplyToName('My System')
->setAttachments($attachments);
// send the email
$response = $mailersend->email->send($emailParams);
}
а затем в любой файл, который вы хотите вызвать эту функцию, которую вы поместили, и она внедрит весь код, который у вас есть в вашем первом файле, чтобы вы могли использовать его, как если бы он был вставлен туда, где находится require.
require 'path/to/sendAnEmail.php';
$email = '[email protected]';
$subject = 'You won a FREE CAR!!!!';
$body = 'CONGRATS!';
sendEmail($email, $subject, $body)
Пожалуйста, опубликуйте свою версию функции, которую вы пытаетесь написать, даже если она не работает.