Logotipo desenvolvimento para web

Swift Mailer: solução PHP para envio de e-mails

Uma das partes mais importantes em um web site é a área de contato. Quer seja um site insitucional, comércio eletrônico, blog, site pessoal ou outros, uma área especialmente dedicada ao envio de mensagens é essencial, já que esta é a “ponte” entre você (ou a loja, a instituição, a fábrica, o prestador de serviços, etc) e aquele que visita o espaço virtual.

Para melhorar o tempo do projeto e agilidade e performance da aplicação, por vezes é vantajoso optar por uma solução pronta para envio de e-mails, o que poupa enorme investimento de tempo (custo de oportunidade) e permite desfrutar de uma solução eficiente para envio de mensagens através de e-mail, uma biblioteca idealizada e feita visando tal objetivo.

Swift Mailer

Swift Mailer é uma biblioteca PHP – orientado a objeto – que tem por finalidade facilitar, agilizar e servir como ferramenta útil e eficaz para envio de e-mails em web sites e aplicações online, em geral. Enviar e-mails de forma fácil com PHP é o que é possível quando se utiliza Swift Mailer.

Características do Swift Mailer

O Swift Mailer não é simplesmente uma biblioteca PHP para tornar fácil de se usar a função mail(), nativa do PHP. Ele provê muito mais recursos e possibilidades – como citado, Swift Mailer é uma biblioteca PHP para envio de e-mails e, como tal, possui diversas caracteristicas para isso; características essas que o tornam uma solução completa em PHP para enviar e-mails.

As características principais do Swift Mailer são:

  • Envio de e-mail usando o protocolo SMTP ou MTA, o que tem performance superior que usar a função nativa mail();
  • Controle de cabeçalho com RFC 2822;
  • Internacionalização (i18n);
  • Suporte SSL & TLS (para servidores GMail);
  • Inclusão de arquivos anexos e imagens diretamente no corpo das mensagens;
  • Controle de prioridade de mensagens;
  • Monitoramente de gasto de banda;
  • E-mails com CC e CCo;
  • Envio de newsletters;
  • Dentre outras características.

Enfim, devido a estas características listadas – e olha que tem muito mais! -, é possível perceber que o Swift Mailer é uma maneira fácil de enviar e-mails (com arquivos anexos, imagens no corpo da mensagem, etc) de forma rápida, automatizada e, consequentemente, bem fácil.

Como usar o Swift Mailer

No próprio site oficial do Swift Mailer há uma série de documentos, tutoriais e exemplos para quem ainda não usa a biblioteca, passar a usá-la e não sentir dificuldades em conhecer seu funcionamento.

Através de explicações sobre a API do Swift Mailer, manual de instalação, configuração e uso, dicas e truques, perguntas mais frequentes, fórum e outros tipos de textos de ajuda e explicação sobre Swift Mailer, é possível conhecer e estudar mais a fundo esta aplicação PHP para envio de e-mails.

Baixe logo o Swift Mailer!

Pessoalmente, como “sofredor” de alguns projetos que exigiram um pouco mais de recursos para envio de mensagens, posso afirmar que uma solução completa para envio de mensagens por e-mail como o Swift Mailer é realmente uma valiosa aquisição para se ter na biblioteca particular de scripts – todo programador tem uma! :-D

Com Swift Mailer é realmente muito simples rápido o envio de mensagem por e-mails, em web sites, aplicações online e sistemas virtuais de qualquer porte; desde um simples formulário de contato ao envio de newsletters. Com a biblioteca Swift Mailer certamente os problemas relacionados ao envio de emails estão com os dias contados e sua produtividade e despreocupação com esta parte do desenvolvimento para web, também.

Guest Post que participei sobre networking

Fui convidado pelo Paulo Faustino, do Escola Dinheiro, para escrever um guest post. Em nossas conversas, ele disse que deveria escolher um tema relacionado aos que são abordados em seu blog sobre marketing virtual, otimização de blogs, monetização online e assuntos correlatos. Tive a idéia de falar sobre networking, explicando um pouco a respeito, apresentando alguns pontos de vista e dando um incentivo, através de dicas, para que as pessoas comecem a criar sua própria rede de relacionamentos.

Segundo o próprio Paulo Faustino me disse, o artigo ficou muito bom e útil para quem o ler. Recebi comentários positivos por comentários no desenvolvimento para web e e-mail, também, o que mostrou que as informações realmente agradaram às pessoas que já leram o artigo.

Então, convido você a dar um pulinho no Escola Dinheiro e ler o artigo que escrevi sobre networking. Se ainda não o conhece o blog, aproveite para explorar seus conteúdos e assinar o feed do Escola Dinheiro, pois o conteúdo que é colocado por lá regularmente é de muita qualidade!

