Hosted email quotas

This commit is contained in:
David Bomba 2021-08-09 20:33:59 +10:00
parent c663369d38
commit c2c71ab69c
2 changed files with 20 additions and 11 deletions

View File

@ -227,6 +227,10 @@ class NinjaMailerJob implements ShouldQueue
if(Ninja::isHosted() && strpos($this->nmo->to_user->email, '@example.com') !== false)
return true;
/* GMail users are uncapped */
if(Ninja::isHosted() && $this->nmo->settings->email_sending_method == 'gmail')
return false;
/* On the hosted platform, if the user is over the email quotas, we do not send the email. */
if(Ninja::isHosted() && $this->company->account->emailQuotaExceeded())
return true;

View File

@ -369,21 +369,26 @@ class Account extends BaseModel
if(is_null(Cache::get($this->key)))
return false;
if(Cache::get($this->key) > $this->getDailyEmailLimit()) {
try {
if(Cache::get($this->key) > $this->getDailyEmailLimit()) {
if(is_null(Cache::get("throttle_notified:{$this->key}"))) {
if(is_null(Cache::get("throttle_notified:{$this->key}"))) {
$nmo = new NinjaMailerObject;
$nmo->mailable = new EmailQuotaExceeded($this->companies()->first());
$nmo->company = $this->companies()->first();
$nmo->settings = $this->companies()->first()->settings;
$nmo->to_user = $this->companies()->first()->owner();
NinjaMailerJob::dispatch($nmo);
$nmo = new NinjaMailerObject;
$nmo->mailable = new EmailQuotaExceeded($this->companies()->first());
$nmo->company = $this->companies()->first();
$nmo->settings = $this->companies()->first()->settings;
$nmo->to_user = $this->companies()->first()->owner();
NinjaMailerJob::dispatch($nmo);
Cache::put("throttle_notified:{$this->key}", true, 60 * 24);
Cache::put("throttle_notified:{$this->key}", true, 60 * 24);
}
return true;
}
return true;
}
catch(\Exception $e){
\Sentry\captureMessage("I encountered an error with email quotas - defaulting to SEND");
}
return false;