Quantcast
Channel: Tópicos
Viewing all articles
Browse latest Browse all 14700

Guardar conteúdo de email da bd

$
0
0
Olá,

Pesquisei um pouco no forum mas não encontrei nenhum tópico a falar deste assunto.

Estou a tentar gravar o conteúdo de emails recebidos na base de dados.

Encontrei na net um script (penso que o autor se chama vlad b.) para o efeito, o qual serve perfeitamente para o que preciso.

Inseri o ficheiro no servidor e fiz as configuração necessárias no Cpanel fazendo o foward do email para o ficheiro chamado emailfoward.php. E na verdade o objectivo está alcançado, o conteudo do email é guardado na bd.

O problema está no facto do remetente do email gravado receber sempre uma mensagem de erro pelo facto do email não ter sido entregue a um dos destinatários. Ou seja, o servidor assume o ficheiro php como um remetente, uma vez que é dessa forma que ele está configurado no Cpanel  

Aqui está o principio da mensagem.

"A message that you sent could not be delivered to one or more of its
recipients. This is a permanent error. The following address(es) failed:

  pipe to |/home/wwwinofw/public_html/emailforward.php"


Alguém sabe se é possível impedir que este email de erro seja enviado para o remetente? Seja no servidor ou directamente no script?

Script:
--------------

#!/usr/bin/php -q
<?php
error_reporting(0);

include"Connections/config.php";


chdir(dirname(__FILE__));
$fd = fopen("php://stdin", "r");
$email = "";
while (!feof($fd)) {
    $email .= fread($fd, 1024);
}
fclose($fd);



if(strlen($email)<1) {
    die();
}

// handle email
$lines = explode("\n", $email);

// empty vars
$from = "";
$to="";
$subject = "";
$headers = "";
$message = "";
$splittingheaders = true;

function replaceit($String){

$String = str_replace("'", "", $String);
$String = strip_tags($String);
return $String;
}

for ($i=0; $i < count($lines); $i++) {
    if ($splittingheaders) {
        // this is a header
        $headers .= $lines[$i]."\n";
        // look out for special headers
        if (preg_match("/^Subject: (.*)/", $lines[$i], $matches)) {
            $subject = replaceit($matches[1]);
        }
        if (preg_match("/^From (.*)/", $lines[$i], $matches)) {
            $from = replaceit($matches[1]);
        }

        if (preg_match("/^To: (.*)/", $lines[$i], $matches)) {
            $to = $matches[1];
        }
    } else {
        // not a header, but message
        $message .= replaceit($lines[$i])."\n";
    }
    if (trim($lines[$i])=="") {
        // empty line, header section has ended
        $splittingheaders = false;
    }
}


$query_select = $conecta->prepare("INSERT INTO as_pagamentosRecebidos (from, subject, message, time) VALUES ('$from','$subject','$message','" . time() . "')");
$query_select->execute();

-------------

Obrigado

Viewing all articles
Browse latest Browse all 14700

Trending Articles