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. */.
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.
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 */
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());
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.