E-Mail mit Anhang verschicken

Guten Tag,

ich bin gerade dabei ein Plugin zu schreiben, das eine PDF-Datei per Mail an den Kunden schickt.

Die Mail geht auch raus, allerdings funktioniert das hinzufügen der PDF nicht. 

Es wäre klasse, wenn mir jemand ein Beispiel geben könnte, wie man in Shopware eine Mail mit Anhang verschickt.

Ich habe schon in der Doku und im Forum geguckt & nichts gefunden (bzw. nicht verstanden) 

Mein bisheriger Code(Ausschnitt):

$content = file_get_contents(“pfad/zur/datei.pdf”);

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

$mail->IsHTML(0);

$mail->From = Shopware()->Config()->Mail;

$mail->FromName = Shopware()->Config()->Mail;

$mail->Subject = ‘Test’;

$mail->Body = ‘Test-Text’;

$mail->ClearAddresses();

$mail->AddAddress(‘mail@mail.de’, ‘Mail’);

$mail->AddAttachment($content);

$mail->Send();

 

Ich bin mir ziemlich sicher, dass bei AddAttachment einfach was fehlt, weiß aber nicht was.

Vielen Dank schon mal für die Hilfe!

 

Beste Grüße

Jim

Die Methode addAttachment erwartet keinen String sondern ein Objekt vom Typ Zend_Mime_Part

public function addAttachment(Zend_Mime_Part $attachment)

Das kannst du einfach einfach aus einem String erzeugen:

    /**
     * create a new Mime Part.
     * The (unencoded) content of the Part as passed
     * as a string or stream
     *
     * @param mixed $content String or Stream containing the content
     */
    public function __construct($content)
    {
        $this->_content = $content;
        if (is_resource($content)) {
            $this->_isStream = true;
        }
    }

Wäre dann also:

$mail->AddAttachment(new \Zend_Mime_Part($content));

 

1 „Gefällt mir“

Guten Abend,

erstmal danke, das hat mich schon mal einen ganzen Schritt weiter gebracht!

Die Mail + Anhang geht jetzt raus, allerdings ist der Anhang eine Binär-Datei, statt einer PDF oder Text-Datei. (ATT00001.bin)

Deshalb habe ich folgendes probiert:

$attachment = new \Zend_Mime_Part($content);

$attachment->type = ‘application/pdf’;

$attachment->disposition = Zend_Mime::DISPOSITION_ATTACHMENT;

$attachment->encoding = Zend_Mime::ENCODING_BASE64;

$attachment->filename = ‘test.txt’;

$mail->AddAttachment($attachment);

Da kriege ich aber eine Fehlermeldung, dass er die Klasse nicht finden konnte.

"Uncaught Error: Class ‘SwagSloganOfTheDay\Zend_Mime’ not found in… "

Offenbar kann ich da nur in AddAttachment drauf zugreifen.

Wie mache ich das jetzt?

 

Er sucht die Klasse Zend_Mime im Namespace deines Plugins SwagSloganOfTheDay, da Zend_Mine kein FQCN ist. Versuch es mal mit einem Slash davor: \Zend_Mime

1 „Gefällt mir“

Jup, da hätte ich auch selbst drauf kommen können… Vielen vielen Dank!

Falls es wen interessiert:

$content = file_get_contents(“pfad/zur/datei.pdf”);

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

$mail->IsHTML(0);

$mail->From = Shopware()->Config()->Mail;

$mail->FromName = Shopware()->Config()->Mail;

$mail->Subject = ‘Test’;

$mail->Body = ‘Text’;

$mail->ClearAddresses();

$mail->AddAddress($uUserMail, ‘’);

$attachment = new \Zend_Mime_Part($content);

$attachment->type = ‘application/pdf’;

$attachment->disposition = \Zend_Mime::DISPOSITION_ATTACHMENT;

$attachment->encoding = \Zend_Mime::ENCODING_BASE64;

$attachment->filename = $filename;

$mail->AddAttachment($attachment);

$mail->send();

So funktionierts. 

1 „Gefällt mir“