Erro de vários destinatários do Phpmailer
Pergunta
Eu tenho o seguinte código com Phpmailer:
$tomailn[0] = 'imap2@gazler.com';
$tomailn[1] = 'imap@gazler.com';
foreach($tomailn as $value)
{
$mail->AddAddress($value, '');
}
Mas estou recebendo o erro 'não foi possível instanciar a função de email'.
Se eu remover um item da matriz, ele funciona bem, mas dar um erro ao tentar adicionar 2 ou mais endereços. Alguma idéia de por que isso está acontecendo? Existe uma maneira diferente de adicionar vários endereços de e-mail?
Saúde, Gazler.
Solução
Cavar o código -fonte. Edite phpmailer.php e encontre "function MailSend
". (Em 5.0.2, está em torno da linha 564.)
Na referida função, remova o @ supressor de erro De cada chamada para mail()
. Certificar-se de que error_reporting está definido para algo razoável para depuração. Ao desenvolver, escolha algo assim:
error_reporting(E_ALL | E_STRICT); ini_set('log_errors', 'On'); ini_set('display_errors', 'On');
Veja se o PHP mostra algum erro. Phpmailer apenas joga a exceção instanciada quando a última chamada para mail()
retorna algo falsey, ou se $rt
nunca é definido, o que significaria que if ($this->Sender != '' && strlen(ini_get('safe_mode'))< 1)
avalia para true
.
Você está usando o modo de segurança? O que o PHP Mailer $mailer->Sender
e ini_get('safe_mode')
dizer? (Meu palpite: se você não está funcionando no modo de segurança, mas defini -lo para algo como Off
, este código retornaria true
.)
Outras dicas
Você tentou apenas $mail->AddAddress($value);
?
Na maioria das vezes, esse erro é causado quando from
O cabeçalho não está definido ou é inválido. Tente definir esta variável:
$mail->From = 'valid@mailaddress.com';
Se ainda não funcionar, tente um dos seguintes:
- Verifique se o
mail
está ativado no servidor (e ophp.ini
definições); - a OpenSSL o módulo está ativado (execute um
phpinfo()
e procure por OpenSSL)
Acabei de examinar o código -fonte do Phpmailer, a mensagem "não poderia instanciar a função de email" indica que mail()
Retorna falsa.
Você pode tentar a mesma função, mas com dois endereços de email diferentes que você sabe que geralmente aceita e-mails?
Tente baixar a versão mais recente do Phpmailer Se você não estiver usando um, ele tem correções de bugs. As chances são de que sua aula de Mailer tenha sido mexida.
'Não foi possível instanciar a função de email'. Basta verificar sua função de mala direta funcionando ou não. Muitas vezes esse erro causa devido à limitação do provedor de hospedagem. Muitas vezes o provedor de hospedagem bloqueia seu recurso de correspondência, então geralmente você recebe esse erro