メールの送信方法
Web プログラムの開発において、電子メールの送信は古典的なタスクですが、非常に複雑で落とし穴がたくさんあります。苦労せずに電子メールを送信するための解決策は、Swift Mailer クラス ライブラリの機能を活用する SwiftmailerBundle を使用することです。このバンドルは、Symfony Standard Edition フレームワークに組み込まれています。
設定 ¶
Swift Mailer を使用するには、メールサーバー上で使用できるように設定する必要があります。
独自の電子メール サーバーをセットアップ/使用する代わりに、Mandrill、SendGrid、 Amazon 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 (情報を保存するパス)
- または
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()
メソッドを使用してレンダリングされます。
テンプレートは次のようになります:
{ # 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