Jump to content
Alb

Guardar conteúdo de email da bd

Recommended Posts

Alb

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

Share this post


Link to post
Share on other sites
Alb

Felizmente já está resolvido. Passei o script para outro servidor, que para ajudar é onde o script deve funcionar e neste o email de erro já não é enviado.

Sendo assim penso que o problema se deve a alguma configuração interna do servidor onde estava a testar isto.

Obrigado.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.