Envio de e-mails
Você vai enviar e-mails como boletins informativos ou confirmações de pedidos? Nette Framework fornece as ferramentas necessárias com uma API muito boa. Vamos mostrar:
- como criar um e-mail, incluindo os anexos
- como enviá-lo
- como combinar e-mails e modelos
Instalação
Baixe e instale o pacote usando o Composer:
Criando e-mails
O e-mail é um objeto Nette\Mail\Message:
Todos os parâmetros devem ser codificados em UTF-8.
Além de especificar os destinatários com o método addTo()
, você também pode especificar o destinatário da
cópia com addCc()
, ou o destinatário da cópia cega com addBcc()
. Todos esses métodos, incluindo
setFrom()
, aceitam o destinatário de três maneiras:
O corpo de um e-mail escrito em HTML é passado usando o método setHtmlBody()
:
Você não tem que criar uma alternativa de texto, Nette a gerará automaticamente para você. E se o e-mail não tiver um
conjunto de assuntos, ele será retirado do <title>
elemento.
As imagens também podem ser inseridas com extrema facilidade no corpo HTML de um e-mail. Basta passar o caminho onde as imagens estão fisicamente localizadas como segundo parâmetro, e a Nette as incluirá automaticamente no e-mail:
O algoritmo de incorporação de imagem suporta os seguintes padrões: <img src=...>
,
<body background=...>
, url(...)
dentro do atributo HTML style
e sintaxe especial
[[...]]
.
O envio de e-mails pode ser ainda mais fácil?
Os e-mails são como cartões postais. Nunca envie senhas ou outras credenciais por e-mail.
Anexos
Você pode, é claro, anexar anexos ao e-mail. Use o site
addAttachment(string $file, ?string $content = null, ?string $contentType = null)
.
Modelos
Se você enviar e-mails HTML, é uma ótima idéia escrevê-los no sistema de modelos Latte. Como fazer isso?
Arquivo email.latte
:
Nette insere automaticamente todas as imagens, define o assunto de acordo com o <title>
e gera uma
alternativa de texto para o corpo HTML.
Utilização na aplicação Nette
Se você utiliza e-mails juntamente com a Aplicação Nette, ou seja, apresentadores, você pode querer criar links em modelos
usando o atributo n:href
ou a tag {link}
. O Latte basicamente não os conhece, mas é muito fácil
adicioná-los. A criação de links pode fazer o objeto Nette\Application\LinkGenerator
, que você obtém passando
por ele usando a injeção de dependência.
No modelo, o link é criado como em um modelo normal. Todos os links criados sobre o LinkGenerator são absolutos:
Envio de e-mails
O Mailer é a classe responsável pelo envio de e-mails. Ele implementa a interface Nette\Mail\Mailer e vários mailers prontos estão disponíveis que apresentaremos.
A estrutura adiciona automaticamente um serviço Nette\Mail\Mailer
baseado na configuração do recipiente DI, que você obtém passando-o usando a injeção de dependência.
SendmailMailer
O mailer padrão é o SendmailMailer que usa a função PHP mail. Exemplo de uso:
Se você quiser configurar returnPath
e o servidor ainda o sobrescreve, use
$mailer->commandArgs = '-fmy@email.com'
.
SmtpMailer
Para enviar correio através do servidor SMTP, use SmtpMailer
.
Os seguintes parâmetros adicionais podem ser passados para o construtor:
port
– se não estiver definido, será utilizado o padrão 25 ou 465 parassl
timeout
– tempo limite para conexão SMTPpersistent
– usar conexão persistenteclientHost
– designação do clientestreamOptions
– permite definir opções de contexto SSL para conexão
FallbackMailer
Ele não envia e-mails, mas os envia através de um conjunto de remetentes. Se um remetente falhar, ele repete a tentativa no próximo. Se o último falhar, ele começa novamente a partir do primeiro.
Outros parâmetros no construtor incluem o número de repetições e tempo de espera em milissegundos.
DKIM
O DKIM (DomainKeys Identified Mail) é uma tecnologia de e-mail confiável que também ajuda a detectar mensagens falsificadas. A mensagem enviada é assinada com a chave privada do domínio do remetente e esta assinatura é armazenada no cabeçalho do e-mail. O servidor do destinatário compara esta assinatura com a chave pública armazenada nos registros DNS do domínio. Combinando a assinatura, é mostrado que o e-mail realmente originou-se do domínio do remetente e que a mensagem não foi modificada durante a transmissão da mensagem.
Você pode configurar o mailer para assinar o e-mail na configuração. Se você não usa injeção de dependência, ela é usada da seguinte forma:
Configurando
Visão geral das opções de configuração para o Nette Mail. Se você não estiver usando toda a estrutura, mas apenas esta biblioteca, leia como carregar a configuração.
Por padrão, o mailer Nette\Mail\SendmailMailer
é usado para enviar e-mails, que não está mais configurado.
Entretanto, podemos mudá-lo para Nette\Mail\SmtpMailer
:
Você pode desativar a autenticação do certificado SSL usando a opção context › ssl › verify_peer: false
.
É ** fortemente recomendado não fazer** isso, pois isso tornará a aplicação vulnerável. Em vez disso, adicionar certificados à loja de confiança.
Para aumentar a confiança, podemos assinar e-mails usando a tecnologia DKIM:
Serviços DI
Esses serviços são adicionados ao contêiner DI:
Nome | Tipo | Descrição |
---|---|---|
mail.mailer |
Nette\Mail\Mailer | classe de envio de e-mail |
mail.signer |
Nette\Mail\Signer | Assinatura DKIM |