Leia o artigo sobre networking.

Diferenças entre IDs e Classes

Principalmente quando no início dos estudos sobre desenvolvimento para web, é comum haver confusões entre IDs e Classes, tão utilizados e necessários em XHTML, CSS e Javascript. Vários tutoriais na internet explicam alguns pontos básicos e dão certas orientações, mas nada muito aprofundado e esclarecedor. O resultado: as dúvidas persistem e a diferença entre ID e Classe ainda não é “desvendada”. Com este artigo este “mistério” chega ao fim! ;-)

Este é um artigo traduzido do original “The Difference Between ID and Class“, do blog CSS-Tricks, e a tradução foi feita com autorização do autor.

IDs e classes são “anzóis”

Precisamos de formas de descrever conteúdos em documentos HTML / XHTML. Os elementos básicos como <h1>, <p> e <ul> frequentemente fazer o trabalho, mas o conjunto básico de tags não abragen todas as possibilidades de elementos de página ou escolhas de layout. Para isso, precisamos de IDs e Classes.

Por exemplo <ul id=”nav”>, isso dá a oportunidade de visar especificamente esta lista, então há uma maneira de manipular esta lista exclusivamente em relação a outras listas não-ordenadas da página. Ou talvez tivéssemos uma seção na página que não possui uma tag relevante para signifcar, por exemplo, um rodapé, onde poderíamos fazer algo como <div id=”footer”>. Ou talvez tenhamos boxes na barra lateral para manter o conteúdo separado de alguma forma: <div class=”sidebar-box”>.

Metáfora de classe XHTML em div: anzol.

Esses IDs e classes são os “anzóis” que precisamos fazer na marcação para colocarmos as mãos neles. CSS obviamente precisa disso para que possa fazer seletores e montar folhas de estilos, mas outras linguagens web, como javascript, também dependem deles. Mas quais as diferenças entre IDs e classes?

IDs são únicos

  • Cada elemento pode ter apenas um ID;
  • Cada página pode ter apenas um elemento com aquele ID.

Quando se está aprendendo sobre isso, é comum ouvir que só se deve usar IDs uma vez, mas é possível usar uma classe várias vezes. Basicamente, isso entra num ouvido e sai no outro, porque soa mais como uma “regrinha” que algo realmente importante. Se você trata somente com HTML / CSS, isso pode acontecer com você, também, porque eles realmente não parecem fazer nada de diferente.

Aqui vai uma: seu código não vai passar pelo validador se você usar o mesmo ID em mais de um elemento. Validação deve ser importante para todos nós, de modo que, por si só, é algo muito importante. Adiante, mais razões pelas quais um ID deve ser único.

Classes não são únicas

  • Você pode usar a mesma classe para vários elementos;
  • Você pode usar várias classes para um mesmo elemento.

Qualquer informação de estilo que precise ser aplicada a múltiplos elementos em uma página deve ser feita com uma classe. Tomemos como uma exemplo uma página com vários “widgets“:

<div class="widget"></div>
<div class="widget"></div>
<div class="widget"></div>

Agora, é possível usar a mesma classe “widget” como gancho para aplicar o mesmo conjunto de estilos para cada um deles. Mas, e se for preciso ter um deles maior que os outros, mas continuar com um estilo que compartilhe dos outros atributos? É possível aplicar mais de uma classe a um elemento:

<div class="widget"></div>
<div class="widget big"></div>
<div class="widget"></div>

Não há necessidade de fazer e nomear uma nova classe aqui, apenas colocar o nome da nova classe no atributo class, juntamente com o nome da classe que já está lá. As diferentes classes são delimitadas por espaços e a maioria dos navegadores permite quaisquer números delas (na verdade, é mais como milhares, o que é muito mais do que realmente é preciso).

Não existem padrões de IDs e Classes em nenhum navegador

Colocar um nome de classe ou ID em um elemento, por padrão não faz nada a esse elemento.

Isso é algo que intriga quem é iniciante. Você está trabalhando em um site e descobre que a aplicação de uma classe com um nome em particular resolve um problema que você tem. Então você mexe em outro site, com o mesmo problema, e tenta corrigí-lo da mesma maneira, usando aquele mesmo nome de classe, pensando que o nome da classe, por si só, tem alguma propriedade mágica, apenas para descobrir que não funciona assim…

Classes e IDs não têm qualquer estilo por si mesmos. É preciso CSS para orientar e aplicar estilos.

Códigos de Barra e Números de Série

Exemplos de código de barra e número de série.

Talvez códigos de barra e números de série sejam uma boa analogia. Tome um iPod, numa loja. Na embalagem há um código de barras. Ele indica à loja que produto é esse; então, quando é escaneado, o código de barras informa exatamente que produto é aquele e quanto custa. É possível saber até sua cor e em qual lugar do armazém ele era mantido. Todos esses iPods têm exatamente o mesmo tipo de código de barras.

