Reply to for email notifications (#152)
* Reply to for email notifications * Polish Code
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user