Base de conhecimento
1000 perguntas frequentes, 500 tutoriais e vídeos explicativos. Aqui, você encontra apenas soluções!
Usar o PHPMailer na Infomaniak
Este guia explica como usar o PHPMailer com as soluções de hospedagem web da Infomaniak para enviar e-mails a partir de um site.
⚠ ATENÇÃO ⚠
A Infomaniak garante a conformidade de seus serviços com os protocolos padrão (IMAP, S3, etc.), mas não oferece suporte adicional para serviços ou softwares externos, pois a configuração deles pode mudar dependendo do provedor ou do desenvolvedor. Portanto, este guia é fornecido apenas como referência, e a sua implementação é de sua responsabilidade (consulte: Política de suporte / Art. 11.9 dos Termos de Uso). Se necessário, um profissional qualificado pode ajudá-lo.
Introdução
- O PHPMailer é uma biblioteca PHP que permite criar e enviar e-mails a partir de um site, principalmente via SMTP.
- Ele permite, em particular, enviar mensagens no formato HTML, adicionar uma versão de texto alternativa, gerenciar anexos e usar a autenticação SMTP.
- Para envio autenticado via SMTP, o ambiente PHP usado pelo site deve ser compatível com uma conexão criptografada recente, principalmente TLS 1.2 ou superior.
- Uma versão muito antiga do PHP ou da biblioteca OpenSSL usada pelo PHP pode causar um erro de conexão ou autenticação, mesmo que o endereço de e-mail e a senha estejam corretos.
- Não use o PHP 5.3/5.4 para este tipo de envio; use uma versão recente e atualizada do PHP.
- Com o envio SMTP autenticado, o endereço usado como remetente deve corresponder ao endereço de e-mail usado para a autenticação SMTP.
Instalar o PHPMailer
Para usar o PHPMailer, instale a biblioteca nos arquivos do seu site.
- Baixe o PHPMailer do seu repositório oficial ou instale-o com o Composer, se o seu projeto o utilizar.
- Copie os arquivos do PHPMailer para um diretório do seu site via FTP.
Carregue os arquivos necessários no seu script PHP, adaptando o caminho de acordo com o local escolhido:
use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; require **DIR** . '/PHPMailer/src/Exception.php'; require **DIR** . '/PHPMailer/src/PHPMailer.php'; require **DIR** . '/PHPMailer/src/SMTP.php';
Configurar o envio SMTP com a Infomaniak
Use as seguintes configurações SMTP autenticadas:
- Servidor SMTP:
mail.infomaniak.com - Porta:
465 - Criptografia:
SMTPS/ SSL-TLS - Autenticação: obrigatória
- Nome de usuário: o endereço de e-mail completo
- Senha: a senha do endereço de e-mail usado
Exemplo de configuração completa:
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require **DIR** . '/PHPMailer/src/Exception.php';
require **DIR** . '/PHPMailer/src/PHPMailer.php';
require **DIR** . '/PHPMailer/src/SMTP.php';
$mail = new PHPMailer(true);
try {
// Configuration SMTP
$mail->isSMTP();
$mail->Host = 'mail.infomaniak.com';
$mail->SMTPAuth = true;
$mail->Username = '[sender@domain.xyz](mailto:sender@domain.xyz)';
$mail->Password = 'mot_de_passe_de_l_adresse_mail';
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
$mail->Port = 465;
$mail->CharSet = 'UTF-8';
```
// Expéditeur
// L'adresse doit correspondre à celle utilisée pour l'authentification SMTP.
$mail->setFrom('sender@domain.xyz', 'Nom du site');
// Destinataire
$mail->addAddress('recipient@example.com');
// Adresse de réponse facultative
$mail->addReplyTo('sender@domain.xyz', 'Nom du site');
// Contenu du message
$mail->isHTML(true);
$mail->Subject = 'Message envoyé depuis le site';
$mail->Body = '<p>Contenu HTML du message.</p>';
$mail->AltBody = 'Contenu texte du message.';
$mail->send();
echo 'Message envoyé';
```
} catch (Exception $e) {
echo 'Le message n’a pas pu être envoyé. Erreur: ' . htmlspecialchars($mail->ErrorInfo);
}Se a sua aplicação exigir o uso da porta 587, use STARTTLS:
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port = 587;
Verificar a versão do PHP e a compatibilidade TLS
O envio SMTP autenticado requer uma conexão criptografada recente. Se o site usar uma versão muito antiga do PHP, por exemplo, PHP 5.3, ou uma biblioteca OpenSSL muito antiga, o PHPMailer pode falhar antes ou durante a autenticação. Os erros podem então ser enganosos, por exemplo:
SMTP connect() failedCould not authenticatestream_socket_enable_crypto()- um erro de autenticação, mesmo que a senha esteja correta
Nesse caso, verifique os seguintes pontos:
- a versão do PHP utilizada pelo site;
- a versão do OpenSSL utilizada pelo PHP;
- a versão do PHPMailer utilizada pelo seu projeto;
- a correspondência entre a porta SMTP e a criptografia escolhida.
Para uma configuração confiável, utilize uma versão recente do PHP, compatível com TLS 1.2 ou superior, e uma versão atual do PHPMailer. Consulte estes guias, se necessário:
- Alterar a versão do PHP de um site
- Resolver um problema PHP relacionado a uma versão desatualizada
- Exibir as informações técnicas do site
Resolver um erro de incompatibilidade de remetente
O erro Sender mismatch SMTP code: 550 Additional SMTP info: 5.7.1 pode ocorrer quando o endereço usado como remetente não corresponde ao endereço de e-mail usado para a autenticação SMTP. Exemplo a ser evitado:
$mail->Username = 'sender@domain.xyz';
$mail->setFrom('another-address@domain.xyz', 'Nom du site');Neste exemplo, o script se autentica com sender@domain.xyz, mas tenta enviar a mensagem com outro endereço de remetente.
Use o mesmo endereço de e-mail para a autenticação SMTP e para o remetente:
$mail->Username = 'sender@domain.xyz';
$mail->setFrom('sender@domain.xyz', 'Nom du site');O nome do remetente pode ser personalizado, mas o endereço de e-mail deve permanecer consistente com a conta SMTP utilizada.
Caso de um formulário de contato
Se um visitante preencher seu endereço de e-mail em um formulário, não o utilize como endereço de remetente da mensagem. Utilize o endereço de e-mail autenticado como remetente e adicione o endereço do visitante como endereço de resposta.
Exemplo:
$mail->Username = 'sender@domain.xyz';
$mail->setFrom('sender@domain.xyz', 'Formulaire du site');
$mail->addReplyTo($email_visiteur);Essa configuração permite responder ao visitante a partir do seu software de e-mail sem enviar a mensagem com um endereço de remetente não autorizado.
Ativar o modo de depuração temporariamente
Em caso de erro, ative temporariamente o modo de depuração do PHPMailer para obter mais detalhes sobre a conexão SMTP:
$mail->SMTPDebug = 2;
$mail->Debugoutput = 'html';Desative este modo após os seus testes para não exibir informações técnicas aos visitantes do site.
Saiba mais
Link para esta FAQ: https://faq.infomaniak.com/576
Esta seção de perguntas frequentes foi útil?