envio de email via cron

1. envio de email via cron

diego tesch
diegotesch

(usa Ubuntu)

Enviado em 08/10/2015 - 12:25h

boa tarde galera do VOL
em meu trabalho possuo um servidor web com ip fixo e valido
tenho um script php cadastrado na crontab para varrer uma tabela do banco de dados e na hora agendada enviar e-mails
até então tudo bem
quando faço o comando diretamente no terminal
ex: echo "mensagem teste" | mail -s "assunto" "diego@empresa.com.br"
a mensagem chega corretamente em meu email
no entanto quando o script php é executado não tenho nenhum resultado.
verificando os logs
vi que quando o comando é executado no terminal as seguintes linhas me sao dadas

Oct 8 11:22:17 crm sendmail[3039]: t98EMHFF003039: to=<diego@empresa.com.br>, ctladdr=root@crm.empresa.com.br (0/0), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30102, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (t98EMHSu003040 Message accepted for delivery)
Oct 8 11:22:18 crm sm-mta[3042]: t98EMHSu003040: to=<diego@empresa.com.br>, ctladdr=<root@crm.empresa.com.br> (0/0), delay=00:00:01, xdelay=00:00:01, mailer=esmtp, pri=120369, relay=empresa.com.br. [MEU.IP.VALI.DO], dsn=2.0.0, stat=Sent (Ok: queued as 0CF83136805E)

porém quando o script é executado

Oct 8 11:23:02 crm sendmail[3049]: t98EN1VU003049: from=root, size=314, class=0, nrcpts=1, msgid=<201510081423.t98EN1VU003049@crm.empresa.com.br>, relay=root@localhost
Oct 8 11:23:02 crm sm-mta[3050]: t98EN25S003050: from=<root@crm.empresa.com.br>, size=592, class=0, nrcpts=1, msgid=<201510081423.t98EN1VU003049@crm.empresa.com.br>, proto=ESMTP, daemon=MTA-v4, relay=localhost [127.0.0.1]
Oct 8 11:23:02 crm sendmail[3049]: t98EN1VU003049: to=root, ctladdr=root (0/0), delay=00:00:01, xdelay=00:00:00, mailer=relay, pri=30314, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (t98EN25S003050 Message accepted for delivery)
Oct 8 11:23:02 crm sm-mta[3051]: t98EN25S003050: to=<root@crm.empresa.com.br>, ctladdr=<root@crm.empresa.com.br> (0/0), delay=00:00:00, xdelay=00:00:00, mailer=local, pri=30823, dsn=2.0.0, stat=Sent

e nenhum e-mail chega para mim.
agradeço a todos que puderem ajudar


  


2. Re: envio de email via cron

Guilherme Isaac
guilhermisaac

(usa Arch Linux)

Enviado em 08/10/2015 - 12:58h

Blz, mas vc tentou executar manualmente o script sem ser pelo cron ou o script funciona direito mas o problema se dá ao executar no cron?
--
Att

Guilherme Isaac


3. Re: envio de email via cron

diego tesch
diegotesch

(usa Ubuntu)

Enviado em 08/10/2015 - 14:37h


Na realidade creio ser algum problema de permissão
por que nem mesmo executando o script php diretamente não esta executando


4. Re: envio de email via cron

diego tesch
diegotesch

(usa Ubuntu)

Enviado em 08/10/2015 - 15:42h

Fiz algumas alteracoes no script.
pelo php, envio OK
quando executa na cron, nao envia



5. Re: envio de email via cron

Guilherme Isaac
guilhermisaac

(usa Arch Linux)

Enviado em 08/10/2015 - 15:46h

diegotesch escreveu:

Fiz algumas alteracoes no script.
pelo php, envio OK
quando executa na cron, nao envia


Manda ai como a linha que vc configurou no cron

--
Att

Guilherme Isaac


6. Re: envio de email via cron

diego tesch
diegotesch

(usa Ubuntu)

Enviado em 08/10/2015 - 15:49h


no cron
*/1 * * * * php -f /var/www/html/intercrm/php/agenda.php

o script php
#!/usr/bin/php -q
<?php
include_once './functions.php';
include_once '../config/const.php';

$conn = conectar();
$query = "SELECT * FROM `crm_agenda` WHERE `data_inicio` = current_date AND `hora` = current_time AND `status` = 1";
$select = $conn->prepare($query);
$select->execute();
if ($select->rowCount() != 0) {
while ($agendamentos = $select->fetchObject()) {

$id = $agendamentos->id;
$destino = $agendamentos->destino;
$periodo = $agendamentos->periodo;
$data = $agendamentos->data_inicio;
$hora = $agendamentos->hora;
$assunto = $agendamentos->assunto;
$msg = $agendamentos->mensagem;
$status = $agendamentos->status;
$enviar = shell_exec('sudo echo "' . $msg . '" | mail -s "' . $assunto . '" "' . $destino . '"');
switch ($periodo) {
case 'semanal':
echo $periodo;
$data_nova = incrementaDias($data, 7);
break;
case 'diario':
echo $periodo;
$data_nova = incrementaDias($data, 1);
break;
case '2_dias':
echo $periodo;
$data_nova = incrementaDias($data, 2);
break;
case '3_dias':
echo $periodo;
$data_nova = incrementaDias($data, 3);
break;
case '4_dias':
echo $periodo;
$data_nova = incrementaDias($data, 4);
break;
case '5_dias':
echo $periodo;
$data_nova = incrementaDias($data, 5);
break;
case '6_dias':
echo $periodo;
$data_nova = incrementaDias($data, 6);
break;
}
if ($periodo != 'uma_vez') {
echo $periodo;
$query_upd = "UPDATE `crm_agenda` SET `data_inicio` = ? WHERE `id` = ?";
$update = $conn->prepare($query_upd);
$update->execute(array($data_nova, $id));
} else {
$query_upd = "UPDATE `crm_agenda` SET `status` = 2 WHERE `id` = ?";
$update = $conn->prepare($query_upd);
$update->execute(array($id));
}
}
$conn = desconectar();
}

caso queira analisar


7. Re: envio de email via cron

Guilherme Isaac
guilhermisaac

(usa Arch Linux)

Enviado em 08/10/2015 - 16:14h

Se o script está enviando quando vc o executa, o problema pode ser que esteje no cron

tenta colocar assim
*/1 * * * * /usr/bin/php /var/www/html/intercrm/php/agenda.php

vc esta executando como root?
caso a localização do binario do php de sua distribuição seja diferente ou não saiba qual o path
# whereis php

ai ele vai te informar alguns locais, mas geralmente fica em /usr/bin/php no caso do debian

--
Att

Guilherme Isaac


8. Re: envio de email via cron

diego tesch
diegotesch

(usa Ubuntu)

Enviado em 08/10/2015 - 16:16h


cara, ja fiz este procedimento e o resultado é o mesmo.
sim, o usuario que usei na crontab é o root


9. Re: envio de email via cron

diego tesch
diegotesch

(usa Ubuntu)

Enviado em 08/10/2015 - 17:17h


alguma ideia?






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts