Cara menghantar mel


Dalam mana-mana pembangunan program web, menghantar e-mel adalah tugas klasik, dan ia amat rumit dan penuh dengan perangkap. Penyelesaian untuk menghantar e-mel tanpa mencipta roda adalah dengan menggunakan SwiftmailerBundle, yang memanfaatkan kuasa perpustakaan kelas Swift Mailer. Himpunan ini telah dibina ke dalam rangka kerja Symfony Standard Edition.

Konfigurasi

Untuk menggunakan Swift Mailer, anda perlu mengkonfigurasinya supaya ia boleh digunakan pada pelayan mel.

Daripada menyediakan/menggunakan pelayan e-mel anda sendiri, anda mungkin ingin memilih penyedia pengehosan e-mel seperti Mandrill, SendGrid, Amazon SES atau jenama lain. Mereka akan memberikan anda pelayan SMTP, nama pengguna dan kata laluan (biasanya dikenali sebagai kunci), yang digunakan dalam konfigurasi Swift Mailer.

Dalam versi standard pemasangan Symfony, beberapa swiftmailermaklumat konfigurasi telah disertakan:

# app/config/config.yml
swiftmailer:
    transport: '%mailer_transport%'
    host:      '%mailer_host%'
    username:  '%mailer_user%'
    password:  '%mailer_password%'
<!-- app/config/config.xml --><?xml version="1.0" encoding="UTF-8" ?><container xmlns="symfony.com/schema/dic/services" 
   xmlns:xsi="www.w3.org/2001/XMLSchema-instance"  
  xmlns:swiftmailer="symfony.com/schema/dic/swiftmailer"   
 xsi:schemaLocation="hsymfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd        symfony.com/schema/dic/swiftmailer symfony.com/schema/dic/swiftmailer/swiftmailer-1.0.xsd">     <swiftmailer:config 
     transport="%mailer_transport%"   
     host="%mailer_host%"  
      username="%mailer_user%"     
   password="%mailer_password%"    />
</container>
// app/config/config.php$container->loadFromExtension('swiftmailer', array(
    'transport'  => "%mailer_transport%",
    'host'       => "%mailer_host%",
    'username'   => "%mailer_user%",
    'password'   => "%mailer_password%",));

Nilai ini (seperti %mailer_transport%) diambil daripada parameter yang ditetapkan dalam parameters.yml %mailer_transport%),是从parameters.yml文件中所设置的参数中读出来的。你可以在那个文件中修改这些值,或是直接在这里进行设置。

下列配置属性都是可用的:

  • transport (smtp, mail, sendmail, or gmail)
  • username
  • password
  • host
  • port
  • encryption (tls, or ssl)
  • auth_mode (plain, login, or cram-md5)
  • spool
    • type (如何对信息(messages)进行排序,filememory 都是被支持的,参考 如何滚动发送邮件)
    • path (存储信息的路径)
  • delivery_address (一个邮件地址,用于发送所有邮件)
  • disable_delivery (设为true即可彻底关闭邮件发送)

发送邮件 

Swift Mailer类库在工作时,依照创建、配置、然后发送Swift_Message对象来进行。“mailer”负责的是信息的真实发送,它可以通过mailer服务来得到。总地说,发送邮件相当直接了当:

public function indexAction($name){
    $message = \Swift_Message::newInstance()
        ->setSubject('Hello Email')
        ->setFrom('send@example.com')
        ->setTo('recipient@example.com')
        ->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(...);}

为了实现松耦合,邮件本体(body)被存储到一个模板中,并使用renderView()方法进行渲染。registration.html.twig模板可能像下面这样:

{
# app/Resources/views/Emails/registration.html.twig #}<h3>You did it! You registered!</h3>
 
Hi {{ name }}! You're successfully registered.
 {# example, assuming you have a route named "login" #}{# 示例,假设你有一个名为"login"的路由 #}To login, go to: <a href="{{ url('login') }}">...</a>.
 
Thanks!
 {# Makes an absolute URL to the /images/logo.png file #}{# 确保“/images/logo.png file”是一个绝对路径 #}<img src="{{ absolute_url(asset('images/logo.png')) }}">

$message fail dibacakan. Anda boleh mengubah suai nilai ini dalam fail itu, atau tetapkannya terus di sini.
Sifat konfigurasi berikut tersedia:

  • pengangkutan (smtp , mel, hantar mel atau gmail)
  • nama pengguna
  • kata laluan
  • hos < /code>
  • port
  • enkripsi (tls atau ssl)
  • auth_mode (biasa, log masuk atau cram-md5)
  • spool
)
  • laluan (laluan untuk menyimpan maklumat)
  • alamat_penghantaran (alamat e-mel yang digunakan untuk menghantar semua e-mel)
  • disable_delivery (ditetapkan kepada benar untuk mematikan penghantaran e-mel sepenuhnya)
  • Hantar e-mel ¶🎜

    🎜Pustaka kelas Swift Mailer dicipta mengikut Konfigurasi dan kemudian hantar objek Swift_Message untuk berbuat demikian. "mailer" bertanggungjawab untuk penghantaran maklumat sebenar, yang boleh diperolehi melalui perkhidmatan mailer. Secara keseluruhan, menghantar e-mel agak mudah: 🎜rrreee🎜Untuk mencapai gandingan longgar, badan e-mel disimpan dalam templat dan dipaparkan menggunakan kaedah renderView(). Templat registration.html.twig mungkin kelihatan seperti ini: 🎜🎜rrreee🎜 Objek $message menyokong banyak pilihan, seperti memasukkan lampiran, menambah kandungan HTML dan banyak lagi. Nasib baik, Swift Mailer merangkumi 🎜Mencipta Mesej🎜 dalam dokumentasinya sendiri. 🎜🎜🎜