| Server IP : 162.214.74.102 / Your IP : 216.73.216.192 Web Server : Apache System : Linux dedi-4363141.lrsys.com.br 3.10.0-1160.119.1.el7.tuxcare.els25.x86_64 #1 SMP Wed Oct 1 17:37:27 UTC 2025 x86_64 User : lrsys ( 1015) PHP Version : 5.6.40 Disable Function : exec,passthru,shell_exec,system MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /home/lrsys/www/lrsys_apps/pranata/application/plugins/modulo_fiscal/nfephp/libs/NFe/ |
Upload File : |
<?php
namespace NFePHP\NFe;
/**
* Classe para envio dos emails aos interessados
*
* @category NFePHP
* @package NFePHP\NFe\MailNFe
* @copyright Copyright (c) 2008-2015
* @license http://www.gnu.org/licenses/lesser.html LGPL v3
* @author Roberto L. Machado <linux.rlm at gmail dot com>
* @link http://github.com/nfephp-org/nfephp for the canonical source repository
*/
use NFePHP\Common\Dom\Dom;
use NFePHP\Common\DateTime\DateTime;
use NFePHP\Common\Base\BaseMail;
use NFePHP\Common\Exception;
use Html2Text\Html2Text;
use \DOMDocument;
class MailNFe extends BaseMail
{
public $error = '';
protected $msgHtml = '';
protected $msgTxt = '';
protected $aMail = array();
/**
* envia
*
* @param string $pathFile
* @param array $aMail
* @param bool $comPdf
* @param string $pathPdf
* @return bool
*/
public function envia($pathFile = '', $aMail = array(), $comPdf = false, $pathPdf = '')
{
if ($comPdf && $pathPdf != '') {
$this->addAttachment($pathPdf, '');
}
$assunto = $this->zMontaMessagem($pathFile);
//cria o anexo do xml
$this->addAttachment($pathFile, '');
//constroi a mensagem
$this->buildMessage($this->msgHtml, $this->msgTxt);
if (sizeof($aMail)) {
// Se for informado um ou mais e-mails no $aMail, utiliza eles
$this->aMail = $aMail;
} elseif (!sizeof($this->aMail)) {
// Caso não seja informado nenhum e-mail e não tenha sido recuperado qualquer e-mail do xml
throw new Exception\RuntimeException('Nenhum e-mail informado ou recuperado do XML.');
}
$err = $this->sendMail($assunto, $this->aMail);
if ($err === true) {
return true;
} else {
$this->error = $err;
return false;
}
return true;
}
/**
* zMontaMessagem
*
* @param string $pathFile
*/
protected function zMontaMessagem($pathFile)
{
$dom = new Dom();
$dom->loadXMLFile($pathFile);
$infNFe = $dom->getNode('infNFe', 0);
$ide = $infNFe->getElementsByTagName('ide')->item(0);
$dest = $infNFe->getElementsByTagName('dest')->item(0);
$emit = $infNFe->getElementsByTagName('emit')->item(0);
$icmsTot = $infNFe->getElementsByTagName('ICMSTot')->item(0);
$razao = $emit->getElementsByTagName('xNome')->item(0)->nodeValue;
$nNF = $ide->getElementsByTagName('nNF')->item(0)->nodeValue;
$serie = $ide->getElementsByTagName('serie')->item(0)->nodeValue;
$xNome = $dest->getElementsByTagName('xNome')->item(0)->nodeValue;
$dhEmi = ! empty($ide->getElementsByTagName('dhEmi')->item(0)->nodeValue) ?
$ide->getElementsByTagName('dhEmi')->item(0)->nodeValue :
$ide->getElementsByTagName('dEmi')->item(0)->nodeValue;
$data = date('d/m/Y', DateTime::convertSefazTimeToTimestamp($dhEmi));
$vNF = $icmsTot->getElementsByTagName('vNF')->item(0)->nodeValue;
$this->aMail[] = !empty($dest->getElementsByTagName('email')->item(0)->nodeValue) ?
$dest->getElementsByTagName('email')->item(0)->nodeValue :
'';
//pega os emails que existirem em obsCont
$infAdic = $infNFe->getElementsByTagName('infAdic')->item(0);
if (!empty($infAdic)) {
$obsConts = $infAdic->getElementsByTagName('obsCont');
foreach ($obsConts as $obsCont) {
if (strtoupper($obsCont->getAttribute('xCampo')) === 'EMAIL') {
$this->aMail[] = $obsCont->getElementsByTagName('xTexto')->item(0)->nodeValue;
}
}
}
$this->msgHtml = $this->zRenderTemplate($xNome, $data, $nNF, $serie, $vNF, $razao);
$this->msgTxt = utf8_encode(Html2Text::convert(utf8_decode($this->msgHtml)));
return "NFe n. $nNF - $razao";
}
/**
* zRenderTemplate
*
* @param string $xNome
* @param string $data
* @param string $nNF
* @param string $serie
* @param string $vNF
* @param string $razao
* @return string
*/
protected function zRenderTemplate($xNome, $data, $nNF, $serie, $vNF, $razao)
{
$this->zTemplate();
$temp = $this->template;
$aSearch = array(
'{contato}',
'{data}',
'{numero}',
'{serie}',
'{valor}',
'{emitente}'
);
$aReplace = array(
$xNome,
$data,
$nNF,
$serie,
$vNF,
$razao
);
$temp = str_replace($aSearch, $aReplace, $temp);
return $temp;
}
/**
* zTemplate
* Seo template estiver vazio cria o basico
*/
protected function zTemplate()
{
if (empty($this->template)) {
$this->template = "<p><b>Prezados {contato},</b></p>".
"<p>Você está recebendo a Nota Fiscal Eletrônica emitida em {data} com o número ".
"{numero}, série {serie} de {emitente}, no valor de R$ {valor}. ".
"Junto com a mercadoria, você receberá também um DANFE (Documento ".
"Auxiliar da Nota Fiscal Eletrônica), que acompanha o trânsito das mercadorias.</p>".
"<p><i>Podemos conceituar a Nota Fiscal Eletrônica como um documento ".
"de existência apenas digital, emitido e armazenado eletronicamente, ".
"com o intuito de documentar, para fins fiscais, uma operação de ".
"circulação de mercadorias, ocorrida entre as partes. Sua validade ".
"jurídica garantida pela assinatura digital do remetente (garantia ".
"de autoria e de integridade) e recepção, pelo Fisco, do documento ".
"eletrônico, antes da ocorrência do Fato Gerador.</i></p>".
"<p><i>Os registros fiscais e contábeis devem ser feitos, a partir ".
"do próprio arquivo da NF-e, anexo neste e-mail, ou utilizando o ".
"DANFE, que representa graficamente a Nota Fiscal Eletrônica. ".
"A validade e autenticidade deste documento eletrônico pode ser ".
"verificada no site nacional do projeto (www.nfe.fazenda.gov.br), ".
"através da chave de acesso contida no DANFE.</i></p>".
"<p><i>Para poder utilizar os dados descritos do DANFE na ".
"escrituração da NF-e, tanto o contribuinte destinatário, ".
"como o contribuinte emitente, terão de verificar a validade da NF-e. ".
"Esta validade está vinculada à efetiva existência da NF-e nos ".
"arquivos da SEFAZ, e comprovada através da emissão da Autorização de Uso.</i></p>".
"<p><b>O DANFE não é uma nota fiscal, nem substitui uma nota fiscal, ".
"servindo apenas como instrumento auxiliar para consulta da NF-e no ".
"Ambiente Nacional.</b></p>".
"<p>Para mais detalhes, consulte: <a href=\"http://www.nfe.fazenda.gov.br/\">".
"www.nfe.fazenda.gov.br</a></p>".
"<br>".
"<p>Atenciosamente,</p>".
"<p>{emitente}</p>";
}
}
}