@@ -179,7 +179,7 @@ class CronController extends BackendController | |||
'conditions' => 'date_delete IS NULL' | |||
]); | |||
$mail = Yii::$app->mailer->compose( | |||
$mail = Yii::$app->mailerService->getMailer()->compose( | |||
[ | |||
'html' => '@common/mail/cronOrdersSummary-html', | |||
'text' => '@common/mail/cronOrdersSummary-text', |
@@ -3,6 +3,8 @@ | |||
namespace common\components; | |||
use domain\Producer\Producer\Producer; | |||
use domain\Setting\AdminSettingBag; | |||
use yii\base\ErrorException; | |||
use yii\mail\MessageInterface; | |||
class MailerService | |||
@@ -41,9 +43,24 @@ class MailerService | |||
return $message->send(); | |||
} | |||
public function getMailer() | |||
{ | |||
$mailerSetting = AdminSettingBag::getInstance()->get('mailer'); | |||
if(!$mailerSetting) { | |||
throw new ErrorException("Aucun mailer défini pour les emails courants."); | |||
} | |||
if(isset(\Yii::$app->$mailerSetting)) { | |||
return \Yii::$app->$mailerSetting; | |||
} | |||
else { | |||
throw new ErrorException("La configuration pour le mailer $mailerSetting est introuvable dans main-local.php"); | |||
} | |||
} | |||
private function composeBase(string $toEmail, string $view, array $params = []) | |||
{ | |||
return \Yii::$app->mailer | |||
return $this->getMailer() | |||
->compose([ | |||
'html' => '@common/mail/'.$view.'-html.php', | |||
'text' => '@common/mail/'.$view.'-text.php' |
@@ -1,57 +0,0 @@ | |||
<?php | |||
/** | |||
Copyright Souke (2018) | |||
contact@souke.fr | |||
Ce logiciel est un programme informatique servant à aider les producteurs | |||
à distribuer leur production en circuits courts. | |||
Ce logiciel est régi par la licence CeCILL soumise au droit français et | |||
respectant les principes de diffusion des logiciels libres. Vous pouvez | |||
utiliser, modifier et/ou redistribuer ce programme sous les conditions | |||
de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA | |||
sur le site "http://www.cecill.info". | |||
En contrepartie de l'accessibilité au code source et des droits de copie, | |||
de modification et de redistribution accordés par cette licence, il n'est | |||
offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons, | |||
seule une responsabilité restreinte pèse sur l'auteur du programme, le | |||
titulaire des droits patrimoniaux et les concédants successifs. | |||
A cet égard l'attention de l'utilisateur est attirée sur les risques | |||
associés au chargement, à l'utilisation, à la modification et/ou au | |||
développement et à la reproduction du logiciel par l'utilisateur étant | |||
donné sa spécificité de logiciel libre, qui peut le rendre complexe à | |||
manipuler et qui le réserve donc à des développeurs et des professionnels | |||
avertis possédant des connaissances informatiques approfondies. Les | |||
utilisateurs sont donc invités à charger et tester l'adéquation du | |||
logiciel à leurs besoins dans des conditions permettant d'assurer la | |||
sécurité de leurs systèmes et ou de leurs données et, plus généralement, | |||
à l'utiliser et l'exploiter dans les mêmes conditions de sécurité. | |||
Le fait que vous puissiez accéder à cet en-tête signifie que vous avez | |||
pris connaissance de la licence CeCILL, et que vous en avez accepté les | |||
termes. | |||
*/ | |||
namespace common\helpers; | |||
use Yii; | |||
class Mail | |||
{ | |||
public static function send($email, $subject, $view, $data) | |||
{ | |||
$mail = Yii::$app->mailer->compose( | |||
[ 'html' => $view.'-html', | |||
'text' => $view.'-text' | |||
], | |||
$data) | |||
->setTo($email) | |||
->setFrom(['contact@souke.fr' => 'Souke']) | |||
->setSubject('[Souke] '.$subject) | |||
->send(); | |||
} | |||
} |
@@ -47,4 +47,5 @@ $documentModule = DocumentModule::getInstance(); | |||
<p>Veuillez trouver en pièce jointe votre <?= strtolower($documentModule->getType($document)) ?> <?php if($documentModule->isStatusValid($document)): ?>N°<?= $document->reference ?><?php endif; ?>.</p> | |||
<p>À bientôt.</p> | |||
<p>Bonne réception,<br /> | |||
<?= Html::encode($producer->name) ?></p> |
@@ -37,6 +37,7 @@ termes. | |||
*/ | |||
use domain\Document\Document\DocumentModule; | |||
use yii\helpers\Html; | |||
$documentModule = DocumentModule::getInstance(); | |||
@@ -46,4 +47,5 @@ Bonjour <?= $document->user->name ?>, | |||
Veuillez trouver en pièce jointe votre <?= strtolower($documentModule->getType($document)) ?> <?php if($documentModule->isStatusValid($document)): ?>N°<?= $document->reference ?><?php endif; ?>. | |||
À bientôt. | |||
Bonne réception, | |||
<?= $producer->name ?> |
@@ -16,7 +16,8 @@ version( | |||
"[Administration] Vue générale des utilisateurs", | |||
"[Administration] Menu déroulant producteurs : ajout identifiant + entrée rapide avec la touche Entrée", | |||
"[Administration] Support > tickets : notification par email pour l'admin quand une réponse est apportée à un ticket", | |||
"[Administration] Utilisateurs > modifier : possibilité de définir un mot de passe manuellement" | |||
"[Administration] Utilisateurs > modifier : possibilité de définir un mot de passe manuellement", | |||
"[Technique] Mailer emails courants : gestion mailer via Alwaysdata, Brevo, Mailjet ou fichier en local" | |||
], | |||
[ | |||
"[Administration] Support admin : correctif count tickets dans le menu" |
@@ -90,7 +90,7 @@ class ClosingOrdersController extends Controller | |||
$distributionModule = DistributionModule::getInstance(); | |||
$ordersArray = $orderModule->getRepository()->findOrdersByDistribution($distribution); | |||
$mail = \Yii::$app->mailer->compose( | |||
$mail = \Yii::$app->mailerService->getMailer()->compose( | |||
[ | |||
'html' => '@common/mail/cronOrdersSummary-html', | |||
'text' => '@common/mail/cronOrdersSummary-text', |
@@ -120,12 +120,13 @@ class DocumentManager extends AbstractManager | |||
$subjectEmail .= ' N°' . $document->reference; | |||
} | |||
$email = \Yii::$app->mailer->compose( | |||
$email = \Yii::$app->mailerService->getMailer()->compose( | |||
[ | |||
'html' => '@common/mail/sendDocument-html', | |||
'text' => '@common/mail/sendDocument-text' | |||
], [ | |||
'document' => $document | |||
'document' => $document, | |||
'producer' => $producer | |||
]) | |||
->setTo($this->userSolver->getEmailSendingInvoicingDocuments($document->user)) | |||
->setFrom([$this->producerSolver->getProducerEmailPlatform($producer) => $producer->name]) |
@@ -16,6 +16,7 @@ use domain\Setting\SettingDetails\Admin\General\AdministratorEmailAdminSetting; | |||
use domain\Setting\SettingDetails\Admin\General\AdministratorPhoneNumberAdminSetting; | |||
use domain\Setting\SettingDetails\Admin\General\BulkMailerAdminSetting; | |||
use domain\Setting\SettingDetails\Admin\General\ForumFlarumUrlAdminSetting; | |||
use domain\Setting\SettingDetails\Admin\General\MailerAdminSetting; | |||
use domain\Setting\SettingDetails\Admin\General\MaximumNumberProducersAdminSetting; | |||
use domain\Setting\SettingDetails\Admin\General\SupportOnlineAdminSetting; | |||
use domain\Setting\SettingDetails\Admin\AlertMessage\AdminAlertMessageDisplaySetting; | |||
@@ -39,6 +40,7 @@ class AdminSettingDefinition extends SettingDefinition | |||
new AdministratorPhoneNumberAdminSetting(), | |||
new MaximumNumberProducersAdminSetting(), | |||
new ForumFlarumUrlAdminSetting(), | |||
new MailerAdminSetting(), | |||
new BulkMailerAdminSetting(), | |||
] | |||
], |
@@ -0,0 +1,23 @@ | |||
<?php | |||
namespace domain\Setting\SettingDetails\Admin\General; | |||
use common\components\BulkMailer\BulkMailerInterface; | |||
use domain\Setting\SettingDetails\AbstractSettingDetail; | |||
class MailerAdminSetting extends AbstractSettingDetail | |||
{ | |||
public function __construct() | |||
{ | |||
$this | |||
->setName('mailer') | |||
->setLabel("Mailer emails courants") | |||
->setTypeString() | |||
->setFormTypeSelect([ | |||
'mailerFile' => 'Fichier (local)', | |||
'mailerSmtpAlwaysdata' => 'Alwaysdata (SMTP)', | |||
'mailerSmtpBrevo' => 'Brevo (SMTP)', | |||
'mailerApiMailjet' => 'Mailjet (API)', | |||
]); | |||
} | |||
} |
@@ -123,7 +123,7 @@ class UserProducerBuilder extends AbstractBuilder | |||
$producer = $this->producerRepository->findOneProducerById($payment->id_producer); | |||
if($user && $user->email && strlen($user->email) > 0) { | |||
\Yii::$app->mailer->compose( | |||
\Yii::$app->mailerService->getMailer()->compose( | |||
[ | |||
'html' => '@common/mail/creditLimitReminder-html', | |||
'text' => '@common/mail/creditLimitReminder-text' |