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:
post12\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ção
->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 );
}
}
post12\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.
post12\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.
post12\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á formatada 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.
post12\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.




