Skip to content
Mail Service for Symfony 2/3
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Controller
DependencyInjection
Resources/config
Service
Tests/Controller
.gitignore
IpMailBundle.php
README.md
composer.json

README.md

mail-bundle

Mail Service for Symfony 2/3. Der Swiftmailer von Symfony nutzt aktuell RFC2822. Deutsche Umlaute in Domains werfen Fehler. Um diese validieren und versenden zu können ist dieses Bundle gedacht. Die Mail Adresse wird in Punnycode umgewandelt und überprüft. Damit die Mail kein Exeption im Swiftmailer wirft wird ein Teil im Swiftmailer überschrieben.

Build in Webserver

Damit in Punnycode umgewandelt werden kann muss folgende PHP Extension aktiviert sein:

extension=php_intl.dll

Install

composer require benblub/mail-bundle --dev

add to your routing.yml

ipmail:
    resource: "@IpMailBundle/Resources/config/routing.yml"
    prefix:   /

Enable the Bundle in your appkernel

new Ip\MailBundle\IpMailBundle(),

Use

    // get Mail Service
    $mailService = $this->get('mail');
    // E-Mail Adresse validieren
    $resultValidEmail = $mailService->isValidEmail($email);

Wenn mehrere Adressen zum versenden in einer Schleife z.B. durchlaufen werden können hier die invaliden in einem Array gespeichert und mit Continue gearbeitet werden. Später kann man sich die fehlerhaften Adressen dann ausgeben lassen.

// Todo: Im Skeleton am besten mit Flush-Messages arbeiten!

    // Ergebnis prüfen
    // Mail Adress invalid
    if($resultValidEmail === false)
    {
        $invalidEmailAdress[] = $value['email'];
        continue;
    }

Swiftmailer

Damit der Swiftmailer kein Exception wirft Code in Funktion auskommentieren. Bei Updates aufpassen, könnte wieder überschrieben werden.

Datei: swiftmailer\classes\Swift\Mime\Headers\MailboxHeader.php Line: 336 (evtl. geändert, einfach nach Function Name suchen..)

    /**
     * Throws an Exception if the address passed does not comply with RFC 2822.
     *
     * @param string $address
     *
     * @throws Swift_RfcComplianceException If invalid.
     */
    private function _assertValidAddress($address)
    {
        if (!preg_match('/^'.$this->getGrammar()->getDefinition('addr-spec').'$/D',
            $address)) {
            throw new Swift_RfcComplianceException(
                'Address in mailbox given ['.$address.
                '] does not comply with RFC 2822, 3.6.2.'
                );
        }
    }
You can’t perform that action at this time.