Tutorial: Como usar o PHPList e enviar através do SMTP do Gmail ou Google Apps

Configurar PHPList

Série: Instalar e configurar o PHPlist

O PHPList vem configurado para usar o PHPMailer em um padrão próprio, mas eu precisava usar junto com o SMTP do Gmail para enviar, então tive que fazer algumas alterações:

-Primeiramente baixei a ultima versão do  PHPMailer no endereço:
http://sourceforge.net/projects/phpmailer/files/

-Extrai o conteúdo e copie para o diretório do seu servidor a pasta. Lembrando que já existe uma pasta chamada “phpmailer”, então renomeei a pasta para “phpmailergmail”. Essa pasta deve conter dois arquivos importantes: O class.phpmailer.php e  class.smtp.php.

-Editei o topo do arquivo “lists/admin/class.phplistmailer.php” para apontar para a local do novo “class.phpmailer.php”, e adicionei uma nova entrada para o “class.smtp.php”.

require( dirname(__FILE__) . '/phpmailergmail/class.phpmailer.php');
require( dirname(__FILE__) . '/phpmailergmail/class.smtp.php');

4) Ainda no arquivo “class.phplistmailer.php”, editei a função PHPlistMailer abaixo da chamada “if (defined(‘PHPMAILERHOST’) && PHPMAILERHOST != ” && isset($GLOBALS['phpmailer_smtpuser']) && $GLOBALS” adicionando as seguintes linhas:

$this->SMTPSecure="ssl";
$this->Port=$GLOBALS['phpmailer_smtpport'];

E ficou assim:

      if (defined('PHPMAILERHOST') && PHPMAILERHOST != '' && isset($GLOBALS['phpmailer_smtpuser']) && $GLOBALS['phpmailer_smtpuser'] != '') {
         $this->SMTPAuth = true;
         $this->SMTPSecure="ssl";
         $this->Port=$GLOBALS['phpmailer_smtpport'];
         $this->Helo = getConfig("website");
         $this->Host = PHPMAILERHOST;
         $this->Username = $GLOBALS['phpmailer_smtpuser'];
         $this->Password = $GLOBALS['phpmailer_smtppassword'];
         #  logEvent('Sending authenticated email via '.PHPMAILERHOST);

         #  logEvent('Sending via smtp');
         $this->Mailer = "smtp";
      }

5) Deposi disso pude finalmente editar o arquivo “lists/config/config.php” com os seguintes itens:

define("PHPMAILERHOST",'smtp.gmail.com');
$phpmailer_smtpuser = 'email@seusite.comr';
$phpmailer_smtppassword = '********';
$phpmailer_smtpport = '465';

Fiz o teste e passou a funcionar perfeitamente. Espero que passe a funcionar para você também.

Bookmark and Share
Related Posts with Thumbnails

13 Responses to “Tutorial: Como usar o PHPList e enviar através do SMTP do Gmail ou Google Apps”

  1. Muito bons os comentários e tutoriais sobre o PHPlist! Parabéns.

  2. Obrigado Sandro.

    Vem mais uns posts por ai.

    Abraços

  3. Osni,

    fiz todas as configurações conforme indicado, inclusive adicionar
    $phpmailer_smtpport = ‘465′;

    porém não esta enviando as mensagens ( O email indicado para enviar a mensagem de teste não foi encontrado.: sandro@[DOMAIN] ), teria alguma sugestão ?

    Abraço

  4. Olá Sandro,

    Passa nos comentários os trechos do teu código para vermos.

    Qual é a hospedagem?

  5. Detonei a pasta phpmailer e colei a phpmailergmail

    *** Topo do arquivo “lists/admin/class.phplistmailer.php” ***

    require( dirname(__FILE__) . ‘/phpmailergmail/class.phpmailer.php’);
    require( dirname(__FILE__) . ‘/phpmailergmail/class.smtp.php’);

    ****** Meio *******

    if (defined(‘PHPMAILERHOST’) && PHPMAILERHOST != ” && isset($GLOBALS['phpmailer_smtpuser']) && $GLOBALS['phpmailer_smtpuser'] != ”) {
    $this->SMTPAuth = true;
    $this->Helo = getConfig(“website”);
    $this->Host = PHPMAILERHOST;
    $this->SMTPSecure=”ssl”;
    $this->Port=$GLOBALS['phpmailer_smtpport'];

    $this->Username = $GLOBALS['phpmailer_smtpuser'];
    $this->Password = $GLOBALS['phpmailer_smtppassword'];
    # logEvent(‘Sending authenticated email via ‘.PHPMAILERHOST);

    # logEvent(‘Sending via smtp’);
    $this->Mailer = “smtp”;
    }

    ***** Arquivo lists/config/config.php ********

    # If you want to use the PHPMailer class from phpmailer.sourceforge.net, set the following
    # to 1. If you tend to send out html emails, it is recommended to do so.
    define(“PHPMAILER”,1);

    # To use a SMTP please give your server hostname here, leave it blank to use the standard
    # PHP mail() command.
    define(“PHPMAILERHOST”,’smtp.gmail.com’);

    # if you want to use smtp authentication when sending the email uncomment the following
    # two lines and set the username and password to be the correct ones
    $phpmailer_smtpuser = ‘newsletter@[DOMAIN]‘;
    $phpmailer_smtppassword = ‘*******’;
    $phpmailer_smtpport = ‘465′;

  6. Osni,

    a hospedagem é Dreamhost.com

    já enfrentou esse erro?

    Obrigado pela atenção

    Sandro

  7. Se é da DreamHost não deveria ter o smtp da dreamhost?

    Ou você está usando o Google apps?

  8. Com o Gmail tem limitação de quantidade de emails por dia? Já cheguei a estourar a cota do meu gmail pessoal de envio de emails diários…

    Usando o smtp do gmail tem esta limitação também ou não?

  9. O Gmail tem limitações sim. Inclusive no SMTP.

    Só não lembro quanto é :(

  10. Erro o qual perguntei anteriormente ocorre quando tentamos enviar mensagem para um usuário não cadastrado no phplist, logo antes de enviar uma mensagem teste, deve cadastrar o destinatário.

    Sobre a configuração do PHPlist para usar sua conta do Gmail ou o e-mail da sua empresa que esta no Gmail, usei a versão que veio com o próprio phplist do phpmailer.

    1) faça o passo 4 (acima) é na linha + ou – 35.

    2) dentro da pasta lists/admin/phpmailer edite o arquivo class.phplistmailer.php entorno da linha 537 conforme http://forum.imasters.uol.com.br/index.php?/topic/265222-usando-o-smtp-do-google-com-o-phpmailer/ ( a pagina de teste NÃO é necessária)

    3) no passo 5 acima no arquivo lists/config/config.php o define deve ficar assim
    define(“PHPMAILERHOST”,’ssl://smtp.gmail.com’);

    deve funcionar em qq computador com internet e servidor apache (verificar firewall 465).

    Abraço

  11. Ei Sandro, funcionou perfeito dessa forma?

  12. Ao menos para min sim !

  13. oi galera,

    estou precisando de código para aparecer o nome e uma saudação para o usuário que receber a newsletter, estou usando o phplist. vcs podem me ajudar.
    Obrigado.

    Alexandre Lizardo

Leave a Reply