O PHPMailer é uma biblioteca de classes para PHP que fornece uma coleção de funções para construir e enviar mensagens de e-mail.

Antes de continuar, certifique-se de que o PHPMailer esteja instalado corretamente. Se você se sentir inseguro, leia as instruções de instalação que acompanham o pacote. Se ainda não tiver certeza, você pode verificar se instalou o PHPMailer corretamente com este pequeno script:

<?php
require 'PHPMailerAutoload.php';
$mail = new PHPMailer;

feita corretamente. Se você trocou mensagens de erro e avisos, vá em frente e configure-o; consulte o manual do PHP para mais informações sobre este tópico. Este trecho de código também é o começo de qualquer uso do PHPMailer. requer 'PHPMailerAutoload.php'; carrega um autoloader que sabe como carregar as outras classes usadas pelo PHPMailer; $ mail = new PHPMailer; cria uma nova instância da classe como $ mail; Todos os recursos, funções e métodos da classe podem ser acessados por meio dessa variável. Vamos em frente e enviar o primeiro email. Para isso, você precisará do básico: um endereço do destinatário, um endereço do remetente, um assunto e o texto da mensagem. Você também precisará selecionar um método para entregar a mensagem. Precisamos de um programa para se comunicar com um servidor SMTP que, por sua vez, envia o email para a Internet. No mundo Unix / Linux, o Sendmail é muito popular e usado amplamente, mas quase todos os outros servidores de e-mail, como o postfix e o exim, fornecem um wrapper de compatibilidade. O PHPMailer fornece vários métodos de envio de email. É melhor começar com a função mail (), pois esse é o método mais simples (e o mecanismo de envio padrão do PHPmailer), mas requer que você tenha um servidor de correio local em funcionamento. Reunindo as informações necessárias para enviar seu primeiro e-mail, use essas informações no lugar das informações de exemplo fornecidas aqui:

<?php
require 'PHPMailerAutoload.php';
$mail = new PHPMailer;
$mail->setFrom('from@example.com', 'Your Name');
$mail->addAddress('myfriend@example.net', 'My Friend');
$mail->Subject  = 'First PHPMailer Message';
$mail->Body     = 'Hi! This is my first e-mail sent through PHPMailer.';
if(!$mail->send()) {
  echo 'Message was not sent.';
  echo 'Mailer error: ' . $mail->ErrorInfo;
} else {
  echo 'Message has been sent.';
}


Salve isso como um arquivo php e altere os valores para seus valores, é claro. Aqui está uma explicação do que cada estrofe deste script faz:

$mail->setFrom('from@example.com', 'Your Name');


Digite o endereço do qual o e-mail deve aparecer. Você pode usar qualquer endereço que o servidor SMTP aceite como válido. O segundo parâmetro opcional para essa função é o nome que será exibido como o remetente em vez do próprio endereço de email. A seguir, você adicionará um endereço para o qual o e-mail será enviado. Você deve usar um e-mail válido aqui para verificar se o teste do PHPMailer funcionou. Apenas o seu próprio endereço de e-mail aqui para este teste. Como com o método setFrom, você pode, opcionalmente, fornecer um nome de exibição para o destinatário.

$mail->addAddress('myfriend@example.net', 'My Friend');


A definição do assunto e do corpo é feita em seguida, definindo as propriedades Subject e Body diretamente - observe que elas diferenciam maiúsculas e minúsculas, portanto, não tente definir o assunto ou o corpo. Por fim, enviamos o e-mail assim que todas as informações necessárias forem fornecidas. Isso é feito com $ mail-> Send () ;. Neste script de exemplo, ele está dentro de uma instrução if; se send () falhar, ele retornará false e você poderá pegá-lo e exibir uma mensagem de erro. Isso é feito nas últimas linhas. Caso contrário, exibe uma mensagem de sucesso.

O envio de e-mails em texto simples geralmente é insuficiente. Talvez você precise anexar algo ao seu e-mail, como uma imagem ou um arquivo de áudio. Ou talvez você precise anexar vários arquivos. Existem duas maneiras de anexar algo ao seu e-mail: Você pode simplesmente anexar um arquivo do sistema de arquivos ou anexar dados (binários) armazenados em uma variável. Este último é chamado de anexo de string. Isso possibilita extrair dados de um banco de dados ou de uma chamada de API da Web e anexá-los a um email, sem precisar salvá-los como um arquivo.

O comando para anexar um arquivo local é simplesmente $ mail-> addAttachment ($ path) ;, em que $ path contém o caminho para o arquivo que você deseja enviar e pode ser colocado em qualquer lugar entre $ mail = new PHPMailer; e enviando a mensagem. Note que você não pode usar uma URL para o caminho - você só pode usar o caminho do sistema de arquivos local. Veja as anotações sobre anexos de string abaixo para saber como usar o conteúdo remoto. O caminho $ pode ser relativo (do seu script, não da classe PHPMailer) ou de um caminho completo para o arquivo que você deseja anexar. Se você quiser enviar conteúdo de um banco de dados ou API da Web (por exemplo, um gerador de PDF remoto), não use esse método. Em vez disso, use addStringAttachment. Se você quiser mais opções ou quiser especificar a codificação e o tipo MIME do arquivo, poderá usar mais três parâmetros, todos eles opcionais:

