메일 보내는 방법


어떤 웹 프로그램 개발에서든 이메일을 보내는 것은 전형적인 작업이며 매우 복잡하고 함정이 가득합니다. 바퀴를 발명하지 않고 이메일을 보내는 솔루션은 Swift Mailer 클래스 라이브러리의 기능을 활용하는 SwiftmailerBundle을 사용하는 것입니다. 이 번들은 Symfony Standard Edition 프레임워크에 구축되었습니다.

Configuration

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에서 가져옵니다. %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 파일은 에 설정된 매개변수에서 읽혀집니다. 해당 파일에서 이러한 값을 수정하거나 여기에서 직접 설정할 수 있습니다.
다음 구성 속성을 사용할 수 있습니다:

)
  • 경로(상점 정보 경로)
  • < /ul>< /li>
  • delivery_address(모든 이메일이 전송되는 하나의 이메일 주소)
  • disable_delivery (이메일 전송을 완전히 끄려면 true로 설정)
  • 이메일 보내기 ¶#🎜 🎜##🎜🎜#Swift Mailer 클래스 라이브러리는 Swift_Message 객체를 생성, 구성 및 전송하는 방식으로 작동합니다. "메일러"는 메일러 서비스를 통해 얻을 수 있는 정보의 실제 전송을 담당합니다. 전반적으로 이메일을 보내는 것은 매우 간단합니다. #🎜🎜#rrreee#🎜🎜#느슨한 결합을 달성하기 위해 이메일 본문(본문)이 템플릿에 저장되고 renderView() 메서드를 사용하여 렌더링합니다. . registration.html.twig 템플릿은 다음과 같습니다: #🎜🎜##🎜🎜#rrreee#🎜🎜# $message 개체는 다음과 같은 다양한 옵션을 지원합니다. 첨부 파일, HTML 콘텐츠 추가 등 다행스럽게도 Swift Mailer는 자체 문서에서 #🎜🎜#Creating Messages#🎜🎜#를 다룹니다. #🎜🎜##🎜🎜##🎜🎜#