メールの送信方法


Web プログラムの開発において、電子メールの送信は古典的なタスクですが、非常に複雑で落とし穴がたくさんあります。苦労せずに電子メールを送信するための解決策は、Swift Mailer クラス ライブラリの機能を活用する SwiftmailerBundle を使用することです。このバンドルは、Symfony Standard Edition フレームワークに組み込まれています。

設定

Swift Mailer を使用するには、メールサーバー上で使用できるように設定する必要があります。

独自の電子メール サーバーをセットアップ/使用する代わりに、MandrillSendGridAmazon SES またはその他のブランド。これらは、Swift Mailer 設定で使用される SMTP サーバー、ユーザー名、パスワード (一般にキーとして知られています) を提供します。

Symfony インストールの標準バージョンには、いくつかの swiftmailer 設定情報が含まれています:

# 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%",));

これらの値 (%mailer_transport% など) は、parameters.yml ファイルに設定されたパラメーターから読み取られます。そのファイルでこれらの値を変更することも、ここで直接設定することもできます。

次の構成プロパティが利用可能です:

  • transport (smtp, mail, sendmail、または gmail)
  • ユーザー名
  • パスワードhost
  • ##port
  • encryption (
  • tls
  • または ssl) auth_mode (
  • plain
  • login、または cram-md5) スプール
  • type (メッセージ (メッセージ) の並べ替え方法、
      file
    • または memory がサポートされています。 を参照してください。ローリングメールの送信方法)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(...);}
疎結合を実現するために、電子メールの本文 (本文) はテンプレートに保存され、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
このオブジェクトは、添付ファイルの追加、HTML コンテンツの追加など、多くのオプションをサポートしています。 、など。幸いなことに、Swift Mailer は独自のドキュメントで

Creating Messages

について説明しています。