Merge pull request #6047 from appwrite/feat-smtp-fixes-2
Feat SMTP Template Simplification
This commit is contained in:
commit
e3576fd460
8 changed files with 155 additions and 103 deletions
|
@ -42,6 +42,10 @@
|
||||||
border: none;
|
border: none;
|
||||||
border-top: 1px solid #E8E9F0;
|
border-top: 1px solid #E8E9F0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
|
@ -62,19 +66,7 @@
|
||||||
<table style="margin-top: 40px">
|
<table style="margin-top: 40px">
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<p>{{hello}}</p>
|
{{body}}
|
||||||
|
|
||||||
<p>{{body}}</p>
|
|
||||||
|
|
||||||
<a href="{{redirect}}" target="_blank">{{redirect}}</a>
|
|
||||||
|
|
||||||
<p><br />{{footer}}</p>
|
|
||||||
<br />
|
|
||||||
|
|
||||||
<p>{{thanks}}
|
|
||||||
<br />
|
|
||||||
{{signature}}
|
|
||||||
</p>
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
15
app/config/locale/templates/email-inner-base.tpl
Normal file
15
app/config/locale/templates/email-inner-base.tpl
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
<p>{{hello}}</p>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<p>{{body}}</p>
|
||||||
|
|
||||||
|
<a href="{{redirect}}" target="_blank">{{redirect}}</a>
|
||||||
|
|
||||||
|
<p>{{footer}}</p>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<p>{{thanks}}</p>
|
||||||
|
|
||||||
|
<p>{{signature}}</p>
|
|
@ -1092,13 +1092,13 @@ App::post('/v1/account/sessions/magic-url')
|
||||||
$url = Template::unParseURL($url);
|
$url = Template::unParseURL($url);
|
||||||
|
|
||||||
$from = $project->isEmpty() || $project->getId() === 'console' ? '' : \sprintf($locale->getText('emails.sender'), $project->getAttribute('name'));
|
$from = $project->isEmpty() || $project->getId() === 'console' ? '' : \sprintf($locale->getText('emails.sender'), $project->getAttribute('name'));
|
||||||
$body = Template::fromFile(__DIR__ . '/../../config/locale/templates/email-base.tpl');
|
$body = $locale->getText("emails.magicSession.body");
|
||||||
$subject = $locale->getText("emails.magicSession.subject");
|
$subject = $locale->getText("emails.magicSession.subject");
|
||||||
|
|
||||||
$smtpEnabled = $project->getAttribute('smtp', [])['enabled'] ?? false;
|
$smtpEnabled = $project->getAttribute('smtp', [])['enabled'] ?? false;
|
||||||
$customTemplate = $project->getAttribute('templates', [])['email.magicSession-' . $locale->default] ?? [];
|
$customTemplate = $project->getAttribute('templates', [])['email.magicSession-' . $locale->default] ?? [];
|
||||||
if ($smtpEnabled && !empty($customTemplate)) {
|
if ($smtpEnabled && !empty($customTemplate)) {
|
||||||
$body = Template::fromString($customTemplate['message'] ?? '');
|
$body = $customTemplate['message'] ?? '';
|
||||||
$subject = $customTemplate['subject'] ?? $subject;
|
$subject = $customTemplate['subject'] ?? $subject;
|
||||||
$from = $customTemplate['senderName'] ?? $from;
|
$from = $customTemplate['senderName'] ?? $from;
|
||||||
|
|
||||||
|
@ -1112,28 +1112,32 @@ App::post('/v1/account/sessions/magic-url')
|
||||||
->setSmtpReplyTo($customTemplate['replyTo'] ?? '')
|
->setSmtpReplyTo($customTemplate['replyTo'] ?? '')
|
||||||
->setSmtpSenderEmail($customTemplate['senderEmail'] ?? '')
|
->setSmtpSenderEmail($customTemplate['senderEmail'] ?? '')
|
||||||
->setSmtpSenderName($customTemplate['senderName'] ?? '');
|
->setSmtpSenderName($customTemplate['senderName'] ?? '');
|
||||||
|
} else {
|
||||||
|
$message = Template::fromFile(__DIR__ . '/../../config/locale/templates/email-inner-base.tpl');
|
||||||
|
$message->setParam('{{body}}', $body);
|
||||||
|
$body = $message->render();
|
||||||
}
|
}
|
||||||
|
|
||||||
$body
|
$emailVariables = [
|
||||||
->setParam('{{subject}}', $subject)
|
'subject' => $subject,
|
||||||
->setParam('{{hello}}', $locale->getText("emails.magicSession.hello"))
|
'hello' => $locale->getText("emails.magicSession.hello"),
|
||||||
->setParam('{{name}}', '')
|
'name' => '',
|
||||||
->setParam('{{body}}', $locale->getText("emails.magicSession.body"))
|
'body' => $body,
|
||||||
->setParam('{{redirect}}', $url)
|
'redirect' => $url,
|
||||||
->setParam('{{footer}}', $locale->getText("emails.magicSession.footer"))
|
'footer' => $locale->getText("emails.magicSession.footer"),
|
||||||
->setParam('{{thanks}}', $locale->getText("emails.magicSession.thanks"))
|
'thanks' => $locale->getText("emails.magicSession.thanks"),
|
||||||
->setParam('{{signature}}', $locale->getText("emails.magicSession.signature"))
|
'signature' => $locale->getText("emails.magicSession.signature"),
|
||||||
->setParam('{{project}}', $project->getAttribute('name'))
|
'project' => $project->getAttribute('name'),
|
||||||
->setParam('{{direction}}', $locale->getText('settings.direction'))
|
'direction' => $locale->getText('settings.direction'),
|
||||||
->setParam('{{bg-body}}', '#f7f7f7')
|
'bg-body' => '#f7f7f7',
|
||||||
->setParam('{{bg-content}}', '#ffffff')
|
'bg-content' => '#ffffff',
|
||||||
->setParam('{{text-content}}', '#000000');
|
'text-content' => '#000000',
|
||||||
|
];
|
||||||
$body = $body->render();
|
|
||||||
|
|
||||||
$mails
|
$mails
|
||||||
->setSubject($subject)
|
->setSubject($subject)
|
||||||
->setBody($body)
|
->setBody($body->render())
|
||||||
|
->setVariables($emailVariables)
|
||||||
->setFrom($from)
|
->setFrom($from)
|
||||||
->setRecipient($user->getAttribute('email'))
|
->setRecipient($user->getAttribute('email'))
|
||||||
->trigger()
|
->trigger()
|
||||||
|
@ -2519,13 +2523,13 @@ App::post('/v1/account/recovery')
|
||||||
|
|
||||||
$projectName = $project->isEmpty() ? 'Console' : $project->getAttribute('name', '[APP-NAME]');
|
$projectName = $project->isEmpty() ? 'Console' : $project->getAttribute('name', '[APP-NAME]');
|
||||||
$from = $project->isEmpty() || $project->getId() === 'console' ? '' : \sprintf($locale->getText('emails.sender'), $projectName);
|
$from = $project->isEmpty() || $project->getId() === 'console' ? '' : \sprintf($locale->getText('emails.sender'), $projectName);
|
||||||
$body = Template::fromFile(__DIR__ . '/../../config/locale/templates/email-base.tpl');
|
$body = $locale->getText("emails.recovery.body");
|
||||||
$subject = $locale->getText("emails.recovery.subject");
|
$subject = $locale->getText("emails.recovery.subject");
|
||||||
|
|
||||||
$smtpEnabled = $project->getAttribute('smtp', [])['enabled'] ?? false;
|
$smtpEnabled = $project->getAttribute('smtp', [])['enabled'] ?? false;
|
||||||
$customTemplate = $project->getAttribute('templates', [])['email.recovery-' . $locale->default] ?? [];
|
$customTemplate = $project->getAttribute('templates', [])['email.recovery-' . $locale->default] ?? [];
|
||||||
if ($smtpEnabled && !empty($customTemplate)) {
|
if ($smtpEnabled && !empty($customTemplate)) {
|
||||||
$body = Template::fromString($customTemplate['message'] ?? '');
|
$body = $customTemplate['message'];
|
||||||
$subject = $customTemplate['subject'] ?? $subject;
|
$subject = $customTemplate['subject'] ?? $subject;
|
||||||
$from = $customTemplate['senderName'] ?? $from;
|
$from = $customTemplate['senderName'] ?? $from;
|
||||||
|
|
||||||
|
@ -2539,30 +2543,34 @@ App::post('/v1/account/recovery')
|
||||||
->setSmtpReplyTo($customTemplate['replyTo'] ?? '')
|
->setSmtpReplyTo($customTemplate['replyTo'] ?? '')
|
||||||
->setSmtpSenderEmail($customTemplate['senderEmail'] ?? '')
|
->setSmtpSenderEmail($customTemplate['senderEmail'] ?? '')
|
||||||
->setSmtpSenderName($customTemplate['senderName'] ?? '');
|
->setSmtpSenderName($customTemplate['senderName'] ?? '');
|
||||||
|
} else {
|
||||||
|
$message = Template::fromFile(__DIR__ . '/../../config/locale/templates/email-inner-base.tpl');
|
||||||
|
$message->setParam('{{body}}', $body);
|
||||||
|
$body = $message->render();
|
||||||
}
|
}
|
||||||
|
|
||||||
$body
|
$emailVariables = [
|
||||||
->setParam('{{subject}}', $subject)
|
'subject' => $subject,
|
||||||
->setParam('{{hello}}', $locale->getText("emails.recovery.hello"))
|
'hello' => $locale->getText("emails.recovery.hello"),
|
||||||
->setParam('{{name}}', $profile->getAttribute('name'))
|
'name' => $profile->getAttribute('name'),
|
||||||
->setParam('{{body}}', $locale->getText("emails.recovery.body"))
|
'body' => $body,
|
||||||
->setParam('{{redirect}}', $url)
|
'redirect' => $url,
|
||||||
->setParam('{{footer}}', $locale->getText("emails.recovery.footer"))
|
'footer' => $locale->getText("emails.recovery.footer"),
|
||||||
->setParam('{{thanks}}', $locale->getText("emails.recovery.thanks"))
|
'thanks' => $locale->getText("emails.recovery.thanks"),
|
||||||
->setParam('{{signature}}', $locale->getText("emails.recovery.signature"))
|
'signature' => $locale->getText("emails.recovery.signature"),
|
||||||
->setParam('{{project}}', $projectName)
|
'project' => $projectName,
|
||||||
->setParam('{{direction}}', $locale->getText('settings.direction'))
|
'direction' => $locale->getText('settings.direction'),
|
||||||
->setParam('{{bg-body}}', '#f7f7f7')
|
'bg-body' => '#f7f7f7',
|
||||||
->setParam('{{bg-content}}', '#ffffff')
|
'bg-content' => '#ffffff',
|
||||||
->setParam('{{text-content}}', '#000000');
|
'text-content' => '#000000',
|
||||||
|
];
|
||||||
$body = $body->render();
|
|
||||||
|
|
||||||
|
|
||||||
$mails
|
$mails
|
||||||
->setRecipient($profile->getAttribute('email', ''))
|
->setRecipient($profile->getAttribute('email', ''))
|
||||||
->setName($profile->getAttribute('name'))
|
->setName($profile->getAttribute('name'))
|
||||||
->setBody($body)
|
->setBody($body)
|
||||||
|
->setVariables($emailVariables)
|
||||||
->setFrom($from)
|
->setFrom($from)
|
||||||
->setSubject($subject)
|
->setSubject($subject)
|
||||||
->trigger();
|
->trigger();
|
||||||
|
@ -2740,13 +2748,13 @@ App::post('/v1/account/verification')
|
||||||
|
|
||||||
$projectName = $project->isEmpty() ? 'Console' : $project->getAttribute('name', '[APP-NAME]');
|
$projectName = $project->isEmpty() ? 'Console' : $project->getAttribute('name', '[APP-NAME]');
|
||||||
$from = $project->isEmpty() || $project->getId() === 'console' ? '' : \sprintf($locale->getText('emails.sender'), $projectName);
|
$from = $project->isEmpty() || $project->getId() === 'console' ? '' : \sprintf($locale->getText('emails.sender'), $projectName);
|
||||||
$body = Template::fromFile(__DIR__ . '/../../config/locale/templates/email-base.tpl');
|
$body = $locale->getText("emails.verification.body");
|
||||||
$subject = $locale->getText("emails.verification.subject");
|
$subject = $locale->getText("emails.verification.subject");
|
||||||
|
|
||||||
$smtpEnabled = $project->getAttribute('smtp', [])['enabled'] ?? false;
|
$smtpEnabled = $project->getAttribute('smtp', [])['enabled'] ?? false;
|
||||||
$customTemplate = $project->getAttribute('templates', [])['email.verification-' . $locale->default] ?? [];
|
$customTemplate = $project->getAttribute('templates', [])['email.verification-' . $locale->default] ?? [];
|
||||||
if ($smtpEnabled && !empty($customTemplate)) {
|
if ($smtpEnabled && !empty($customTemplate)) {
|
||||||
$body = Template::fromString($customTemplate['message'] ?? '');
|
$body = $customTemplate['message'] ?? '';
|
||||||
$subject = $customTemplate['subject'] ?? $subject;
|
$subject = $customTemplate['subject'] ?? $subject;
|
||||||
$from = $customTemplate['senderName'] ?? $from;
|
$from = $customTemplate['senderName'] ?? $from;
|
||||||
|
|
||||||
|
@ -2760,28 +2768,32 @@ App::post('/v1/account/verification')
|
||||||
->setSmtpReplyTo($customTemplate['replyTo'] ?? '')
|
->setSmtpReplyTo($customTemplate['replyTo'] ?? '')
|
||||||
->setSmtpSenderEmail($customTemplate['senderEmail'] ?? '')
|
->setSmtpSenderEmail($customTemplate['senderEmail'] ?? '')
|
||||||
->setSmtpSenderName($customTemplate['senderName'] ?? '');
|
->setSmtpSenderName($customTemplate['senderName'] ?? '');
|
||||||
|
} else {
|
||||||
|
$message = Template::fromFile(__DIR__ . '/../../config/locale/templates/email-inner-base.tpl');
|
||||||
|
$message->setParam('{{body}}', $body);
|
||||||
|
$body = $message->render();
|
||||||
}
|
}
|
||||||
|
|
||||||
$body
|
$emailVariables = [
|
||||||
->setParam('{{subject}}', $subject)
|
'subject' => $subject,
|
||||||
->setParam('{{hello}}', $locale->getText("emails.verification.hello"))
|
'hello' => $locale->getText("emails.verification.hello"),
|
||||||
->setParam('{{name}}', $user->getAttribute('name'))
|
'name' => $user->getAttribute('name'),
|
||||||
->setParam('{{body}}', $locale->getText("emails.verification.body"))
|
'body' => $body,
|
||||||
->setParam('{{redirect}}', $url)
|
'redirect' => $url,
|
||||||
->setParam('{{footer}}', $locale->getText("emails.verification.footer"))
|
'footer' => $locale->getText("emails.verification.footer"),
|
||||||
->setParam('{{thanks}}', $locale->getText("emails.verification.thanks"))
|
'thanks' => $locale->getText("emails.verification.thanks"),
|
||||||
->setParam('{{signature}}', $locale->getText("emails.verification.signature"))
|
'signature' => $locale->getText("emails.verification.signature"),
|
||||||
->setParam('{{project}}', $projectName)
|
'project' => $projectName,
|
||||||
->setParam('{{direction}}', $locale->getText('settings.direction'))
|
'direction' => $locale->getText('settings.direction'),
|
||||||
->setParam('{{bg-body}}', '#f7f7f7')
|
'bg-body' => '#f7f7f7',
|
||||||
->setParam('{{bg-content}}', '#ffffff')
|
'bg-content' => '#ffffff',
|
||||||
->setParam('{{text-content}}', '#000000');
|
'text-content' => '#000000',
|
||||||
|
];
|
||||||
$body = $body->render();
|
|
||||||
|
|
||||||
$mails
|
$mails
|
||||||
->setSubject($subject)
|
->setSubject($subject)
|
||||||
->setBody($body)
|
->setBody($body)
|
||||||
|
->setVariables($emailVariables)
|
||||||
->setFrom($from)
|
->setFrom($from)
|
||||||
->setRecipient($user->getAttribute('email'))
|
->setRecipient($user->getAttribute('email'))
|
||||||
->setName($user->getAttribute('name') ?? '')
|
->setName($user->getAttribute('name') ?? '')
|
||||||
|
|
|
@ -1645,19 +1645,16 @@ App::get('/v1/projects/:projectId/templates/email/:type/:locale')
|
||||||
|
|
||||||
$localeObj = new Locale($locale);
|
$localeObj = new Locale($locale);
|
||||||
if (is_null($template)) {
|
if (is_null($template)) {
|
||||||
$message = Template::fromFile(__DIR__ . '/../../config/locale/templates/email-base.tpl');
|
$message = Template::fromFile(__DIR__ . '/../../config/locale/templates/email-inner-base.tpl');
|
||||||
$message = $message
|
$message
|
||||||
->setParam('{{hello}}', $localeObj->getText("emails.{$type}.hello"))
|
->setParam('{{hello}}', $localeObj->getText("emails.{$type}.hello"))
|
||||||
->setParam('{{name}}', '')
|
->setParam('{{name}}', '')
|
||||||
->setParam('{{body}}', $localeObj->getText("emails.{$type}.body"))
|
|
||||||
->setParam('{{footer}}', $localeObj->getText("emails.{$type}.footer"))
|
->setParam('{{footer}}', $localeObj->getText("emails.{$type}.footer"))
|
||||||
|
->setParam('{{body}}', $localeObj->getText('emails.' . $type . '.body'))
|
||||||
->setParam('{{thanks}}', $localeObj->getText("emails.{$type}.thanks"))
|
->setParam('{{thanks}}', $localeObj->getText("emails.{$type}.thanks"))
|
||||||
->setParam('{{signature}}', $localeObj->getText("emails.{$type}.signature"))
|
->setParam('{{signature}}', $localeObj->getText("emails.{$type}.signature"))
|
||||||
->setParam('{{direction}}', $localeObj->getText('settings.direction'))
|
->setParam('{{direction}}', $localeObj->getText('settings.direction'));
|
||||||
->setParam('{{bg-body}}', '#f7f7f7')
|
$message = $message->render();
|
||||||
->setParam('{{bg-content}}', '#ffffff')
|
|
||||||
->setParam('{{text-content}}', '#000000')
|
|
||||||
->render();
|
|
||||||
|
|
||||||
$from = $project->isEmpty() || $project->getId() === 'console' ? '' : \sprintf($localeObj->getText('emails.sender'), $project->getAttribute('name'));
|
$from = $project->isEmpty() || $project->getId() === 'console' ? '' : \sprintf($localeObj->getText('emails.sender'), $project->getAttribute('name'));
|
||||||
$from = empty($from) ? \urldecode(App::getEnv('_APP_SYSTEM_EMAIL_NAME', APP_NAME . ' Server')) : $from;
|
$from = empty($from) ? \urldecode(App::getEnv('_APP_SYSTEM_EMAIL_NAME', APP_NAME . ' Server')) : $from;
|
||||||
|
@ -1746,7 +1743,7 @@ App::patch('/v1/projects/:projectId/templates/email/:type/:locale')
|
||||||
}
|
}
|
||||||
|
|
||||||
$smtpEnabled = $project->getAttribute('smtp', [])['enabled'] ?? false;
|
$smtpEnabled = $project->getAttribute('smtp', [])['enabled'] ?? false;
|
||||||
if(!$smtpEnabled) {
|
if (!$smtpEnabled) {
|
||||||
throw new Exception(Exception::PROJECT_SMTP_CONFIG_NOT_FOUND);
|
throw new Exception(Exception::PROJECT_SMTP_CONFIG_NOT_FOUND);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -544,7 +544,7 @@ App::post('/v1/teams/:teamId/memberships')
|
||||||
$projectName = $project->isEmpty() ? 'Console' : $project->getAttribute('name', '[APP-NAME]');
|
$projectName = $project->isEmpty() ? 'Console' : $project->getAttribute('name', '[APP-NAME]');
|
||||||
|
|
||||||
$from = $project->isEmpty() || $project->getId() === 'console' ? '' : \sprintf($locale->getText('emails.sender'), $projectName);
|
$from = $project->isEmpty() || $project->getId() === 'console' ? '' : \sprintf($locale->getText('emails.sender'), $projectName);
|
||||||
$body = Template::fromFile(__DIR__ . '/../../config/locale/templates/email-base.tpl');
|
$body = $locale->getText("emails.invitation.body");
|
||||||
$subject = \sprintf($locale->getText("emails.invitation.subject"), $team->getAttribute('name'), $projectName);
|
$subject = \sprintf($locale->getText("emails.invitation.subject"), $team->getAttribute('name'), $projectName);
|
||||||
|
|
||||||
$smtpEnabled = $project->getAttribute('smtp', [])['enabled'] ?? false;
|
$smtpEnabled = $project->getAttribute('smtp', [])['enabled'] ?? false;
|
||||||
|
@ -553,7 +553,7 @@ App::post('/v1/teams/:teamId/memberships')
|
||||||
$body = Template::fromString($customTemplate['message'] ?? '');
|
$body = Template::fromString($customTemplate['message'] ?? '');
|
||||||
$subject = $customTemplate['subject'] ?? $subject;
|
$subject = $customTemplate['subject'] ?? $subject;
|
||||||
$from = $customTemplate['senderName'] ?? $from;
|
$from = $customTemplate['senderName'] ?? $from;
|
||||||
|
|
||||||
$smtp = $project->getAttribute('smtp', []);
|
$smtp = $project->getAttribute('smtp', []);
|
||||||
$mails
|
$mails
|
||||||
->setSmtpHost($smtp['host'] ?? '')
|
->setSmtpHost($smtp['host'] ?? '')
|
||||||
|
@ -564,27 +564,29 @@ App::post('/v1/teams/:teamId/memberships')
|
||||||
->setSmtpReplyTo($customTemplate['replyTo'] ?? '')
|
->setSmtpReplyTo($customTemplate['replyTo'] ?? '')
|
||||||
->setSmtpSenderEmail($customTemplate['senderEmail'] ?? '')
|
->setSmtpSenderEmail($customTemplate['senderEmail'] ?? '')
|
||||||
->setSmtpSenderName($customTemplate['senderName'] ?? '');
|
->setSmtpSenderName($customTemplate['senderName'] ?? '');
|
||||||
|
} else {
|
||||||
|
$message = Template::fromFile(__DIR__ . '/../../config/locale/templates/email-inner-base.tpl');
|
||||||
|
$message->setParam('{{body}}', $body);
|
||||||
|
$body = $message->render();
|
||||||
}
|
}
|
||||||
|
|
||||||
$body->setParam('{{owner}}', $user->getAttribute('name'));
|
$emailVariables = [
|
||||||
$body->setParam('{{team}}', $team->getAttribute('name'));
|
'owner' => $user->getAttribute('name'),
|
||||||
|
'team' => $team->getAttribute('name'),
|
||||||
$body
|
'subject' => $subject,
|
||||||
->setParam('{{subject}}', $subject)
|
'hello' => $locale->getText("emails.invitation.hello"),
|
||||||
->setParam('{{hello}}', $locale->getText("emails.invitation.hello"))
|
'name' => $user->getAttribute('name'),
|
||||||
->setParam('{{name}}', $user->getAttribute('name'))
|
'body' => $body,
|
||||||
->setParam('{{body}}', $locale->getText("emails.invitation.body"))
|
'redirect' => $url,
|
||||||
->setParam('{{redirect}}', $url)
|
'footer' => $locale->getText("emails.invitation.footer"),
|
||||||
->setParam('{{footer}}', $locale->getText("emails.invitation.footer"))
|
'thanks' => $locale->getText("emails.invitation.thanks"),
|
||||||
->setParam('{{thanks}}', $locale->getText("emails.invitation.thanks"))
|
'signature' => $locale->getText("emails.invitation.signature"),
|
||||||
->setParam('{{signature}}', $locale->getText("emails.invitation.signature"))
|
'project' => $projectName,
|
||||||
->setParam('{{project}}', $projectName)
|
'direction' => $locale->getText('settings.direction'),
|
||||||
->setParam('{{direction}}', $locale->getText('settings.direction'))
|
'bg-body' => '#f7f7f7',
|
||||||
->setParam('{{bg-body}}', '#f7f7f7')
|
'bg-content' => '#ffffff',
|
||||||
->setParam('{{bg-content}}', '#ffffff')
|
'text-content' => '#000000',
|
||||||
->setParam('{{text-content}}', '#000000');
|
];
|
||||||
|
|
||||||
$body = $body->render();
|
|
||||||
|
|
||||||
$mails
|
$mails
|
||||||
->setSubject($subject)
|
->setSubject($subject)
|
||||||
|
@ -592,6 +594,7 @@ App::post('/v1/teams/:teamId/memberships')
|
||||||
->setFrom($from)
|
->setFrom($from)
|
||||||
->setRecipient($invitee->getAttribute('email'))
|
->setRecipient($invitee->getAttribute('email'))
|
||||||
->setName($invitee->getAttribute('name'))
|
->setName($invitee->getAttribute('name'))
|
||||||
|
->setVariables($emailVariables)
|
||||||
->trigger()
|
->trigger()
|
||||||
;
|
;
|
||||||
} elseif (!empty($phone)) {
|
} elseif (!empty($phone)) {
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
use Appwrite\Resque\Worker;
|
use Appwrite\Resque\Worker;
|
||||||
|
use Appwrite\Template\Template;
|
||||||
use Utopia\App;
|
use Utopia\App;
|
||||||
use Utopia\CLI\Console;
|
use Utopia\CLI\Console;
|
||||||
use PHPMailer\PHPMailer\PHPMailer;
|
use PHPMailer\PHPMailer\PHPMailer;
|
||||||
|
@ -32,13 +33,21 @@ class MailsV1 extends Worker
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$recipient = $this->args['recipient'];
|
$recipient = $this->args['recipient'];
|
||||||
$subject = $this->args['subject'];
|
$subject = $this->args['subject'];
|
||||||
$name = $this->args['name'];
|
$name = $this->args['name'];
|
||||||
$body = $this->args['body'];
|
$body = $this->args['body'];
|
||||||
|
$variables = $this->args['variables'];
|
||||||
$from = $this->args['from'];
|
$from = $this->args['from'];
|
||||||
|
|
||||||
|
$body = Template::fromFile(__DIR__ . '/../config/locale/templates/email-base.tpl');
|
||||||
|
|
||||||
|
foreach ($variables as $key => $value) {
|
||||||
|
$body->setParam('{{' . $key . '}}', $value);
|
||||||
|
}
|
||||||
|
|
||||||
|
$body = $body->render();
|
||||||
|
|
||||||
/** @var \PHPMailer\PHPMailer\PHPMailer $mail */
|
/** @var \PHPMailer\PHPMailer\PHPMailer $mail */
|
||||||
$mail = empty($smtp) ? $register->get('smtp') : $this->getMailer($smtp);
|
$mail = empty($smtp) ? $register->get('smtp') : $this->getMailer($smtp);
|
||||||
|
|
||||||
|
|
8
composer.lock
generated
8
composer.lock
generated
|
@ -2224,12 +2224,12 @@
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/utopia-php/database.git",
|
"url": "https://github.com/utopia-php/database.git",
|
||||||
"reference": "ab0e2f8ad46884f69b354cd8ee84a1a75fee26d1"
|
"reference": "2d52ce8ac92436cd51c36cff2ec7bfdf00c44189"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/utopia-php/database/zipball/ab0e2f8ad46884f69b354cd8ee84a1a75fee26d1",
|
"url": "https://api.github.com/repos/utopia-php/database/zipball/2d52ce8ac92436cd51c36cff2ec7bfdf00c44189",
|
||||||
"reference": "ab0e2f8ad46884f69b354cd8ee84a1a75fee26d1",
|
"reference": "2d52ce8ac92436cd51c36cff2ec7bfdf00c44189",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
|
@ -2273,7 +2273,7 @@
|
||||||
"issues": "https://github.com/utopia-php/database/issues",
|
"issues": "https://github.com/utopia-php/database/issues",
|
||||||
"source": "https://github.com/utopia-php/database/tree/0.42.3"
|
"source": "https://github.com/utopia-php/database/tree/0.42.3"
|
||||||
},
|
},
|
||||||
"time": "2023-08-22T02:15:28+00:00"
|
"time": "2023-08-25T06:18:31+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "utopia-php/domains",
|
"name": "utopia-php/domains",
|
||||||
|
|
|
@ -13,6 +13,7 @@ class Mail extends Event
|
||||||
protected string $subject = '';
|
protected string $subject = '';
|
||||||
protected string $body = '';
|
protected string $body = '';
|
||||||
protected array $smtp = [];
|
protected array $smtp = [];
|
||||||
|
protected array $variables = [];
|
||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
|
@ -310,6 +311,28 @@ class Mail extends Event
|
||||||
return $this->smtp['replyTo'] ?? '';
|
return $this->smtp['replyTo'] ?? '';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get Email Variables
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function getVariables(): array
|
||||||
|
{
|
||||||
|
return $this->variables;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set Email Variables
|
||||||
|
*
|
||||||
|
* @param array $variables
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function setVariables(array $variables): self
|
||||||
|
{
|
||||||
|
$this->variables = $variables;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Executes the event and sends it to the mails worker.
|
* Executes the event and sends it to the mails worker.
|
||||||
*
|
*
|
||||||
|
@ -325,6 +348,7 @@ class Mail extends Event
|
||||||
'subject' => $this->subject,
|
'subject' => $this->subject,
|
||||||
'body' => $this->body,
|
'body' => $this->body,
|
||||||
'smtp' => $this->smtp,
|
'smtp' => $this->smtp,
|
||||||
|
'variables' => $this->variables,
|
||||||
'events' => Event::generateEvents($this->getEvent(), $this->getParams())
|
'events' => Event::generateEvents($this->getEvent(), $this->getParams())
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue