Ingénieure informatique Freelance Toulouse
Spécialisée dans le développement Web

menu button

Configurer un serveur SMTP sur Magento multi-boutiques

Posté le 18/06/2015 - par Amy Wiggenhauser - dans Magento

illustration

Pour envoyer des emails avec Magento (par exemple lors du passage de commande ou du changement d'état d'une commande), il est possible de configurer soi-même un serveur SMTP.

Cet article propose une solution rapide à mettre en place, qui ne nécessite l'installation d'aucun module.

Choix du serveur SMTP

Il existe de nombreux serveurs SMTP pouvant être utilisés, comme ceux de Gmail ou Hotmail par exemple. Il est également possible d'utiliser un serveur SMTP professionnel (ce qui permet d'éviter les problèmes liés aux limites du nombre d'email envoyés par jour, aux ralentissement du service, etc...).

Le choix dépend essentiellement du nombre d'email et de la fréquence à laquelle vous prévoyez de les envoyer via votre site internet. 

Configuration de Magento

Dans l'espace administrateur de Magento, aller sur la page : Système / Configuration.

Puis dans le menu de gauche, partie "Avancé" : Système / Paramètres d'envoi des emails.

Indiquez les paramètres liés au serveur SMTP de votre boutique principale et pour chaque boutique du multi-boutique pour laquelle vous souhaitez changer de serveur :

  • Désactiver les envois d'email : Non
  • Serveur : par exemple pour Gmail, smtp.gmail.com
  • Port : par défaut 25

Différencier les boutiques

Pour configurer des serveurs ou des adresses emails différentes suivant la boutique utilisée, nous allons utiliser la fonction Mage::app()->getStore()->getStoreId() qui indique l'id de la boutique en cours d'utilisation.

Pour connaître les id des différentes boutiques, se connecter à la base de données et chercher la table core_store. Cette table contient la liste des boutiques et leurs id, ils seront utilisés juste après dans le code ci-dessous.

Configuration des serveurs SMTP pour chaque boutique

Créer une copie de sauvegarde de votre fichier app/code/core/Mage/core/Model/Email/Template.php.

Dans ce fichier, modifier la fonction getMail(), comme ci-dessous. Les éléments à remplacer par vos propres éléments sont surlignés en vert :

public function getMail()
{

if (is_null($this->_mail)) {

/* Début de la configuration personnalisée */
$my_smtp_host = Mage::getStoreConfig('system/smtp/host');
$my_smtp_port = Mage::getStoreConfig('system/smtp/port');

if (Mage::app()->getStore()->getStoreId() == 1) { //Remplacer "1" par l'id de la première boutique à configurer

$config = array(
'ssl' => 'tls',
'port' => $my_smtp_port,
'auth' => 'login',
'username' => 'votre-email-1@domaine.com',
'password' => 'votre-mot-de-passe-1'

);

} else if (Mage::app()->getStore()->getStoreId() == 2) { //Remplacer "2" par l'id de la seconde boutique à configurer

$config = array(
'ssl' => 'tls',
'port' => $my_smtp_port,
'auth' => 'login',
'username' => 'votre-email-2@domaine.com',
'password' => 'votre-mot-de-passe-2'

);

//...etc, continuer de même pour les autres boutiques ... 

} else { // Configuration principale

$config = array(
'ssl' => 'tls',
'port' => $my_smtp_port,
'auth' => 'login',
'username' => 'votre-email@domaine.com',
'password' => 'votre-mot-de-passe'
);

}

$transport = new Zend_Mail_Transport_Smtp($my_smtp_host, $config);

Zend_Mail::setDefaultTransport($transport);
/* Fin de la configuration personnalisée */

$this->_mail = new Zend_Mail('utf-8');

}

return $this->_mail;

}

Et voilà !

Les emails envoyés par les différentes boutiques de Magento seront dirrigés automatiquement vers le bon serveur SMTP.

Améliorations possibles

La solution présentée ici est une solution rapide, qui ne nécessite pas le développement d'un module Magento.

Pour améliorer cette solution, il est possible de créer un module pour gérer les adresses email et les mots de passe en fonction des boutiques, ce qui permet de modifier la configuration depuis Magento sans avoir à modifier le code du site internet à chaque fois.

Cette solution sera abordée dans un prochain article. A suivre.

 

Crédit photo : Designed by Freepik

Commentaires

Aucun commentaire pour le moment.


Laisser un commentaire

Pseudo * :
Votre adresse email * (ne sera pas publiée) :
Commentaire * :


* Champs obligatoires

Pour connaitre et exercer vos droits, notamment de retrait de votre consentement à l'utilisation des données collectées par ce formulaire, veuillez consulter notre politique de confidentialité.

Autres réalisations