Повторная отправка почты

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Kven
Сообщения: 89
Зарегистрирован: 2016.10.20, 23:03

Повторная отправка почты

Сообщение Kven » 2019.01.03, 12:37

Всем здравствуйте! Объясню суть своей проблемы, есть перечни которые отправляю пользователю на емайл по нажатию на кнопку, данные перечни формируются автоматически в формате pdf, письма приходят с вложением, в этом плане все нормально. Проблема заключается в том, что по прошествию некоторого времени - недели-две, пользователю опять приходит такое же сообщение и с тем же вложением, хотя на кнопку отправки ни кто не нажимал. Вопрос в том, почему происходит повторная отправка сообщения? Может быть надо как-то по другому написать функцию отправки сообщения, так как самого вида pdf у меня нет, он используется только для написания пути у кнопки.
Код в контроллере

Код: Выделить всё

public function actionPdf($id)
{
    $model = $this->findModel($id);
    $content = Yii::$app->view->renderFile('@app/views/order/_forma.php', ['model'=>$model]);

    $pdf = new Pdf([
        'mode' => Pdf::MODE_UTF8,
        'format' => Pdf::FORMAT_A4,
        'cssFile' => '@vendor/kartik-v/yii2-mpdf/assets/kv-mpdf-bootstrap.css',
        'orientation' => Pdf::ORIENT_LANDSCAPE, 
        'destination' => Pdf::DEST_BROWSER,
        'content' => $content,
        'options' => ['title' => 'Портал'],
    ]);

    $fileName = 'list_' . $model->id . '_ot_' . $model->date . '.pdf';
    $filePath = Yii::getAlias('@app/web/upload/documents/rctp/pdf/' . $fileName);

    $attachment =  $pdf->output($content, $filePath, Pdf::DEST_FILE);

    $result =  Yii::$app->mailer->compose()
        ->setFrom(['***@mail.ru' => 'контора'])
        ->setTo($model->email)
        ->setHtmlBody('Текст')
        ->setSubject('Перечень оборудования #' . $model->id . ' от ' . $model->date)
        ->attach($filePath)
        ->send();

    unlink($filePath);

    return $this->redirect(Yii::$app->request->referrer);
}
Кнопка отвечающая за отправку

Код: Выделить всё

'value' => function($data){
    if($data['email'] == true){
        return Html::a(
        	'<span>', 
        	Url::to(['order/pdf', 'id' => $data->id]), 
        	[
        		'rel' => 'nofollow',
        		'class' => 'glyphicon glyphicon-envelope', 
        		'title' => 'Отправить документ на email ' . $data->email, 
        		'data' => [
            		'confirm' => 'Вы подтверждаете отправку документа пользователю ' . $data->name . ' ' . ($data->email),
            		'method' => 'post',
        		],
        	]);
    }else{
        return '';
    }
},

Ответить