$mail->addAttachment($path, $name, $encoding, $type);


$ name é um parâmetro opcional, usado para definir o nome do arquivo que será incorporado ao e-mail. A pessoa que receberá seu e-mail só verá esse nome, em vez do nome do arquivo original. $ codificação é um pouco mais técnico, mas com este parâmetro você pode definir o tipo de codificação do anexo. O padrão é base64. Outros tipos que são suportados incluem: 7bit, 8bit, binary & quoted-printable. Geralmente, qualquer arquivo binário (por exemplo, uma imagem) deve usar base64; anexos baseados em texto usualmente usarão impressão com cotação. $ type é o tipo MIME do arquivo anexado. Os tipos de conteúdo são definidos não necessariamente por sufixos de arquivo (por exemplo, .jpg ou .mp3), mas um tipo MIME (MIME = Multipurpose Internet Mail Extensions) é usado. Este parâmetro possibilita alterar o tipo MIME de um anexo do valor padrão de application / octet-stream (que funciona com todo tipo de arquivo, mas significa que o receptor pode não manipulá-lo corretamente) para um tipo MIME mais específico, como image / jpeg para uma foto JPEG, por exemplo. Você normalmente não precisa definir isso sozinho, pois o PHPMailer mapeará a extensão do arquivo automaticamente.

O método addStringAttachment () funciona como addAttachment (), mas você passa o conteúdo real do item em vez de um caminho do sistema de arquivos. O parâmetro $ filename é necessário, pois é usado para fornecer um nome de arquivo para os dados da string no final do receptor. Também aceita os mesmos outros parâmetros descritos acima. Então, por que usar addStringAttachment () em vez de addAttachment ()? É para arquivos somente de texto? Não, não mesmo. É principalmente para bancos de dados e outros conteúdos que não são arquivos. Os dados armazenados em um banco de dados são sempre armazenados como uma string (ou um BLOB: Binary Large OBject). Você poderia consultar seu banco de dados para uma imagem armazenada como um BLOB e passar a string resultante para o addStringAttachment (). Se você quiser usar um URL remoto para obter seu conteúdo (por exemplo, obtendo conteúdo em PDF de um URL remoto), faça o seguinte:

$mail->addStringAttachment(file_get_contents($url), 'myfile.pdf');


Se você quiser criar um e-mail em HTML que se refere a imagens que também estão anexadas à mensagem (em vez de serem apontadas remotamente), é necessário anexar a imagem a um identificador de conteúdo e vinculá-la a ela. Por exemplo, se você adicionar uma imagem como anexo in-line com o ID de conteúdo da minha foto, acessará-a no corpo HTML usando <img src = "cid: minha-foto" alt = "minha-foto">. Em detalhe, aqui está a função para adicionar um anexo incorporado:

$mail->addEmbeddedImage($filename, $cid);


O processo de conectar tags de imagem a identificadores de conteúdo é um pouco complicado, mas o método msgHTML () pode fazer a maior parte do trabalho para você. Para obter mais informações sobre e-mail em HTML, consulte a seção Usando e-mail em HTML.

Enviar e-mail em HTML é uma tarefa bastante simples com o PHPMailer, embora possa exigir conhecimento significativo de HTML. Em particular, os clientes de e-mail variam muito em sua renderização de e-mail em HTML (muito mais do que os navegadores da Web), com alguns se recusando a mostrá-lo por completo. Para os clientes de correio que não podem exibir HTML, você pode fornecer um corpo de email alternativo contendo a mensagem como texto sem formatação. Primeiro vamos criar uma mensagem HTML básica:

<?php
require 'PHPMailerAutoload.php';
$mail = new PHPMailer;
$mail->setFrom('from@example.com', 'Your Name');
$mail->addAddress('myfriend@example.net', 'My Friend');
$mail->Subject = 'An HTML Message';
$mail->isHTML(true);
$mail->Body = 'Hello, <b>my friend</b>! This message uses HTML!';


É tão fácil quanto criar um email em texto simples. Simplesmente chame $ mail-> isHTML (true); e use uma string HTML para $ mail-> Body. Para garantir que o destinatário possa ler o email, mesmo que o cliente de email não ofereça suporte a HTML, podemos adicionar uma versão em texto sem formatação da mensagem:

$mail->AltBody = "Hello, my friend! This message uses plain text !";


Isso define o corpo alternativo (AltBody para breve). Se você usar esse recurso, a mensagem usará automaticamente o tipo MIME multipart / alternative, que cria a mensagem de uma forma que os clientes compatíveis com MIME podem usar para escolher o formato preferido pelo destinatário.

Encontrou sua resposta?