Email Provider - Inxmail
Partner Information
ABOUT INXMAIL | |
With nearly 20 years of experience, we are a pioneer in software development for email marketing. We support our customers and partners with fantastic service and grow their potential in a targeted way. In doing so, we draw upon a broad range of technology and services. Our solutions are influenced by our strong relationships with customers. We flexibly adapt our solutions to meet specific customer needs. Expertise that pays off: We have been implementing successful email marketing and multichannel campaigns for over 2,000 customers in more than 20 countries since 1999. |
|
YOUR ADVANTAGES: | |
|
Installation
To install Inxmail run the command in the console:
composer require spryker-eco/inxmail:1.0.0
Configuration
To set up the Inxmail initial configuration, use the credentials you received from your Inxmail server. Space id, key id and secret you can get from Settings → API keys panel on Inxmail server:
$config[InxmailConstants::API_EVENT_URL] = '';
$config[InxmailConstants::KEY_ID] = '';
$config[InxmailConstants::SECRET] = '';
Event names depend on your events names on Inxmail server:
$config[InxmailConstants::EVENT_CUSTOMER_REGISTRATION] = '';
$config[InxmailConstants::EVENT_CUSTOMER_RESET_PASSWORD] = '';
$config[InxmailConstants::EVENT_ORDER_NEW] = '';
$config[InxmailConstants::EVENT_ORDER_SHIPPING_CONFIRMATION] = '';
$config[InxmailConstants::EVENT_ORDER_CANCELLED] = '';
$config[InxmailConstants::EVENT_ORDER_PAYMENT_IS_NOT_RECEIVED] = '';
Integration
New customer registration event
Inxmail module has \SprykerEco\Zed\Inxmail\Communication\Plugin\Customer\InxmailPostCustomerRegistrationPlugin
. This plugin implements PostCustomerRegistrationPluginInterface
and can be used in \Pyz\Zed\Customer\CustomerDependencyProvider::getPostCustomerRegistrationPlugins.
...
use SprykerEco\Zed\Inxmail\Communication\Plugin\Customer\InxmailPostCustomerRegistrationPlugin
...
/**
* @return \Spryker\Zed\CustomerExtension\Dependency\Plugin\PostCustomerRegistrationPluginInterface[]
*/
protected function getPostCustomerRegistrationPlugins(): array
{
return [
...
new InxmailPostCustomerRegistrationPlugin(),
...
];
}
The customer asked to reset password event
Inxmail module has \SprykerEco\Zed\Inxmail\Communication\Plugin\Customer\InxmailCustomerRestorePasswordMailTypePlugin
. This plugin implements MailTypePluginInterface
and can be used in \Pyz\Zed\Mail\MailDependencyProvider::provideBusinessLayerDependencies
...
use \SprykerEco\Zed\Inxmail\Communication\Plugin\Customer\InxmailCustomerRestorePasswordMailTypePlugin;
...
/**
* @param \Spryker\Zed\Kernel\Container $container
*
* @return \Spryker\Zed\Kernel\Container
*/
public function provideBusinessLayerDependencies(Container $container)
{
$container = parent::provideBusinessLayerDependencies($container);
$container->extend(self::MAIL_TYPE_COLLECTION, function (MailTypeCollectionAddInterface $mailCollection) {
$mailCollection
...
->add(new InxmailCustomerRestorePasswordMailTypePlugin())
...
return $mailCollection;
});
...
return $container;
}
Order referenced commands
Inxmail module has four different commands:
\SprykerEco\Zed\Inxmail\Communication\Plugin\Oms\Command\InxmailNewOrderPlugin
\SprykerEco\Zed\Inxmail\Communication\Plugin\Oms\Command\InxmailOrderCanceledPlugin
\SprykerEco\Zed\Inxmail\Communication\Plugin\Oms\Command\InxmailPaymentNotReceivedPlugin
\SprykerEco\Zed\Inxmail\Communication\Plugin\Oms\Command\InxmailShippingConfirmationPlugin
You can use this commands in \Pyz\Zed\Oms\OmsDependencyProvider::getCommandPlugins
...
use SprykerEco\Zed\Inxmail\Communication\Plugin\Oms\Command\InxmailNewOrderPlugin;
...
/**
* @param \Spryker\Zed\Kernel\Container $container
*
* @return \Spryker\Zed\Oms\Communication\Plugin\Oms\Command\CommandCollection
*/
protected function getCommandPlugins(Container $container)
{
$collection = parent::getCommandPlugins($container);
...
$collection->add(new InxmailNewOrderPlugin(), 'Inxmail/SendNewOrderRequest');
...
return $collection;
}
After that you are ready to use commands in OMS setup:
<events>
<event name="authorize" onEnter="true" manual="true" command="Inxmail/SendNewOrderRequest"/>
<event name="pay" manual="true" timeout="1 hour" />
<event name="export" onEnter="true" manual="true" command="Oms/SendOrderConfirmation"/>
<event name="ship" manual="true" command="Oms/SendOrderShipped"/>
<event name="stock-update" manual="true"/>
<event name="close" manual="true" timeout="1 hour"/>
<event name="return" manual="true" />
</events>
API Requests
\SprykerEco\Zed\Inxmail\Business\Api\Adapter\EventAdapter
which extend \SprykerEco\Zed\Inxmail\Business\Api\Adapter\AbstractAdapter
contains all needed data for sending data to Inxmail for events.
It sends the request via \Generated\Shared\Transfer\InxmailRequestTransfer
<?xml version="1.0"?>
<transfers xmlns="http://xsd.spryker.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://static.spryker.com http://static.spryker.com/transfer-01.xsd">
<transfer name="InxmailRequest">
<property name="event" type="string" />
<property name="transactionId" type="string" />
<property name="payload" type="array" />
</transfer>
</transfers>
The payload for customer loads from \SprykerEco\Zed\Inxmail\Business\Mapper\Customer\AbstractCustomerMapper::getPayload
and for order from \SprykerEco\Zed\Inxmail\Business\Mapper\Order\AbstractOrderMapper
. Abstract classes can be extended and changed in \SprykerEco\Zed\Inxmail\Business\InxmailBusinessFactory.
For right URL's to images in the email body you should extend \SprykerEco\Zed\Inxmail\Business\Mapper\Order\AbstractOrderMapper
and implement protected method getImageItemLink(ArrayObject $images)
.
Copyright and Disclaimer
See Disclaimer.
Last review date: Aug. 28th, 2018