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.

Foi útil?

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 o php.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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top