Enviando E-mail através do Zend_Mail

O Zend_Mail prove uma série de classes que facilitam o envio de E-mail. Prove envio simples utilizando a função mail() do PHP, até envio mais complexo usando autenticão ou mesmo com acesso via SSL.

Os métodos do Zend_Mail também prove suporte interface fluent que facilita a programação. Veja abaixo um exemplo simples de envio de E-mail:

10012\index.php
<?php
require_once 'Zend/Mail.php';

$mail = new Zend_Mail();
$mail->setFrom('fulano@dominio.com.br', 'Fulano')   // Quem esta enviando
     ->addTo('beltrano@gmail.com', 'Beltrano Souza')// para quem esta enviando
     ->setBodyText("Teste de mensagem")             // mensagem sem formata?
     ->setSubject("Teste de assunto")               // Assunto
     ->send();                                      // Enviar

Neste exemplo acima o E-mail é enviado com a função mail() do PHP.

/* Os métodos addCc, addTo e setFrom aceitam como parâmetro apenas o $email, ou pode ser informado o $email e $nome. */.

Enviando E-mail com autenticação no servidor de E-mail

o Zend_Mail pode ser auxiliado pela classe  Zend_Mail_Transport_Smtp no envio de e-mail autenticado. Esta classe prové uma série de recursos para se conectar via SMTP em servidores de e-mail.

/* aqui no meu laboratório a unica coisa que não tenho é servidor de envio de E-mail. então sempre faço os envios de e-mail para testar através de autenticação.  Também em muitos sistemas o envio autenticado ainda passa para o servidor de produção, para que e-mail enviado pelo PHP seja considerado Spam */

Abaixo exemplo de envio de E-mail autenticado.

Config.php
<?php

class Config {
    
    public static function getMailInstance() {
        require_once 'Zend/Mail/Transport/Smtp.php';
        
        $config ['auth'] = 'login'; // Email servidor autenticados
        $config ['username'] = 'email@servidor.com.br'; // informa o login do E-mail
        $config ['password'] = '123456789'; // senha
        
        return new Zend_Mail_Transport_Smtp ( "smtp.servidor.com.br", $config );
    }
}
10012\index2.php
<?php
require_once 'Config.php';
require_once 'Zend/Mail.php';

$mail = new Zend_Mail();
$mail->setFrom('fulano@dominio.com.br', 'Fulano')
     ->addTo('beltrano@gmail.com', 'Beltrano Souza')
     ->setBodyText("Teste de mensagem")
     ->setSubject("Teste de assunto")
     ->send(Config::getMailInstance());

Valide as configurações e teste este exemplo.

Enviar Com Cópia (CC) ou Com Cópia Oculta (CCO)

A classe Zend_Mail dá suporte a envio de cópias simples ou ocultas aos e-mail. Para isso temos os métodos addCc() e addBcc(). O método addBcc somente aceita o E-mail.

10012\index3.php
<?php
require_once 'Config.php';
require_once 'Zend/Mail.php';

$mail = new Zend_Mail();
$mail->setFrom('fulano@dominio.com.br', 'Fulano')
     ->addTo('beltrano@gmail.com', 'Beltrano Souza')
     ->addBcc('seila@servidor.com')
     ->addBcc('esteVaicomCC@servidor.com')
     ->setBodyText("Teste de mensagem")
     ->setSubject("Teste de assunto")
     ->send(Config::getMailInstance());

/* Se for enviar várias pessoas com cópia oculta, direcione uma cópia direta ao seu e-mail, para diminuir a possibilidade de ser considerado Spam */

Enviar e-mail formatado

Muitas vezes queremos enviar e-mail com alguma formatação e até usar um editor como o caso do FCKEditor para este fim.

Então neste caso a definição do corpo do E-mail não é mais pelo setBodyText, mais agora pelo setBodyHtml.

10012\index4.php
<?php
require_once 'Config.php';
require_once 'Zend/Mail.php';

$mail = new Zend_Mail();
$mail->setFrom('fulano@dominio.com.br', 'Fulano')
     ->addTo('beltrano@gmail.com', 'Beltrano Souza')
     ->setBodyHtml('<p>Esta mensagem chegar?ormatada no <b>email</b> do cliente<p>')
     ->setSubject("Teste de assunto")
     ->send(Config::getMailInstance());

Enviando E-mail MultiParts

E-mail MultiParts são e-mail ao qual enviamos a mensagem formatada em HTML e outra sem formatação. Os leitores de E-mail selecionarão a que melhor se adapta e o exibirá.

Para isso definimos uma mensagem não formatada no setBodyText, e uma mensagem formatada no setBodyHtml.

10012\index5.php
<?php
require_once 'Config.php';
require_once 'Zend/Mail.php';

$mail = new Zend_Mail();
$mail->setFrom('fulano@dominio.com.br', 'Fulano')
     ->addTo('beltrano@gmail.com', 'Beltrano Souza')
     ->setBodyHtml('<p>Esta mensagem chegará formatada no <b>email</b> do cliente<p>')
     ->setBodyText('O Cliente se acessar de dispositivos móveis irá ler esta mensagem')
     ->setSubject("Teste de assunto")
     ->send(Config::getMailInstance());

Em cliente de E-mail de celulares, a maioria irá exibir o formato texto.

Baixe aqui todos os exemplos deste site.

Fique por dentro de nossas novidades, ideias e atualizações