Mail senden aus Event heraus

Hallo zusammen,

ich habe wieder eine verständnisfrage. ich habe in meinem Plugin ein cronjob eingebaut welcher jede stunde ausgeführt wird. Dazu habe ich mich an das event gehängt mit services.xml einen handler verbunden „/Components/Handler.php“.

Das ausführen funktioniert ohne probleme, nun möchte im handler eine email verschicken, was ich so gemacht habe:

 

custom/plugin//TestPlugin/Components/Handler.php:

Mail();
             $mail->IsHTML(1);
             $mail->From = Shopware()->Config()->Mail;
             $mail->FromName = Shopware()->Config()->Mail;
             $mail->Subject = "E-Mail Betreff";
             $mail->Body = "hallo welt";
             $mail->ClearAddresses();
             $mail->AddAddress("xxx@xxxx.xx");
             if (!$mail->Send()) {
                 return "Beim Senden der E-Mail ist ein Fehler aufgetreten.";
             } else {
                 return "E-Mail wurde verschickt.";
             }
         }catch(\Exception $e){
             return $e->getMessage();
         }

        
    }
}

leider funktioniert das so nicht. eine email wird nicht versandt.

Ich gehe davon aus das der zugriff auf die klasse so nicht richtig ist, aber wie mache ich es anders?

 

Danke für jede hilfe

 

Also ich habe bisher nur aus einem Plugin heraus Mails versendet, das hatte damals so funktioniert:

// init
$mail = Shopware()->Mail();

// Main-Mail-Data
$mail->IsHTML(1);
$mail->From = Shopware()->Config()->Mail;
$mail->FromName = Shopware()->Config()->Mail;
$mail->Subject = "Hier dein Betreff";
$mail->Body = "Hier dein Mailinhalt";

// Receiver
$mail->ClearAddresses();
$mail->AddAddress("hierdiemail@kunde.de");

// Go
if ($mail->Send()) {
  ...
} else {
  ...
}

 

Hast du mal in deine Logs geschaut, ob die Mail vielleicht an Firewall-,Server- oder Mailservereinstellungen am Versenden gehindert wird?

1 „Gefällt mir“

@PStadtfeld schrieb:

Also ich habe bisher nur aus einem Plugin heraus Mails versendet, das hatte damals so funktioniert:

// init
$mail = Shopware()->Mail();

// Main-Mail-Data
$mail->IsHTML(1);
$mail->From = Shopware()->Config()->Mail;
$mail->FromName = Shopware()->Config()->Mail;
$mail->Subject = „Hier dein Betreff“;
$mail->Body = „Hier dein Mailinhalt“;

// Receiver
$mail->ClearAddresses();
$mail->AddAddress(„hierdiemail@kunde.de“);

// Go
if ($mail->Send()) {

} else {

}

 

Hast du mal in deine Logs geschaut, ob die Mail vielleicht an Firewall-,Server- oder Mailservereinstellungen am Versenden gehindert wird?

Vielen Dank, so war es. Nun funktioniert das senden.

Aber vielleicht kannst du mir noch etwas helfen? Wie kann ich in dem event nach der neuen Plugin Form 5.2 legitim eine sql query abfrage machen auf die tabelle s_products?

vielen dank nochmal

Lisa

$queryBuilder = Shopware()->Container()->get('dbal_connection')->createQueryBuilder();

$queryBuilder
    ->select('*')
    ->from('s_products')
    ->where('Hier die Bedingung');

$res = $queryBuilder->execute()->fetch();

wobei s_products gibts glaube ich gar nicht, das wäre dann s_articles oder s_articles_details :stuck_out_tongue:

Am Besten mal kurz googln, das ist bei Shopware nicht ganz so einfach mit dem QueryBuilder, gibt zwar auch alternativen aber SO wäre es sauberer…

 

1 „Gefällt mir“

@PStadtfeld schrieb:

$queryBuilder = Shopware()->Container()->get(‚dbal_connection‘)->createQueryBuilder();

$queryBuilder
->select(‚*‘)
->from(‚s_products‘)
->where(‚Hier die Bedingung‘);

$res = $queryBuilder->execute()->fetch();

wobei s_products gibts glaube ich gar nicht, das wäre dann s_articles oder s_articles_details :stuck_out_tongue:

Am Besten mal kurz googln, das ist bei Shopware nicht ganz so einfach mit dem QueryBuilder, gibt zwar auch alternativen aber SO wäre es sauberer…

 

Ah okay, dann versuche ich das mal. ich war mir nicht sicher ob ich aus dem event heraus darauf zugreifen kann. (meinte natürlich auch s_articles ) 

 

Dank dir

Lisa