亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

Symfony2中文手冊(cè) / 如何發(fā)送郵件

如何發(fā)送郵件

在任何Web程序開發(fā)中,發(fā)送郵件都是個(gè)經(jīng)典任務(wù),而且格外復(fù)雜、充滿陷阱。不去發(fā)明輪子的一個(gè)郵件發(fā)送解決方案是,使用SwiftmailerBundle,它發(fā)揮了Swift Mailer類庫的威力。這個(gè)bundle已被內(nèi)置于Symfony標(biāo)準(zhǔn)版框架之中。

配置 ?

要使用Swift Mailer,你需要配置它以便在郵件服務(wù)器上能夠使用。

有別于設(shè)置/使用你自己的郵件服務(wù)器,你可能希望選擇一個(gè)郵件托管服務(wù)商比如Mandrill, SendGrid, Amazon SES或其他品牌。它們會(huì)給你提供一個(gè)SMTP服務(wù)器,用戶名以及密碼(一般被稱為keys),這些都是要用到Swift Mailer配置中的。

在標(biāo)準(zhǔn)版Symfony的安裝中,一些swiftmailer配置信息已經(jīng)被包括進(jìn)來:

# 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文件中所設(shè)置的參數(shù)中讀出來的。你可以在那個(gè)文件中修改這些值,或是直接在這里進(jìn)行設(shè)置。

下列配置屬性都是可用的:

  • transport (smtp, mail, sendmail, or gmail)
  • username
  • password
  • host
  • port
  • encryption (tls, or ssl)
  • auth_mode (plain, login, or cram-md5)
  • spool
    • type (如何對(duì)信息(messages)進(jìn)行排序,filememory 都是被支持的,參考 如何滾動(dòng)發(fā)送郵件)
    • path (存儲(chǔ)信息的路徑)
  • delivery_address (一個(gè)郵件地址,用于發(fā)送所有郵件)
  • disable_delivery (設(shè)為true即可徹底關(guān)閉郵件發(fā)送)

發(fā)送郵件 ?

Swift Mailer類庫在工作時(shí),依照創(chuàng)建、配置、然后發(fā)送Swift_Message對(duì)象來進(jìn)行。“mailer”負(fù)責(zé)的是信息的真實(shí)發(fā)送,它可以通過mailer服務(wù)來得到??偟卣f,發(fā)送郵件相當(dāng)直接了當(dāng):

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
         * 如果你同時(shí)希望包容一個(gè)“純文本”版本的信息
        ->addPart(
            $this->renderView(
                'Emails/registration.txt.twig',
                array('name' => $name)
            ),
            'text/plain'
        )
        */
    ;
    $this->get('mailer')->send($message);     return $this->render(...);}

為了實(shí)現(xiàn)松耦合,郵件本體(body)被存儲(chǔ)到一個(gè)模板中,并使用renderView()方法進(jìn)行渲染。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" #}{# 示例,假設(shè)你有一個(gè)名為"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”是一個(gè)絕對(duì)路徑 #}<img src="{{ absolute_url(asset('images/logo.png')) }}">

$message對(duì)象支持許多選項(xiàng),例如包容附件,添加HTML內(nèi)容,等等。幸運(yùn)的是,Swift Mailer在它自己的文檔中涵蓋了Creating Messages(創(chuàng)建信息)的相關(guān)內(nèi)容。