Enviando E-mail com Zend_Mail
Deixe um Comentário
Enviar e-mail com PHP é uma das tarefas mais fáceis da linguagem, basta você ter um servidor de e-mail corretamente configurado no seu local de hospedagem e passar os parâmetros corretos para a função mail(), então para que utilizar um framework para auxiliar em uma tarefa tanta fácil quanto essa? Simples, pois o Zend Framework facilita ainda mais o que já era fácil e ainda contempla o programador com uma série de novas funcionalidades para essa ação.
Enviando um E-mail Simples
Para enviar um e-mail simples usando Zend_Mail tudo que é necessário fazer é criar uma instância da classe Zend_Mail, no exemplo abaixo, armazenada na variável $mail e em seguida utilizar os métodos dessa classe para configurar o e-mail que será enviado.
$mail = new Zend_Mail();
$mail->setBodyText('Texto do E-mail');
$mail->setSubject('Assunto do Contato');
$mail->setFrom('remetente@remetente.com.br', 'Remetente');
$mail->addTo('destinatario@destinatario.com.br', 'Destinatário');
$mail->send();
O método setBodyText() recebe como parâmetro o texto do e-mail (em texto puro), em seguida são passados os valores do Assunto, Remetente e Destinatário para os métodos posteriores no exemplo acima, os dois últimos podem receber somente um parâmetro sendo o endereço de e-mail em questão, ou receber também um segundo parâmetro com o nome da pessoa em questão. Por fim o método send() é chamado para realizar o envio do e-mail que foi configurado.
Utilizando o Protocolo SMTP
O protocolo padrão do Zend_Mail é praticamente uma extensão da função mail(), porem ainda é possível enviar e-mail utilizando o protocolo SMTP, caso as configurações de servidor SMTP estejam devidamente configuradas no seu servidor tudo que você precisa fazer é alterar o protocolo padrão da seguinte forma:
$protocolo = new Zend_Mail_Transport_Smtp('mail.servidor.com');
Zend_Mail::setDefaultTransport($protocolo);
O que foi feito foi criar uma nova instância da classe Zend_Mail_Transport_Smtp passando como parâmetro para seu construtor o endereço do servidor (que por padrão é “127.0.0.1″) e em seguida passar essa instância da classe para o método estático setDefaultTransport() da classe Zend_Mail, em seguida basta proceder com o envio do e-mail da mesma forma como anteriormente.
É possível ainda que os dados de conexão do seu servidor SMTP não estejam configurados na instalação do seu PHP, isso não impede que você realize o envio da mesma forma, mas nesse caso você terá que passar esse dados através da sua aplicação da forma apresentada abaixo e dar prosseguimento ao envio do e-mail:
$config = array('auth' => 'login',
'username' => 'myusername',
'password' => 'password');
$protocolo = new Zend_Mail_Transport_Smtp('mail.servidor.com', $config);
Enviando Mensagens em HTML
A classe Zend_Mail possui ainda um método específico para o envio de mensagem em HTML, esse método é o setBodyHtml(), que além de receber a mensagem a ser enviada no formato HTML ainda configura os cabeçalhos necessários para que o e-mail seja enviado corretamente, alterando o primeiro exemplo para receber mensagens em HTML deixaria o código da seguinte forma:
$mail = new Zend_Mail();
$mail->setBodyText('Texto do E-mail');
$mail->setBodyHTML('Conteúdo em HTML');
$mail->setSubject('Assunto do Contato');
$mail->setFrom('remetente@remetente.com.br', 'Remetente');
$mail->addTo('destinatario@destinatario.com.br', 'Destinatário');
$mail->send();
Repare que apesar de incluir o método setBodyHTML() nesse exemplo o método setBodyText() ainda permanece sem alteração, o valor passado como parâmetro por esse método será utilizado caso o destintário do e-mail não possa receber conteúdo em HTML.
Anexando Arquivos ao E-mail
O Zend_Mail ainda permite que sejam anexados arquivos ao e-mail que está sendo enviado para isso basta incluir no código de envio de e-mail a seguinte instrução anteriormente ao seu envio:
$mail->createAttachment($arquivoAnexo);
Passando como parâmetro uma instância do arquivo que deseja enviar. Muito provavelmente essa instrução irá funcionar com a maioria dos arquivos a serem enviados, mas alguns arquivos podem necessitar de configurações de MimeType ou Encoding, para uma visão mais completa desse tipo de configuração consulte a documentação oficial do framework
Adicionando Destinatários
Outros detinatários ainda podem ser adicionados ao e-mail conforme mostrado abaixo:
$mail->addTo('destinatario@destinatario.com.br', 'Destinatário 2');
$mail->addCc('destinatariocopia@destinatario.com.br', 'Destinatário em Copia');
$mail->addBcc('destinatariooculto@destinatario.com.br', 'Destinatário em Copia Oculta');
No exemplo acima o primeiro destinatário é um destinatário comum e os seguintes são enviados em Cópia e em Cópia Oculta respectivamente.
Adicionando Cabeçalhos
A classe Zend_Mail ainda possui outros métodos para incluir alguns dos cabeçalhos mais comuns nos e-mails, alguns desses métodos são listados abaixo:
$mail->setReplyTo('resposta@remetente.com.br');
$mail->setDate($date);
$mail->setMessageId($id);
O primeiro deles configura um endereço de resposta ao e-mail, o segundo uma data para o e-mail e o terceiro um Id para a mensagem. Ainda assim se você precisar utilizar o cabeçalho que não esteja presente em nenhum dos métodos do Zend_Mail você pode fazer isso através do método addHeader() que recebe como primeiro parâmetro o nome do cabeçalho e como parâmetros seguinte o(s) valor(es) desse cabeçalho, da seguinte forma:
$mail->addHeader('X-MailGenerator', 'NomeDaAplicacao');
Conclusão
O Zend Framework consegue fazer de uma tarefa simples como o envio de e-mail algo mais simples ainda, e ainda implementa algumas novas funcionalidades ao envio de e-mail com a mesma simplicidade, com isso é possível fazer o envio de e-mail diretamente através da sua aplicação.