Skip to content

nfephp-org/sped-mail

Repository files navigation

sped-mail

O envio de emails é parte integrante das necessidades de quem opera com os serviços SPED.

De acordo com a legislação é obrigatório o envio de emails contendo os xml das NFe e dos CTe aos seus repectivos destinatários.

Alguns destinatários, erroneamente, pedem também que seja enviado o PDF relativo ao Documento Auxiliar (DANFE, DACTE ou DACCE) em anexo a esse email.

Outros requerem que os emails seja enviados a várias caixas postais.

Esta parte da API se destina a prover essa facilidade, caso se deseje.

Join the chat at https://gitter.im/nfephp-org/sped-mail

Actions Status

Latest Stable Version Latest Version on Packagist License Total Downloads

Issues Forks Stars

Como instalar :

Adicione este pacote com o composer, por linha de comando:

composer require nfephp-org/sped-mail

Ou adicione ao seu composer.json:

{
    "require": {
    	"nfephp-org/sped-mail": "^1.0"
    }
}

Como usar :

Essa classe pode ser usada de duas formas distintas.

1 - Usando o método estatico:

$resp = Mail::sendMail($config, $xml, $pdf, $addresses, $template, $pfx, $password, $mailer);

Onde : $config é um stdClass contendo as configuração de seu SMTP (OBRIGATÓRIO)

$config = new stdClass();
$config->smtpdebug = 0; //0-no 1-client 2-server 3-connection 4-lowlevel
$config->host = 'smtp.example.com.br';
$config->port = 587; //25 ou 465 ou 587
$config->smtpauth = true;
$config->user = 'fulano@example.com.br';
$config->password = 'senha';
$config->secure = 'tls';
$config->authtype = ''; //'', CRAM-MD5, PLAIN, LOGIN, XOAUTH2
$config->from = 'fulano@example.com.br';
$config->fantasy = 'Fulanoda Silva';
$config->replyTo = 'ciclano@mail.com';
$config->replyName = 'Ciclano Moreira';
$config->smtpoptions = null; /*[
    'ssl' => [
        'verify_peer' => true,
        'verify_depth' => 3,
        'allow_self_signed' => true,
        'peer_name' => 'smtp.example.com',
        'cafile' => '/etc/ssl/ca_cert.pem',
    ]
];*/
$config->timeout = 130;

$xml é o path ou o conteudo do xml que se deseja enviar (OBRIGATÓRIO)

$xml = '../nfe.xml';

ou ainda

$xml = file_get_contents('../nfe.xml');

Idem para o $pdf (OPCIONAL)

$pdf = '../nfe.pdf';

ou ainda

$pdf = file_get_contents('../nfe.pdf');

$address é um array contendo os endereços de email para quem você deseja enviar a mensagem. Essas listas de email serão verificadas e os endereços que não forem validos serão descartados. Se não for passada uma lista de endereços o sistema irá procurar no XML pelos endereços e esses serão usados, se existirem. (OPCIONAL)

$addresses = ['fulano@client.com.br'];

O template usado pode ser substituido pelo de sua escolha, usando o parametro $template (OPCIONAL). Use como referencia os templates padrões para criar o seu veja isso na classe Base.php

$template = '<p>Meu HTML {emitente} .... ';

O pfx é o conteudo do certificado pfx (OPCIONAL), que pode ser lido de um arquivo ou diretamente da sua base de dados.

$pfx = file_get_contents('path ao certificado pfx');

Password é a senha do certificado pfx para que possa ser usado (OPCIONAL), é claro que se o certificado for passado a senha também severá ser passada.

$password = 'senha';

O último parametro é uma instácia já existente do PHPMailer.

$mailer = new PHPMailer();

Para maiores detalhes veja os exemplos indicados na pasta examples.

NOTA: Em caso de falha será retornado um EXCEPTION

Como enviar para vários destinatários

Pordemos enviar os emails para vários destinatários basicamente de duas maneiras diferentes:

1 - Indicando todos os destinatários no próprio XML do documento

Neste caso podemos fazer uso da tag <obsCont> podem existir dezenas desses campos no xml, essa com certeza é a manira mais inteligente de indicar vários destinários, pois podem ser lidos diretamente do xml.

Veja que o tipo do campo xCampo="email" passa a ser obrigatório para que possamos identificar que este campo indica um email.

 <obsCont xCampo="email">
     <xTexto>fulano@yahoo.com.br</xTexto>
 </obsCont>

2 - Passando os endereços adicionais em um array nesta classe

Essa forma já foi indicada acima na variável $addresses = [ ... ];