Comment envoyer du courrier
Dans tout développement de programme web, l'envoi d'emails est une tâche classique, et elle est extrêmement compliquée et pleine d'embûches. Une solution pour envoyer des e-mails sans inventer la roue consiste à utiliser SwiftmailerBundle, qui exploite la puissance de la bibliothèque de classes Swift Mailer. Ce bundle a été intégré au framework Symfony Standard Edition.
Configuration ¶
Pour utiliser Swift Mailer, vous devez le configurer pour qu'il puisse être utilisé sur le serveur de messagerie.
Au lieu de configurer/utiliser votre propre serveur de messagerie, vous souhaiterez peut-être choisir un fournisseur d'hébergement de messagerie tel que Mandrill, #🎜 🎜#SendGrid, Amazon SES ou d'autres marques. Ils vous fourniront un serveur SMTP, un nom d'utilisateur et un mot de passe (communément appelés clés), qui sont utilisés dans la configuration de Swift Mailer.
informations de configuration ont été incluses : 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%",));
Ces valeurs (telles que %mailer_transport%
) sont extraites des paramètres définis dans le parameters.yml %mailer_transport%
),是从parameters.yml文件中所设置的参数中读出来的。你可以在那个文件中修改这些值,或是直接在这里进行设置。
下列配置属性都是可用的:
transport
(smtp
,mail
,sendmail
, orgmail
)username
password
host
port
encryption
(tls
, orssl
)auth_mode
(plain
,login
, orcram-md5
)spool
type
(如何对信息(messages)进行排序,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(...);}
为了实现松耦合,邮件本体(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
fichier lu. Vous pouvez modifier ces valeurs dans ce fichier ou les définir directement ici.
Les propriétés de configuration suivantes sont disponibles :
transport
(smtp
,mail
,sendmail
ougmail
)-
nom d'utilisateur
mot de passe
hôte < /code>
port
cryptage
(tls
, oussl
)auth_mode
(plain
,login
oucram-md5
)spool
type
(Comment trier les messages (messages),fichier code> ou la
em>mémoire
sont prises en charge, veuillez vous référer à Comment envoyer des e-mails avec défilement
path
(chemin pour stocker les informations)delivery_address
(une adresse e-mail utilisée pour envoyer tous les e-mails)disable_delivery
(défini sur true pour désactiver complètement la livraison des e-mails) Envoyer un e-mail ¶🎜
🎜La bibliothèque de classes Swift Mailer est créée selon Configurer, puis envoyez l'objetSwift_Message
pour ce faire. "mailer" est responsable de l'envoi effectif des informations, qui peuvent être obtenues via le service mailer
. Dans l'ensemble, l'envoi d'un e-mail est assez simple : 🎜rrreee🎜Pour obtenir un couplage lâche, le corps de l'e-mail est stocké dans un modèle et rendu à l'aide de la méthode renderView()
. Le modèle registration.html.twig
pourrait ressembler à ceci : 🎜🎜rrreee🎜 L'objet $message
prend en charge de nombreuses options, telles que l'inclusion de pièces jointes, l'ajout de contenu HTML, et bien plus encore. Heureusement, Swift Mailer couvre la 🎜Création de messages🎜 dans sa propre documentation. 🎜🎜🎜