Suponha que tenhamos um site WP em branco e desejamos definir programações SMTP programaticamente em nosso plugin ou tema. Qual é a maneira mais fácil de fazer isso sem alterar os arquivos principais?
18
Primeiro de tudo, se dermos uma olhada na implementação da wp_mail
função, veremos que essa função usa PHPMailer
classe para enviar e-mails. Também podemos notar que há uma chamada de função codificada $phpmailer->IsMail();
, que define o uso da mail()
função do PHP . Isso significa que não podemos usar configurações SMTP com ele. Precisamos chamar a isSMTP
função de PHPMailer
classe. E também precisamos definir nossas configurações de SMTP também.
Para alcançá-lo, precisamos obter acesso à $phpmailer
variável. E aqui chegamos à phpmailer_init
ação que é chamada antes de enviar um email. Assim, podemos fazer o que precisamos escrevendo nosso manipulador de ações:
add_action( 'phpmailer_init', 'wpse8170_phpmailer_init' );
function wpse8170_phpmailer_init( PHPMailer $phpmailer ) {
$phpmailer->Host = 'your.smtp.server.here';
$phpmailer->Port = 25; // could be different
$phpmailer->Username = '[email protected]'; // if required
$phpmailer->Password = 'yourpassword'; // if required
$phpmailer->SMTPAuth = true; // if required
// $phpmailer->SMTPSecure = 'ssl'; // enable if required, 'tls' is another possible value
$phpmailer->IsSMTP();
}
E isso é tudo.
wp_mail
função.Além da resposta @EugeneManuilov.
Configurações de SMTP
Por padrão, eles só podem ser configurados - como o @EugeneManuilov já respondeu - durante um retorno de chamada anexado a um
do_action_ref_array()
. Fonte / núcleo .Exceções de SMTP
Por padrão, o WordPress não fornece nenhuma saída de depuração. Em vez disso, apenas retorna
FALSE
se ocorreu um erro. Aqui está um pequeno plugin para corrigir isso:Repositório
Os plugins estão disponíveis neste Gist no GitHub , portanto, considere verificar esses plugins para obter atualizações.
fonte
As outras respostas a esta postagem, embora ofereçam uma solução funcional, não abordam a questão da segurança de armazenar suas credenciais SMTP em um arquivo de plugin ou functions.php. Em alguns casos, isso pode ser bom, mas as práticas recomendadas determinariam o armazenamento dessas informações de maneira mais segura. Não há realmente um bom motivo para não seguir as práticas recomendadas quando se trata de proteger suas credenciais.
Alguns sugerem salvá-lo no banco de dados como uma opção, mas também fornecem os mesmos problemas de segurança, dependendo do número de usuários administrativos que seu site possui e se esses usuários devem poder ver essas credenciais de logon. Este também é o mesmo motivo para não usar um plugin para isso.
A melhor maneira de fazer isso é definir constantes para as informações do phpmailer no seu arquivo wp-config.php. Na verdade, isso foi discutido como um recurso no componente de email , mas não foi aceito como um aprimoramento real no momento. Mas você pode fazer isso adicionando o seguinte ao wp-config.php:
Depois de definidos no wp-config.php, eles podem ser usados em qualquer lugar usando a constante definida. Então você pode usá-los em um arquivo de plugin ou no seu functions.php. (Específico ao OP, use um arquivo de plug-in.)
Há um pouco mais de detalhes sobre isso neste post e uma essência no github aqui .
fonte
.env
arquivo gitignored . Mas ninguém que põe tudo em minúsculaswp-config.php
é usando o controle de versão, de qualquer maneira ...