E-Mail Versand in mehreren Sprachen unmöglich?

Hallo

ich versuche seit einigen Monaten(!) eine E-Mail in verschiedenen Sprachen abzuschicken in einer for Schleife. Dabei soll er stets andere Sprachen nutzen! Bezwecken möchte ich hier, das ich die Ordermail einmal in jeder Sprache bekomme…

Es handelt sich um die funktion oxemail -> sendOrderEmailToUser( )

Ich bekomme es jedoch nicht hin… Ich habe schon vieles versucht:

  • Ich hab in der Schleife den Cache geleert.
  • Ich hab in der Schleife das ‘oxorderlang’ Feld geändert vor dem abschicken der Mail.
  • Ich hab natürlich Base und Tpl Sprache per Funktion geändert…
  • Ich hab die oxShop -> setLanguage() funktion aufgerufen…

Aber nichts passiert. Kann mir jemand helfen? Ich weiß hier keine Lösung mehr.

Das ganze wird für ein UnitTest gebraucht.


$sOxOrderId = 'meineOrderId';
for ($iLangId = 0; $iLangId < 7; $iLangId++) {

      // Delete Cache:
      myHelper::deleteCache();

      // Setze Sprachen auf alle erdenklichen Möglichkeiten...
      oxLang::getInstance()->setBaseLanguage($iLangId);
      oxLang::getInstance()->setTplLanguage($iLangId);

      oxConfig::getInstance()->getActiveShop()->setLanguage($iLangId);

      // Lade Order:
      $oOrder  = oxnew('oxorder');
      $oOrder->load($sOxOrderId);
      
      // Ändere auch die Order Sprache...
      $oOrder->oxorder__oxlang = new oxField( $iLangId );

      // Sende eMail
      $oEmail  = oxnew('oxemail');
      $oEmail->sendOrderEmailToUser($oOrder);
}

Das E-Mail Template sieht so aus:


[{ oxcontent ident="ordermail" }]

Und hier schafft smarty oder oxid nicht mehr den content in die stets aktuelle Sprache auszugeben! Er nutzt immer nur die Sprache die zum ersten mal verwendet wurde… Beginne ich mit FR sind alle Mails in Französisch, beginne ich mit EN sind alle Mails in Englisch …

Jemand eine Idee? Danke!

Ich überlege gerade, wäre denn nicht besser anstatt einer Schleife einfach das nächster E-Mail erst zu senden wenn die vorherige E-Mail einen success gegeben hat?

Grüße
Rafig

Ob die E-Mail versendet wird oder nicht ist mir in den Fall egal, da ich den eigentlichen Body Text schon vorher abfange und per UNIT Test abgleiche. Und hier ist es immer in der selben Sprache wie die erste verschickte. Ich möchte diese eine Mail aber in allen 6 Sprachen einmal bekommen…

Ich vermute hier ein Internen Smarty Caching defekt.

Die einzige Lösung ist hier tatsächlich ein 2. Skript zu schreiben welches nur den E-Mail Versand einer einzigen Mail steuert. Dies könnte ich dann für alle 6 Sprachen aufrufen per exec Befehl… schön und sicher ist aber was anderes!

Ich hab deinen Code mal kurz ausprobiert, als CMS Content [{ oxmultilang ident=“ADD_TO_CART” }] eingetragen und das kommt einmal deutsch und einmal englisch an.

Danke für das Prüfen. Darf ich fragen welche Version zum Test benutzt wird? Ich nutze EE 5.1.6

Ich habe mit CE 4.9.0 getestet.

Hier geht es ja um die Inhalte über oxcontent und nicht oxmultilang.

Gibt es hier einen Lösungsansatz? Steht aktuell vor dem gleichen Problem…

schau dir mal die Funktion sendSendedNowMail() an, dort wird vor dem Versand der Email die Sprache gewechselt.

Ja, habe ich gesehen und bereits probiert. Leider ohne Erfolg…

Wie ist das use case ganz konkret?
CE/PE/EE? Version?
Es soll die selbe Email in verschiedenen Sprachen an den selben Kunden geschickt werden? Zu Testzwecken? (ich versuche den Zusammenhang zu verstehen)
In der Ausgangssituation haben wir eine EE und der Code hat in einer CE scheinbar funktioniert.