Попытка найти несуществующий файл Yii2

Я пытаюсь создать функцию электронной почты, которая отправляет прикрепленный файл.

Я создал функцию и добавил attach() с маршрутом файла, который я хочу прикрепить, следующим образом:

public function newMonthlyBillingRegister(Clinic $clinic, ClinicMonthlyBilling $clinicMonthlyBilling)
{
    $countryAdmins = $clinic->findCountryAdmins($clinic->country->id);
    $adminEmails = [];

    foreach ($countryAdmins as $admin) {
        $adminEmails[$admin->email] = $admin->fullName;
    }

    /** @var BaseMailer $mailer */
    $mailer = Yii::$app->mailer;

    $mailer->htmlLayout = 'layouts/standard_html';
    //$mailer->htmlLayout = 'layouts/invoice_html';
    // $mailer->textLayout = 'layouts/invoice_text';

    try{
        return $mailer
                ->compose(
                    ['html' => 'newMonthlyBillingRegister-html', 'text' => 'newMonthlyBillingRegister-text'],
                    [
                        'clinic'               => $clinic,
                        'clinicMonthlyBilling' => $clinicMonthlyBilling,
                    ]
                )
                ->setFrom([Yii::$app->params['supportEmail'] => Yii::t('app', 'support-email-name', ['appName' => Yii::$app->name])])
                ->setTo($adminEmails)
                ->setSubject(Yii::t('app', '[CLINIC][BACKOFFICE] A clinic has upgraded its information in Guarantee Fund Modal.'))
                ->attach('app/media/uploads/clinic/monthly-billing/'.$clinicMonthlyBilling->trimestralBillingFile)
                ->queue() && YII_DEBUG && Yii::$app->mailqueue->process();
    }
    catch(\Exception $e){
        LogService::getLogger()->error("Error while sending mail.","EmailService:newMonthlyBillingRegister()",$e->getMessage());
    }
}

Это выдало мне ошибку, но проблема возникает, когда я удаляю attach() из своего кода, отменяя все свои изменения в этой функции электронной почты, и когда я пытаюсь снова отправить электронное письмо, появляется следующее сообщение:

PHP Warning: fopen(app/media/uploads/clinic/monthly-billing/user_1_clinic_1_trimestral_billing_file_2019_05_09_08_22_35): failed to open stream: No such file or directory in /app/vendor/swiftmailer/swiftmailer/lib/classes/Swift/ByteStream/FileByteStream.php on line 142

Файл user

public function newMonthlyBillingRegister(Clinic $clinic, ClinicMonthlyBilling $clinicMonthlyBilling)
{
    $countryAdmins = $clinic->findCountryAdmins($clinic->country->id);
    $adminEmails = [];

    foreach ($countryAdmins as $admin) {
        $adminEmails[$admin->email] = $admin->fullName;
    }

    /** @var BaseMailer $mailer */
    $mailer = Yii::$app->mailer;

    $mailer->htmlLayout = 'layouts/standard_html';
    //$mailer->htmlLayout = 'layouts/invoice_html';
    // $mailer->textLayout = 'layouts/invoice_text';

    try{
        return $mailer
                ->compose(
                    ['html' => 'newMonthlyBillingRegister-html', 'text' => 'newMonthlyBillingRegister-text'],
                    [
                        'clinic'               => $clinic,
                        'clinicMonthlyBilling' => $clinicMonthlyBilling,
                    ]
                )
                ->setFrom([Yii::$app->params['supportEmail'] => Yii::t('app', 'support-email-name', ['appName' => Yii::$app->name])])
                ->setTo($adminEmails)
                ->setSubject(Yii::t('app', '[CLINIC][BACKOFFICE] A clinic has upgraded its information in Guarantee Fund Modal.'))
                ->attach('app/media/uploads/clinic/monthly-billing/'.$clinicMonthlyBilling->trimestralBillingFile)
                ->queue() && YII_DEBUG && Yii::$app->mailqueue->process();
    }
    catch(\Exception $e){
        LogService::getLogger()->error("Error while sending mail.","EmailService:newMonthlyBillingRegister()",$e->getMessage());
    }
}
clinic
public function newMonthlyBillingRegister(Clinic $clinic, ClinicMonthlyBilling $clinicMonthlyBilling)
{
    $countryAdmins = $clinic->findCountryAdmins($clinic->country->id);
    $adminEmails = [];

    foreach ($countryAdmins as $admin) {
        $adminEmails[$admin->email] = $admin->fullName;
    }

    /** @var BaseMailer $mailer */
    $mailer = Yii::$app->mailer;

    $mailer->htmlLayout = 'layouts/standard_html';
    //$mailer->htmlLayout = 'layouts/invoice_html';
    // $mailer->textLayout = 'layouts/invoice_text';

    try{
        return $mailer
                ->compose(
                    ['html' => 'newMonthlyBillingRegister-html', 'text' => 'newMonthlyBillingRegister-text'],
                    [
                        'clinic'               => $clinic,
                        'clinicMonthlyBilling' => $clinicMonthlyBilling,
                    ]
                )
                ->setFrom([Yii::$app->params['supportEmail'] => Yii::t('app', 'support-email-name', ['appName' => Yii::$app->name])])
                ->setTo($adminEmails)
                ->setSubject(Yii::t('app', '[CLINIC][BACKOFFICE] A clinic has upgraded its information in Guarantee Fund Modal.'))
                ->attach('app/media/uploads/clinic/monthly-billing/'.$clinicMonthlyBilling->trimestralBillingFile)
                ->queue() && YII_DEBUG && Yii::$app->mailqueue->process();
    }
    catch(\Exception $e){
        LogService::getLogger()->error("Error while sending mail.","EmailService:newMonthlyBillingRegister()",$e->getMessage());
    }
}
trimestral_billing_file_2019_05_09_08_22_35 не существует в папке app/media/uploads/clinic/monthly-billing/ и даже в моей базе данных

...что не так?¿ Я знаю, что это в моем локальном, но я не знаю причину попытки поиска файла, который не существует, и я ничего не кодировал для его поиска,

Кто-нибудь может помочь? Я использую PHPStorm,

Большое спасибо за внимание!


person Ber Tsacianegu del Tepuy    schedule 09.05.2019    source источник
comment
Возможно, в вашей очереди есть ожидающие письма для отправки с вложением. Попробуйте после очистки очереди.   -  person Insane Skull    schedule 09.05.2019
comment
это было!! Большое спасибо, мой друг   -  person Ber Tsacianegu del Tepuy    schedule 09.05.2019


Ответы (1)


Мне пришлось очистить очередь электронной почты, и это сработало! Большое спасибо Insane Skull за помощь ;)

person Ber Tsacianegu del Tepuy    schedule 09.05.2019
comment
Прими свой ответ! :-) - person Alexandru Trandafir Catalin; 30.05.2019