Issue #11
E-mail no linux
Baseado na solução do Luis Paulo, sugiro alterarmos os arquivos inc/security.php e restrito/inc/security.php conforme segue:
Linhas 35-40:
$retorno = (strpos($user_agent, "win") ? "\r\n" : "\n");
$headers = "Content-type: text/html; charset=ISO-8859-1$retorno";
$headers .= "Reply-To: $fromname <$from>$retorno";
$headers .= "Return-Path: $fromname <$from>$retorno";
$headers .= "From: $fromname <$from>$retorno";
//$headers .= "Organization: Prefeitura do Natal$retorno";
Sugiro também excluir o cabeçalho Organization, que hoje inclui o nome da Prefeitura do Natal nos e-mails enviados, mesmo que esse campo não seja habitualmente visível ao usuário.
Essa alteração deve permitir o uso do sistema em diferentes ambientes, sem necessidade de modificar o código ad hoc.
-
Outra possibilidade é utilizar o PHPMailer, conforme a contribuição do Reinaldo:
function sendMail($to, $subject, $body, $from="", $fromname=""){ require_once("../class/PHPMailerAutoload.php"); $mail = new PHPMailer(); $mail->isSMTP(); // Define que a mensagem será SMTP $mail->Host = "0.0.0.0"; //hostname ou IP do Servidor //$mail->SMTPAuth = true; //Caso seu email precise de autenticação, no nosso caso não. //$mail->Username = "seuemail@dominio.com"; //$mail->Passowrd = "sua senha"; if(empty($from)){ $sql = "SELECT nomeremetenteemail, emailremetente FROM lda_configuracao"; $rs = execQuery($sql); $row = mysql_fetch_array($rs); $mail->From = $row['emailremetente']; $mail->FromName = $row['nomeremetenteemail']; }else{ $mail->From = $from; $mail->FromName = $fromname; } $mail->addAddress($to); $mail->isHTML(true); //Define que o email será HTML $mail->CharSet = "iso-8859-1"; //Charset da mensagem (opcional) $mail->Subject = $subject; $html = "<html> <body> $body </body> </html>"; $mail->Body = $html; $mail->AltBody = $body; //Texto Plano (opcional) $envia = $mail->send(); //Envia o email $mail->clearAllRecipients(); //Limpa os destinatarios if($envia){ //Retorno do email return TRUE; }else{ return FALSE; } }
Isso resolveria o problema em questão, e também facilitaria, ao que parece, a configuração do servidor de e-mail.
-
Certo Leandro , vou analisar isto com Carol , para podermos inserir no projeto.
-
Quanto à primeira opção, na verdade o teste deveria ser contra
substr_count(strtolower(getenv("OS")), "windows")
:$linha = ( substr_count(strtolower(getenv("OS")), "windows") ? "\r\n" : "\n"); $headers = "Content-type: text/html; charset=ISO-8859-1$linha"; $headers .= "Reply-To: $fromname <$from>$linha"; $headers .= "Return-Path: $fromname <$from>$linha"; $headers .= "From: $fromname <$from>$linha"; //$headers .= "Organization: Prefeitura do Natal$linha";
Acredito que essa versão poderia ser implementada independente de uma futura opção pelo PHPMailer ou outra solução, visto que é de rápida implementação. Posso seguir adiante?
-
Instalei o e-SIC Livre em um ambiente Linux com Apache2 e Sendmail, e não tive problemas para enviar e-mail, mesmo sem a alteração no código. Será necessário alterar a quebra de linha?
Mesmo assim, segue necessário encontrar uma solução para os casos em que é necessário autenticar no servidor de e-mail, solução que o PHP não fornece por padrão. O PHPMailer parece uma solução simples.
-
Obrigada pela contribuição Leandro , vamos utilizar o PHPMAILER para autenticação no servidor de email. Temos que investir em solução entendíveis ao usuário =)
-
Como configuro o PHPMAILER dentro do e-sic ??
grato desde ja
-
William, lá em cima tem uma contribuição do Reinaldo que resolve essa questão. Tem que alterar os arquivos inc/security.php e restrito/inc/security.php.
-
Fiz as alterações mais não sei porque motivos quando adiciono esse trecho no Security.php o index principal fica em branco, vou verificar onde estou errando.
-
William , foi configurado o security.php do restrito tambem ?? Pois o problema de outro usuario foi resolvido apos a o termino de todos os diretorios restrito e principal.
-
mentioned in commit 768215ed5199e4afb8bb9a9edf08bd954e38564b
-
Status changed to closed