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.

Dans la version standard de l'installation de Symfony, quelques

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, 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 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 ou gmail)
  • nom d'utilisateur
  • mot de passe
  • hôte < /code>
  • port
  • cryptage (tls, ou ssl)
  • auth_mode (plain, login ou cram-md5)
  • spool
)
  • 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'objet Swift_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. 🎜🎜🎜