O iPod tem também um número de série que é absolutamente único em relação a qualquer outro iPod (ou outro dispositivo) em todo o mundo. O número de série não informa o preço. Poderia, mas para a loja que o vende esta não seria uma maneira eficaz de armazenar e utilizar essa informação. É muito mais fácil usar um código de barras porque se, por exemplo, o preço muda, é preciso apenas alterar o preço para aquele código de barras, e não para cada número serial do sistema.

Isso é muito parecido com IDs e Classes. Informações que são reusadas devem ser mantidas em uma classe e informações que são totalmente únicas devem ser mantidas em um ID.

IDs têm uma funcionalidade especial nos navegadores

Classes não tem funcionalidades especiais no browser, mas IDs têm um truque muito especial na manga: um “valor de hash” para URLs. Se você tiver um URL como http://seudominio.com#comments, o navegador vai tentar localizar o elemento com o id “comments” e vai automaticamente rolar a página até chegar nesse elemento.

É importante observar que o browser vai rolar a página até onde quer que o elemento esteja; então, se houver algo de especial, como uma DIV com barra de rolagem (propriedade CSS overflow com valor “auto” ou “scroll”), esta barra de rolagem vai ser deslocada – rolar para baixo -, também.

Esta é uma razão importante sobre o porquê é importante ter um ID absolutamente único. Com isso, o navegador sabe até quando rolar.

Elementos podem ter ambos, ID e Classes

Nada para você quando você usa ambos, ID e classes em um único elemento. Na verdade, fazer isso na maioria das vezes é uma boa idéia. Tomemos como exemplo o padrão de marcação para item de lista de um comentário no Wordpress:

<li id="comment-27299" class="item">

Tem uma classe que foi aplicada que talvez se queira usar para estilizar todos os comentários na página, mas também há um único valor de ID (dinamicamente gerado pelo Wordpress). Com isso, é facilmente possível fazer um link diretamente a um comentário, em uma página, em especial.

CSS não se importa

Quanto ao CSS, não há nada que você possa fazer com um ID que não possa fazer com uma Classe e vice-versa. Às vezes, quando se está iniciando no estudo de CSS e se tem um problema, tenta-se alternar entre usar ID ou usar Classe. O CSS não se importa.

Javascript se importa

Aqueles que mexem com javascript provavelmente já estão mais em sintonia entre as diferenças entre as Classes e IDs. Javascript depende da existência de um elemento de página com ID único, ou então a comumente utilizada função getElementById não seria confiável. Aqueles acostumados com jQuery sabem o quão fácil é adicionar e remover classes de elementos de página. É uma função nativa no jQuery. Veja que tal função não existe para IDs. Não é responsabilidade do javascript manipular estes valores, porque ele causaria mais problemas que seria útil…

Se você não precisa deles, não os use

Como você pode ver, classes e IDs são muito importantes e nós os utilizamos todos os dias para estilizar páginas e manipular aquilo que é preciso. Entretanto, você deve usá-los com critério e semanticamente.

Isto significa evitar coisas do tipo:

<a href="http://css-tricks.com" class="link">CSS-Tricks.com</a>

Já sabemos: este elemento é um link, é um elemento âncora. Não há nada de especial aqui a ponto de ser preciso especificar uma classe, já que é possível aplicar o estilo na própria tag (“a”).

Evite este tipo de coisa, também:

<div id="coluna-direita">

O ID é corretamente utilizado aqui, já que, provavelmente, a página terá somente uma única coluna da direita, mas o nome é inadequado. Descreva o contexto do elemento, não onde está ou como se parece. Um ID “barra-lateral” seria melhor.

Microformatos são apenas nomes específicos de classes

Pensa que microformatos é difícil para você? Microformato é apenas marcação regular que faz uso de nomes de classes padronizados para a informação que contêm. Veja este vCard:

<div class="vcard">
  <a class="fn org url" href="http://www.commerce.net/">CommerceNet</a>
  <div class="adr">
    <span class="type">Work</span>:
    <div class="street-address">169 University Avenue</div>
    <span class="locality">Palo Alto</span>,
    <abbr class="region" title="California">CA</abbr>
    <span class="postal-code">94301</span>
    <div class="country-name">USA</div>
  </div>
  <div class="tel">
   <span class="type">Work</span> +1-650-289-4040
  </div>
  <div class="tel">
    <span class="type">Fax</span> +1-650-289-4041
  </div>
  <div>Email:
   <span class="email">info@commerce.net</span>
  </div>
</div>
artigos comentários e-mail ?
Siga-me no twitter!