E-Posta İşlemleri

Symfony uygulama çatısında e-posta göndermek için swiftmailler adlı ek paketi kullanacağız. Bu ek paket symfony kurulumunu yaptığımızda içerisinde kurulu olarak geliyor.

E-posta göndereceğimiz proje içerisinde ilgili ayarları yapalım.E-posta gönderebileceğimiz ücretsiz servisleri yazının sonunda paylaşacağım.


Adım 1

İlk olarak, config.yml dosyamıza aşağıdaki satırları değişiklik yapmadan ekliyoruz.

# app/config/config.yml
swiftmailer:
    transport: "%mailer_transport%"
    host:      "%mailer_host%"
    username:  "%mailer_user%"
    password:  "%mailer_password%"

config.yml içerisinde aşağıdaki seçeneklerde kullanılabilir.

transport (smtp, mail, sendmail, veya gmail)
username
password
host
port
encryption (tls, veya ssl)
auth_mode (plain, login, veya cram-md5)
spool
type (Mesajları nasıl kuyruğa alacağınız veya ek dosyaların boyutu ne kadar olacak ayarları için gereklidir)
path (Postaların depo edileceği dizin)
delivery_address (Postaların gönderici adresi kısmında görünecek kısmı)
disable_delivery (Geliştirme aşamasında e-posta gönderimini devre dışı bırakmak için)

Adım 2

Parameters.yml içerisindeki ilgili ayarlamaları yapalım.

#app\config\parameters.yml

parameters:
    database_driver: pdo_mysql
    database_host: localhost
    database_port: null
    database_name: db
    database_user: db
    database_password: pass
    mailer_transport: smtp
    mailer_host: "HOST"
    mailer_user: "USER"
    mailer_password: "PASS"
    mailer_port: 465
    secret: TOKEN

Adım 3

Son adım olarak nasıl controller içerisinde e-postamızı gönderdiğimizi görelim.

public function indexAction($name)
{
    $message = \Swift_Message::newInstance()
        ->setSubject('Hello Email')
        ->setFrom('[email protected]')
        ->setTo('[email protected]')
        ->setBody(
            $this->renderView(
                // app/Resources/views/Emails/registration.html.twig
                'Emails/registration.html.twig',
                array('name' => $name)
            ),
            'text/html'
        )
        /*
         * If you also want to include a plaintext version of the message
        ->addPart(
            $this->renderView(
                'Emails/registration.txt.twig',
                array('name' => $name)
            ),
            'text/plain'
        )
        */
    ;
    $this->get('mailer')->send($message);

    return $this->render(...);
}

Ücretsiz olarak e-posta gönderebileceğiniz servislerden bazıları; Gmail, Mandrill, Amazon SES,SendGrid servislerini örnek verebiliriz.

results matching ""

    No results matching ""