Enviando E Mail Que Chega Ao Destino usando PHP

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    2 Favorites

    Enviando E Mail Que Chega Ao Destino usando PHP - Presentation Transcript

    1. Enviando e-mail que chega ao destino usando PHP Manuel Lemos mlemos@acm.org http://www.ManuelLemos.net/ CoNaPHP – CONISLI 2008 Congresso Nacional de PHP 2008 http://www.conaphp.com.br/ São Paulo, 18 e 19 de Outubro de 2008
    2. Os problemas ● Enviar e-mail é fundamental ● Suporte nativo de envio de e-mail em PHP é deficiente ● Os padrões da Internet para composição e envio de e-mail são complicados ● Mensagens mal compostas são descartadas ● Mensagens bem compostas são confundidas com SPAM
    3. A solução Componentes prontos em PHP para envio de e- mail ● PHPMailer ● PEAR Mail ● SWIFT mailer ● MIME message ● Etc.
    4. O que é MIME? ● Multipurpose Internet Mail Extensions ● Padrões para envio de mensagens de E-mail ● Definidos através de muitos documentos RFC: Request For Comments ● Novas versões dos documentos RFC compatíveis com versões passadas
    5. Classe MIME message Classe em PHP para compôr e enviar e-mail ● Envia mensagens de texto e HTML com texto em qualquer alfabeto ● Embute arquivos relacionados: imagens, CSS, etc.. ● Pode anexar múltiplos arquivos ● Otimizações para envio de newletters para muitos destinatários
    6. Mensagem de texto require('email_message.php'); $m = new email_message_class; $m->SetEncodedHeader('Subject', 'Isto é o assunto'); $m->SetEmailEncodedHeader('From', 'jose@aqui.com.br', 'João'); $m->SetEmailEncodedHeader('To', 'jose@ali.com.br', 'José'); $texto = “Olá José,\\n\\nEsta é a mensagem.”; $m->AddQuotedPrintableTextPart($texto); $m->Send();
    7. Mensagem de HTML $html = “<html><head><title>Mensagem</title></head><body>Olá José,<br />\\n<br />\\nEsta é a mensagem.</body></html>”; $texto = strip_tags($html); $m->CreateQuotedPrintableHTMLPart($html, '', $h); $m->CreateQuotedPrintableTextPart($texto, '', $t); $alternativas = array($t, $h); $m->AddAlternativeMultipart($alternativas); $m->Send()
    8. Mensagem HTML com imagens embutidas $imagem=array( $m->CreateQuotedPrintableHTMLPart 'FileName'=>'imagem.gif', ($html, '', $h); 'Content-Type' => $texto = strip_tags($html); 'automatic/name', $m->CreateQuotedPrintableTextPart 'Disposition'=>'inline' ($texto, '', $t); ); $alternativas = array($t, $h); $e->CreateFilePart($imagem, $i); $m->AddAlternativeMultipart ($alternativas); $url = 'cid:'. $relacionadas = array( $m->GetPartContentID($i); $alternativas, $i, $html = \"<html> ); <head><title>Mensagem</title> $m->AddRelatedMultipart </head><body><img src=”$url” /> Olá ($relacionadas); José,<br />\\n<br />\\nEsta é a mensagem.</body></html>\"; $m->Send()
    9. Mensagem com arquivos anexados $anexo=array( 'Data'=>'Isto é um arquivo chamado anexo.txt', 'Name'=>'anexo.txt', 'Content-Type'=>'automatic/name', 'Disposition'=>'attachment', ); $m->AddFilePart($anexo); $anexo=array( 'FileName'=>'anexo.zip', 'Content-Type'=>'automatic/name', 'Disposition'=>'attachment', ); $m->AddFilePart($anexo); $m->Send();
    10. Enviando por SMTP Suporta vários tipos de autenticação usando as classes SASL: LOGIN, MD5, NTLM, etc. require('sasl.php'); require('smtp.php'); require('smtp_message.php'); $m = new smtp_message_class; $m->smtp_host = 'smtp.gmail.com'; $m->smtp_port = 465; $m->smtp_ssl = 1; $m->smtp_user = 'usuario'; $m->smtp_password = 'senha'; $m->direct_delivery = 0;
    11. Enviando via sendmail, qmail e Microsoft Exchange Envio mais rápido para fila de espera do MTA require('sendmail_message.php'); $m = new sendmail_message_class; $m->delivery_mode = SENDMAIL_DELIVERY_DEFERRED; require('qmail_message.php'); $m = new qmail_message_class; require('pickup_message.php'); $m = new pickup_message_class;
    12. Alternativas à função mail() Quando a função mail() não funciona bem ● smtp_mail() ● sendmail_mail() ● qmail_mail() ● urgent_mail()
    13. O caminho das mensagens SMTP local Fila local Fila de destino SMTP Pickup Script de PHP MTA SMTP de destino mail() Direct
    14. Melhores métodos de envio 1.Largar arquivo de mensagem na fila local 2.Passar para MTA com função mail (sendmail) 3.Passar para servidor de SMTP local 4.Enviar para direto para SMTP de destino
    15. Otimização de envio de newsletters não personalizadas $lista = array( 'pedro@la.com.br'=>'Pedro', 'paulo@ali.com.br'=>'Paulo', 'maria@acola.com.br'=>'Maria' ); $m->SetBulkMail(1); $m->cache_body = 1; foreach(lista as $email => $nome) { $m->SetEncodedEmailHeader('To', $email, $nome); $m->Send(); } $m->SetBulkMail(0);
    16. Otimização de envio de newsletters personalizadas $m->SetBulkMail(1); $m->cache_body = 0; $template = 'Olá {nome}, ...'; $m->CreateQuotedPrintableTextPart($template, '', $parte_template); $m->AddPart($parte_template); foreach(lista as $email => $nome) { $m->SetEncodedEmailHeader('To', $email, $nome); $texto = str_replace('{nome}', $nome, $template); $m->CreateQuotedPrintableTextPart($texto, '', $personalizada); $m->ReplacePart($parte_template, $personalizada); $m->Send(); } $m->SetBulkMail(0);
    17. Lidando com devoluções 1.Definir o cabeçalho Return-Path com o endereço associado a uma caixa POP3 2.Vigiar regularmente esse endereço usando uma classe de cliente POP3 3.Processar as mensagens recebidas com a classe MIME parser 4.Descadastrar das newsletters os endereços de e-mail que estão devolvendo
    18. Saber quando a mensagem foi recebida Técnicas que nem sempre funcionam 1.Definir o cabeçalho Disposition- Notification-To com um endereço para onde serão enviados avisos de leitura 2.Inserir imagem espiã em mensagem de HTML com URL de script que contabiliza leituras <img src=”http://www.meusite.com.br/conta.php?usuario=joao@ali.com.br”>
    19. Evitar confusão com SPAM Que mensagens não se deve enviar? ● Enviadas a partir de IP sem reverso no DNS ou que consta de listas negras de SPAM ● Destinatários só em cabeçalho Bcc ● Só com HTML ou com HTML inválido ● Com imagens espiãs com parâmetros no URL ● URLs dos links não conferem com os textos ● Não passam nos testes do SpamAssassin
    20. Perguntas? Manuel Lemos mlemos@acm.org
    21. Referências ● Classe MIME Message http://www.phpclasses.org/mimemessage ● Classe SMTP http://www.phpclasses.org/smtpclass ● Classe SASL http://www.phpclasses.org/sasl ● Classe POP3 http://www.phpclasses.org/pop3class ● Classe MIME parser http://www.phpclasses.org/mimeparser ● Verificação de IP em múltiplas listas negras http://openrbl.org/ ● SpamAssassin http://spamassassin.apache.org/

    + manuellemosmanuellemos, 2 years ago

    custom

    2259 views, 2 favs, 23 embeds more stats

    Palestra dada por Manuel Lemos no CONAPHP 2008 - Co more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 2259
      • 1798 on SlideShare
      • 461 from embeds
    • Comments 0
    • Favorites 2
    • Downloads 42
    Most viewed embeds
    • 419 views on http://www.phpclasses.org
    • 9 views on http://php-classes.kinghost.net
    • 6 views on http://php-classes.redesbr.com.br
    • 5 views on http://codesphp.blogspot.com
    • 2 views on http://redesbr.mirrors.phpclasses.org

    more

    All embeds
    • 419 views on http://www.phpclasses.org
    • 9 views on http://php-classes.kinghost.net
    • 6 views on http://php-classes.redesbr.com.br
    • 5 views on http://codesphp.blogspot.com
    • 2 views on http://redesbr.mirrors.phpclasses.org
    • 2 views on http://munroe.users.phpclasses.org
    • 2 views on http://cat.mirrors.phpclasses.org
    • 1 views on http://phpclasses.evecorp.tk
    • 1 views on http://phpclasses.2by2host.com
    • 1 views on http://lehardy.mirrors.phpclasses.org
    • 1 views on http://phpclasses.sgboards.com
    • 1 views on http://www.phpclasses.local
    • 1 views on http://masbytes.mirrors.phpclasses.org
    • 1 views on http://goelette.mirrors.phpclasses.org
    • 1 views on http://phpclasses.firesidemedia.net
    • 1 views on http://phpclasses.mirrors.php-homepage.de
    • 1 views on http://74.125.93.104
    • 1 views on http://phpclasses.nlared.com
    • 1 views on http://phpclasses.mirror.8086.net
    • 1 views on http://phpclasses.fonant.com
    • 1 views on http://phpclasses.masbytes.es
    • 1 views on http://phpclasses.freebourg.org
    • 1 views on http://pointernet.mirrors.phpclasses.org

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories