ERROR: Could not instantiate mail function.

sábado, dezembro 04, 2010



Há já alguns dias que verificava que quando um aluno submetia um trabalho no Moodle os professores da disciplina não eram notificados. De salientar que nas configurações da actividade (Envio de Trabalho) está definido para enviar uma notificação para os professores da disciplina.
Comecei a procurar os logs do próprio Moodle e verifiquei que em muitos casos (não em todos), após a submissão do trabalho aparecia a informação "ERROR: Could not instantiate mail function.".
Pesquisei na net, em particular na Ajuda e Fóruns do Moodle e da GoDaddy (empresa onde se encontra alojado o domínio da instalação Moodle em causa) e não obstante o facto de encontrar imensas referências a este erro, não consegui encontrar uma explicação para tal estar a acontecer, muito menos uma solução para o meu problema.
Este problema, aparentemente, só começou a acontecer após ter feito a transferência da instalação do Moodle de um alojamento antigo para um novo alojamento na GoDaddy. Daqui surge uma dedução: o problema acontece devido a configurações diferentes dos servidores PHP e/ou Apache.
Continuava a pesquisar, a ler artigos e debates em fóruns de discussão mas tudo o que era apontado como causa e solução revelava-se inútil no meu problema.
Ontem encontrei um artigo num blogue cujo auto é Oscar Valles em que era identificado o mesmo problema e a solução apresentada parecia-me inapropriada: editar directamente um ficheiro php do Moodle!
A verdade é que a solução apresentada pelo Oscar Valles resolveu o meu problema.
Fica aqui registada a solução para o erro indicado no título deste artigo:

Open your class.phpmailer.php file under your moodle/lib/phpmailer folder.
Here go to line 109 and change
    /**
     * Method to send mail: (“mail”, “sendmail”, or “smtp”).
     * @var string — Changed from mail to sendmail
     */
    var $Mailer            = “mail”;
to
    var $Mailer            = “sendmail”;
Then go to line 269 and change
    /**
     * Sets Mailer to send message using PHP mail() function.
     * @return void — changed mail to sendmail
     */
    function IsMail() {
        $this->Mailer = “mail”;
    }
to
        $this->Mailer = “sendmail”;
Obrigado Oscar!

You Might Also Like

2 comentários