Reply to for email notifications (#152)

* Reply to for email notifications

* Polish Code
This commit is contained in:
formsdev
2023-07-26 13:20:27 +05:30
committed by GitHub
parent e28d80e7da
commit 524d4db56e
2 changed files with 47 additions and 1 deletions

View File

@@ -51,7 +51,7 @@ class FormSubmissionNotification extends Notification implements ShouldQueue
->outputStringsOnly();
return (new MailMessage)
->replyTo($notifiable->routes['mail'])
->replyTo($this->getReplyToEmail($notifiable->routes['mail']))
->from($this->getFromEmail(), config('app.name'))
->subject('New form submission for "'.$this->event->form->title.'"')
->markdown('mail.form.submission-notification', [
@@ -66,4 +66,36 @@ class FormSubmissionNotification extends Notification implements ShouldQueue
return $originalFromAddress->first(). '+' . time() . '@' . $originalFromAddress->last();
}
private function getReplyToEmail($default)
{
return $this->getRespondentEmail() ?? $default;
}
private function getRespondentEmail()
{
// Make sure we only have one email field in the form
$emailFields = collect($this->event->form->properties)->filter(function ($field) {
$hidden = $field['hidden'] ?? false;
return !$hidden && $field['type'] == 'email';
});
if ($emailFields->count() != 1) {
return null;
}
if (isset($this->event->data[$emailFields->first()['id']])) {
$email = $this->event->data[$emailFields->first()['id']];
if ($this->validateEmail($email)) {
return $email;
}
}
return null;
}
public static function validateEmail($email): bool
{
return (bool)filter_var($email, FILTER_VALIDATE_EMAIL);
}
}