Websites und Anwendungen
Magento 1.9 und älter für den E-Mail-Versand über SMTP einrichten
Magento 1.x (einschließlich 1.9) versendet E-Mails mit der PHP-Funktion mail(). Diese E-Mails gehen ohne Authentifizierung hinaus, und Anbieter wie Gmail, Hotmail oder Orange verschieben sie in den Spam oder lehnen sie ab. Die Lösung ist, sie über authentifiziertes SMTP mit einem E-Mail-Konto Ihrer Domain zu senden.
Anders als Magento 2 hat Magento 1 keine SMTP-Option im Administrationsbereich. Es gibt zwei Wege: mit einer Erweiterung (empfohlen) oder durch Bearbeiten des Codes.
Magento 1 erhält seit Juni 2020 keine Sicherheitsupdates mehr. Wenn Ihr Shop noch darauf läuft, erwägen Sie den Wechsel zu OpenMage, seiner gepflegten Fortsetzung (diese Anleitung gilt auch für OpenMage), oder zu Magento 2.
Legen Sie vorher in cPanel das E-Mail-Konto an, von dem aus die E-Mails versendet werden, zum Beispiel tienda@tudominio.com.
Option 1: Erweiterung SMTP Pro (empfohlen)
SMTP Pro Email von ASchroder ist eine kostenlose Open-Source-Erweiterung, kompatibel mit Magento 1.x bis 1.9.4.x und mit OpenMage, das sie in seiner Dokumentation empfiehlt. Die zuletzt veröffentlichte Version ist 2.0.7.
Installieren
Melden Sie sich per SSH an, wechseln Sie in den Magento-Ordner (normalerweise public_html), laden Sie die Version 2.0.7 herunter und kopieren Sie ihren Ordner app über den des Shops:
cd ~/public_html wget https://github.com/aschroder/Magento-SMTP-Pro-Email-Extension/archive/refs/tags/2.0.7.zip -O smtp-pro.zip unzip smtp-pro.zip cp -r Magento-SMTP-Pro-Email-Extension-2.0.7/app/* ./app/ rm -rf Magento-SMTP-Pro-Email-Extension-2.0.7 smtp-pro.zip
Wenn Ihr Shop ein mit Composer installiertes OpenMage ist, können Sie die Erweiterung mit composer require aschroder/smtp_pro installieren.
Leeren Sie den Cache unter System > Cache Management: Wählen Sie alle Typen aus und klicken Sie auf Refresh. Das geht auch per SSH:
rm -rf var/cache/*
Melden Sie sich danach im Administrationsbereich ab und wieder an; sonst liefert der Konfigurationsbereich der Erweiterung einen 404-Fehler.
Konfigurieren
Gehen Sie im Administrationsbereich zu System > Configuration und im linken Menü zu ASCHRODER EXTENSIONS > SMTP Pro. Füllen Sie aus:
| Feld | Wert |
|---|---|
| Email Connection | Custom SMTP |
| Authentication | Login |
| Username | das vollständige E-Mail-Konto, zum Beispiel tienda@tudominio.com |
| Password | das Passwort dieses Kontos |
| Host | localhost |
| Port | 25 |
| SSL Security | None |
Wir verwenden localhost, Port 25 und keine Verschlüsselung, weil die Verbindung innerhalb desselben Servers stattfindet und nicht ins Internet geht. Wenn Sie mit einem externen Konto senden (Gmail, Microsoft 365 …), verwenden Sie Server, Port und Verschlüsselung, die Ihnen dieser Anbieter nennt, zum Beispiel Port 587 mit TLS.
Klicken Sie oben rechts auf Save Config.
Testen
Klicken Sie im selben SMTP-Pro-Bildschirm auf die Schaltfläche Test: Die Erweiterung sendet eine Test-E-Mail und zeigt Ihnen, ob die Verbindung funktioniert hat. Machen Sie danach einen echten Test, etwa eine Testbestellung oder eine Nachricht über das Kontaktformular, und prüfen Sie, dass sie ankommt.
Option 2: den Code bearbeiten (ohne Erweiterung)
Wenn Sie keine Erweiterungen installieren können, können Sie Magento zur Verwendung von SMTP zwingen, indem Sie die beiden Dateien ändern, die E-Mails versenden: Template.php (direkter Versand) und Queue.php (Versand über die Warteschlange, seit Magento 1.9.1).
Bearbeiten Sie nicht die Originale in app/code/core/, denn ein Update würde sie überschreiben. Kopieren Sie die Dateien nach app/code/local/, das Vorrang vor core hat und bei Updates nicht angetastet wird.
1. Die Dateien nach app/code/local kopieren
Per SSH, im Magento-Ordner:
mkdir -p app/code/local/Mage/Core/Model/Email/ cp app/code/core/Mage/Core/Model/Email/Template.php app/code/local/Mage/Core/Model/Email/Template.php cp app/code/core/Mage/Core/Model/Email/Queue.php app/code/local/Mage/Core/Model/Email/Queue.php chmod 600 app/code/local/Mage/Core/Model/Email/*.php
Mit chmod 600 kann nur Ihr Benutzer die Dateien lesen, die das E-Mail-Passwort enthalten werden. Der Ordner app ist bereits durch die .htaccess von Magento geschützt, sodass sie sich nicht über den Browser herunterladen lassen.
2. Template.php bearbeiten
Öffnen Sie app/code/local/Mage/Core/Model/Email/Template.php und suchen Sie die Methode getMail():
public function getMail() { if (is_null($this->_mail)) { $this->_mail = new Zend_Mail('utf-8'); } return $this->_mail; }
Ersetzen Sie sie durch:
public function getMail() { if (is_null($this->_mail)) { $smtp_host = Mage::getStoreConfig('system/smtp/host'); $smtp_port = Mage::getStoreConfig('system/smtp/port'); $config = array( 'port' => $smtp_port, 'auth' => 'login', 'username' => 'tienda@tudominio.com', 'password' => 'tu_contraseña' ); $transport = new Zend_Mail_Transport_Smtp($smtp_host, $config); Zend_Mail::setDefaultTransport($transport); $this->_mail = new Zend_Mail('utf-8'); } return $this->_mail; }
3. Queue.php bearbeiten
Öffnen Sie app/code/local/Mage/Core/Model/Email/Queue.php und suchen Sie in der Methode send() diese Zeilen:
ini_set('SMTP', Mage::getStoreConfig('system/smtp/host')); ini_set('smtp_port', Mage::getStoreConfig('system/smtp/port'));
Ersetzen Sie sie durch:
$smtp_host = Mage::getStoreConfig('system/smtp/host'); $smtp_port = Mage::getStoreConfig('system/smtp/port'); $config = array( 'port' => $smtp_port, 'auth' => 'login', 'username' => 'tienda@tudominio.com', 'password' => 'tu_contraseña' ); $transport = new Zend_Mail_Transport_Smtp($smtp_host, $config); Zend_Mail::setDefaultTransport($transport);
Suchen Sie in derselben Methode diesen Block und löschen oder kommentieren Sie ihn aus, denn wenn ein Return-Path eingestellt ist, schaltet er den Versand wieder auf Sendmail um und hebt SMTP auf:
if ($parameters->getReturnPathEmail() !== null) { $mailTransport = new Zend_Mail_Transport_Sendmail("-f" . $parameters->getReturnPathEmail()); Zend_Mail::setDefaultTransport($mailTransport); }
Ersetzen Sie in beiden Dateien tienda@tudominio.com und tu_contraseña durch die Daten Ihres E-Mail-Kontos.
4. Die Versandeinstellungen prüfen
Gehen Sie im Administrationsbereich zu System > Configuration > Advanced > System > Mail Sending Settings und prüfen Sie:
- Disable Email Communications: No.
- Host:
localhost. - Port (25):
25. - Set Return-Path: No.
Template.phpenthält ebenfalls einen Block, der auf Sendmail umschaltet, wenn diese Option aktiv ist.
Der Code liest Host und Port von hier, mit Mage::getStoreConfig('system/smtp/host') und Mage::getStoreConfig('system/smtp/port').
5. Den Cache leeren und neu kompilieren
Wenn der Compiler aktiviert ist (das sehen Sie unter System > Tools > Compilation), kompilieren Sie neu, damit Magento die neuen Dateien verwendet:
php shell/compiler.php clear php shell/compiler.php compile
Und leeren Sie den Cache:
rm -rf var/cache/*
Bearbeiten Sie immer beide Dateien: Wenn Sie nur eine ändern, verwenden die E-Mails, die über den anderen Weg hinausgehen, weiterhin mail(). Wenn Sie Magento oder OpenMage aktualisieren, vergleichen Sie Ihre Kopien in app/code/local mit den neuen Dateien in core und übernehmen Sie die Änderungen erneut, falls sich etwas geändert hat.
Wenn etwas nicht funktioniert
- Die Bestell-E-Mails gehen nicht hinaus, die Test-E-Mail schon: Seit Magento 1.9.1 kommen Bestell-E-Mails in eine Warteschlange, die per Cron verarbeitet wird. Prüfen Sie, dass ein Cronjob
cron.shodercron.phpalle paar Minuten ausführt. - Wartungsbildschirm nach der Installation der Erweiterung: Löschen Sie die Datei
maintenance.flagim Magento-Ordner. - Verbindungsfehler mit einem externen Server: Für TLS oder SSL muss die PHP-Erweiterung OpenSSL im PHP-Selektor von cPanel aktiviert sein.
Das könnte Ihnen auch helfen
- PrestaShop für den E-Mail-Versand über SMTP einrichten Sorgen Sie dafür, dass die E-Mails von PrestaShop (Bestellungen, Registrierung, Passwörter) über aut...
- Bild und Preis in der Sofortsuche von PrestaShop 1.6, 1.7, 8 und 9 anzeigen Code, damit die Sofortsuche (AJAX) von PrestaShop Bild und Preis jedes Produkts anzeigt: in 1.7, 8 u...
- Den Status einer Bestellung je nach Zahlungsart in PrestaShop ändern Ändern Sie den Status, den PrestaShop einer Bestellung bei der Bestätigung per Nachnahme, Überweisun...
- Mail Alerts: Benachrichtigungen über Bestellungen, Lagerbestand und Rücksendungen in PrestaShop erhalten Installieren und konfigurieren Sie das PrestaShop-Modul Mail Alerts, um bei jeder neuen Bestellung,...
Stimmt etwas nicht oder hat sich etwas geändert? Erzählen Sie es uns, und wir prüfen es.