Я пытаюсь перенаправить электронную почту в Cpanel на команду Laravel 5.8, но что-то не так:
прежде всего я использовал этот код, чтобы найти путь к исполняемому файлу php:
echo exec('which php'); // returns "/usr/local/bin/php"
и я добавил сервер пересылки в cpanel для:
/usr/local/bin/php -q /home/abcd10/public_html/laravelapp/artisan emailparse
команда ремесленника laravel:
<?php
namespace App\Console\Commands;
use Illuminate\Support\Facades\Storage;
use Illuminate\Console\Command;
use Illuminate\Support\Str;
use Carbon;
class EmailParserCommand extends Command
{
protected $signature = 'emailparse';
protected $description = 'Parse an incomming email.';
public function __construct()
{
parent::__construct();
}
public function handle()
{
\DB::transaction(function () {
//$path = 'C:\Users\medoa\Desktop\email.eml'; // I used this to test the code in the localhost and it works manually
$parser = new \PhpMimeMailParser\Parser();
// Specify a stream to work with mail server (stream)
$parser->setStream(fopen("php://stdin", "r"));
$rawHeaderTo = $parser->getHeader('to');
$rawHeaderFrom = $parser->getHeader('from');
$arrayHeaderFrom = $parser->getAddresses('from');
$subject = $parser->getHeader('subject');
$body = $parser->getMessageBody('text');
$upload = new \App\upload;
$upload->from = $arrayHeaderFrom[0]['address'];
$upload->subject = $subject;
$upload->body = $body;
$upload->save();
$attachments = $parser->getAttachments();
foreach ($attachments as $attachment)
{
$newfilename = Carbon\Carbon::now()->format('dmY') . Str::random(25) . $fileext;
Storage::disk('public')->put('uploads/'.$newfilename, $attachment->getContent());
$attobj = new \App\attachement;
$attobj->filename = $newfilename;
$attobj->original_filename = $attachment->getFilename();
$attobj->upload_id = $upload->id;
$attobj->size = Storage::disk('public')->size('uploads/'.$newfilename);
$attobj->type = str_replace('.','',$fileext) ;
$attobj->save();
}
});
}
}
Я тестировал код вручнуюна локальном хосте с помощью этой команды "php artisan emailparse" с использованием локально сохраненного пути к файлу, и это работает, но я не уверен, что не так с тем, что я сделал на хостинге cpanel.
отправитель всегда получает следующееответ и ничего не происходит в базе данных:
Это сообщение было создано автоматически программой доставки почты.Отправленное вами сообщение не может быть доставлено одному или нескольким получателям.Это постоянная ошибка.Не удалось выполнить следующие адреса: канал | | home / itrade10 / public_html / metastockdata / artisan emailparse, сгенерированный при локальной загрузке upload@metastockdata.itradegame.com