Navigation

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:  
  • Broad portfolio of technology, service and know-how - from the standard solution to individual solution packages
  • E-mail delivery solutions for highly personalized newsletters, transaction mails, and automated e-mail campaigns
  • Delivery security via whitelisted mail server even with high mail volumes
  • Powerful interfaces for seamless integration into existing system landscapes
  • Software made and hosted in Germany
  • DSGVO-compliant e-mail marketing
  • Co-founder and member of the Certified Senders Alliance (CSA)
  • Award Winning: Competent, Fast and Reliable Customer Service and Support
  • Personal advice and contact person

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_CANCELED] = '';
				$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).

 

Last review date: Aug. 28th, 2018