public MailHandler::sendMailMessages(MessageInterface $message, AccountInterface $sender)
Sends mail messages as appropriate for a given Message form submission.
Can potentially send up to three messages as follows:
- To the configured recipient;
- Auto-reply to the sender; and
- Carbon copy to the sender.
Parameters
\Drupal\contact\MessageInterface $message: Submitted message entity.
\Drupal\Core\Session\AccountInterface $sender: User that submitted the message entity form.
Throws
\Drupal\contact\MailHandlerException When unable to determine message recipient.
Overrides MailHandlerInterface::sendMailMessages
File
- core/modules/contact/src/MailHandler.php, line 73
Class
- MailHandler
- Provides a class for handling assembly and dispatch of contact mail messages.
Namespace
Drupal\contact
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | public function sendMailMessages(MessageInterface $message , AccountInterface $sender ) { // Clone the sender, as we make changes to mail and name properties. $sender_cloned = clone $this ->userStorage->load( $sender ->id()); $params = array (); $current_langcode = $this ->languageManager->getCurrentLanguage()->getId(); $recipient_langcode = $this ->languageManager->getDefaultLanguage()->getId(); $contact_form = $message ->getContactForm(); if ( $sender_cloned ->isAnonymous()) { // At this point, $sender contains an anonymous user, so we need to take // over the submitted form values. $sender_cloned ->name = $message ->getSenderName(); $sender_cloned ->mail = $message ->getSenderMail(); // For the email message, clarify that the sender name is not verified; it // could potentially clash with a username on this site. $sender_cloned ->name = $this ->t( '@name (not verified)' , array ( '@name' => $message ->getSenderName())); } // Build email parameters. $params [ 'contact_message' ] = $message ; $params [ 'sender' ] = $sender_cloned ; if (! $message ->isPersonal()) { // Send to the form recipient(s), using the site's default language. $params [ 'contact_form' ] = $contact_form ; $to = implode( ', ' , $contact_form ->getRecipients()); } elseif ( $recipient = $message ->getPersonalRecipient()) { // Send to the user in the user's preferred language. $to = $recipient ->getEmail(); $recipient_langcode = $recipient ->getPreferredLangcode(); $params [ 'recipient' ] = $recipient ; } else { throw new MailHandlerException( 'Unable to determine message recipient' ); } // Send email to the recipient(s). $key_prefix = $message ->isPersonal() ? 'user' : 'page' ; $this ->mailManager->mail( 'contact' , $key_prefix . '_mail' , $to , $recipient_langcode , $params , $sender_cloned ->getEmail()); // If requested, send a copy to the user, using the current language. if ( $message ->copySender()) { $this ->mailManager->mail( 'contact' , $key_prefix . '_copy' , $sender_cloned ->getEmail(), $current_langcode , $params , $sender_cloned ->getEmail()); } // If configured, send an auto-reply, using the current language. if (! $message ->isPersonal() && $contact_form ->getReply()) { // User contact forms do not support an auto-reply message, so this // message always originates from the site. if (! $sender_cloned ->getEmail()) { $this ->logger->error( 'Error sending auto-reply, missing sender e-mail address in %contact_form' , [ '%contact_form' => $contact_form ->label(), ]); } else { $this ->mailManager->mail( 'contact' , 'page_autoreply' , $sender_cloned ->getEmail(), $current_langcode , $params ); } } if (! $message ->isPersonal()) { $this ->logger->notice( '%sender-name (@sender-from) sent an email regarding %contact_form.' , array ( '%sender-name' => $sender_cloned ->getUsername(), '@sender-from' => $sender_cloned ->getEmail(), '%contact_form' => $contact_form ->label(), )); } else { $this ->logger->notice( '%sender-name (@sender-from) sent %recipient-name an email.' , array ( '%sender-name' => $sender_cloned ->getUsername(), '@sender-from' => $sender_cloned ->getEmail(), '%recipient-name' => $message ->getPersonalRecipient()->getUsername(), )); } } |
Please login to continue.