Sylius/docs/the-book/architecture/e-mails.md
2024-11-13 11:26:19 +00:00

214 lines
6.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
layout:
title:
visible: true
description:
visible: false
tableOfContents:
visible: true
outline:
visible: true
pagination:
visible: true
---
# E-Mails
Sylius is sending various e-mails and this chapter is a reference about all of them. Continue reading to learn what e-mails are sent, when, and how to customize the templates. To understand how e-mail sending works internally, please refer to [SyliusMailerBundle documentation](https://github.com/Sylius/SyliusMailerBundle/blob/master/docs/index.md). To learn more about mailer services configuration, read the dedicated [cookbook](../../the-cookbook-2.0/how-to-customize-email-templates-per-channel.md).
### User Confirmation
Every time a customer registers via the registration form, a user registration e-mail is sent to them.
**Code**: `user_registration`
**The default template**: `@SyliusShop/Email/userRegistration.html.twig`
You also have the following parameters available:
* `user`: Instance of the user model
* `channel`: Currently used channel
* `localeCode`: Currently used locale code
### Email Verification
When a customer registers via the registration form, besides the User Confirmation an Email Verification is sent.
**Code**: `verification_token`
**The default template**: `@SyliusShop/Email/verification.html.twig`
You also have the following parameters available:
* `user`: Instance of the user model
* `channel`: Currently used channel
* `localeCode`: Currently used locale code
### Password Reset
This e-mail is used when the user requests to reset their password in the login form.
**Code**: `reset_password_token`
**The default template**: `@SyliusShop/Email/passwordReset.html.twig`
You also have the following parameters available:
* `user`: Instance of the user model
* `channel`: Currently used channel
* `localeCode`: Currently used locale code
### Order Confirmation
This e-mail is sent when an order is placed.
**Code**: `order_confirmation`
**The default template**: `@SyliusShop/Email/orderConfirmation.html.twig`
You also have the following parameters available:
* `order`: Instance of the order, with all its data
* `channel`: Channel in which an order was placed
* `localeCode`: Locale code in which an order was placed
### Shipment Confirmation
This e-mail is sent when the orders shipping process has started.
**Code**: `shipment_confirmation`
**The default template**: `@SyliusAdmin/Email/shipmentConfirmation.html.twig`
You have the following parameters available:
* `shipment`: Shipment instance
* `order`: Instance of the order, with all its data
* `channel`: Channel in which an order was placed
* `localeCode`: Locale code in which an order was placed
### Contact Request
This e-mail is sent when a customer validates the contact form.
**Code**: `contact_request`
**The default template**: `@SyliusShop/Email/contactRequest.html.twig`
You have the following parameters available:
* `data`: An array of submitted data from a form
* `channel`: Channel in which an order was placed
* `localeCode`: Locale code in which an order was placed
<figure><img src="../../.gitbook/assets/sylius-docs-plusfeature-start (1).png" alt=""><figcaption></figcaption></figure>
### Sylius Plus: Return Requests Emails
{% hint style="info" %}
What are Return Requests? Check [here](../carts-and-orders/returns.md)!
{% endhint %}
#### Return Request Confirmation
This email is sent after a return request has been created by a customer.
**Code**: `sylius_plus_return_request_confirmation`
**The default template**: `@SyliusPlusPlugin/Returns/Infrastructure` `/Resources/views/Emails/returnRequestConfirmation.html.twig`
Parameters:
* `order` - for which the return request has been created
#### Return Request Acceptation
This email is sent when the administrator accepts a return request.
**Code**: `sylius_plus_return_request_accepted`
**The default template**: `@SyliusPlusPlugin/Returns/Infrastructure` `/Resources/views/Emails/returnRequestAcceptedNotification.html.twig`
Parameters:
* `returnRequest` which has been accepted
* `order` of the accepted return request
#### Return Request Rejection
This email is sent when the administrator rejects a return request.
**Code**: `sylius_plus_return_request_rejected`
**The default template**: `@SyliusPlusPlugin/Returns/Infrastructure` `/Resources/views/Emails/returnRequestRejectedNotification.html.twig`
Parameters:
* `returnRequest` which has been rejected
* `order` of the rejected return request
#### Return Request Resolution Change
This email is sent when the administrator changes the return requests resolution proposed by a customer.
**Code**: `sylius_plus_return_request_resolution_changed`
**The default template**: `@SyliusPlusPlugin/Returns/Infrastructure` `/Resources/views/Emails/returnRequestResolutionChangedNotification.html.twig`
Parameters:
* `returnRequest` whose resolution has been changed
* `order` of the modified return request
#### Return Request: Repaired Items Sent
This email is sent when the administrator marks that a return requests repaired items have been sent back to the Customer.
**Code**: `sylius_plus_return_request_repaired_items_sent`
**The default template**: `@SyliusPlusPlugin/Returns/Infrastructure` `/Resources/views/Emails/returnRequestRepairedItemsSentNotification.html.twig`
Parameters:
* `returnRequest` of which the items were sent
* `order` of the return request
<div data-full-width="true">
<figure><img src="../../.gitbook/assets/sylius-docs-plusfeature-end.png" alt=""><figcaption></figcaption></figure>
</div>
### How to send an Email programmatically?
For sending emails **Sylius** is using a dedicated service - **Sender**. Additionally, we have **EmailManagers** for Order Confirmation ([OrderEmailManager](https://github.com/Sylius/Sylius/blob/2.0/src/Sylius/Bundle/ShopBundle/EmailManager/OrderEmailManager.php)) and Shipment Confirmation \
([ShipmentEmailManager](https://github.com/Sylius/Sylius/blob/2.0/src/Sylius/Bundle/AdminBundle/EmailManager/ShipmentEmailManager.php)).
{% hint style="info" %}
While using **Sender** you have the available emails of Sylius available under constants in:
* [Core - Emails](https://github.com/Sylius/Sylius/blob/2.0/src/Sylius/Bundle/CoreBundle/Mailer/Emails.php)
* [User - Emails](https://github.com/Sylius/Sylius/blob/2.0/src/Sylius/Bundle/UserBundle/Mailer/Emails.php)
{% endhint %}
Example using **Sender**:
```php
/** @var SenderInterface $sender */
$sender = $this->container->get('sylius.email_sender');
$sender->send(\Sylius\Bundle\UserBundle\Mailer\Emails::EMAIL_VERIFICATION_TOKEN, ['sylius@example.com'], ['user' => $user, 'channel' => $channel, 'localeCode' => $localeCode]);
```
Example using **EmailManager**:
```php
/** @var OrderEmailManagerInterface $sender */
$orderEmailManager = $this->container->get('sylius.email_manager.order');
$orderEmailManager->sendConfirmationEmail($order);
```
### Learn more
* [Mailer - Documentation](https://github.com/Sylius/SyliusMailerBundle/blob/master/docs/index.md)