Abaixo, segue um pequeno código que envia e-mails via VB.NET
para uma conta no gmail.
As contas de e-mail abaixo são fictícias. Você deve alterá-las para contas reais.
O código abaixo foi colocado dentro de um timer programado para ser executado a cada cinco minutos (suas propriedades são timer4.Interval = 300000; timer4.Enabled = True).
Quando o tempo de cinco minutos é atingido, o código é então disparado.
Private Sub Timer4_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer4.Tick
If ExisteConexaoInternet() = True Then
'------------ MANDANDO E-MAILS PELO GMAIL
Dim NumeroFigura As String = "C:\temp\winnt" + "imagem1.jpg"
Const destino As String = "teresaflorindo@hotmail.com"
Const Body As String = "Teste de e-mail. Dê uma olhada!!"
Dim respostaEnvioLabel As String
Dim remetenteEmail As String = "leoflorindo@gmail.com" '; //O e-mail do remetente
Dim mail As MailMessage = New MailMessage()
mail.To.Add(destino)
mail.From = New MailAddress(remetenteEmail, "Teresa Florindo", System.Text.Encoding.UTF8)
mail.Subject = "Assunto: Imagens do computador em uso"
mail.SubjectEncoding = System.Text.Encoding.UTF8
mail.Body = Body
mail.BodyEncoding = System.Text.Encoding.UTF8
mail.IsBodyHtml = True
mail.Priority = MailPriority.High
mail.Attachments.Add(New Attachment(NumeroFigura))
Dim client As SmtpClient = New SmtpClient() '//Adicionando as credenciais do seu e-mail e senha:
client.Credentials = New System.Net.NetworkCredential(remetenteEmail, "jeovaedeus")
client.Port = 25
client.Host = "smtp.gmail.com" '; //Definindo o provedor que irá disparar o e-mail
client.EnableSsl = True '; //Gmail trabalha com Server Secured Layer
Try
client.Send(mail)
respostaEnvioLabel = "Envio do E-mail com sucesso"
'MsgBox(respostaEnvioLabel)
Catch ex As Exception
respostaEnvioLabel = "Ocorreu um erro ao enviar:" + ex.Message
'MsgBox(respostaEnvioLabel)
End Try
'-------------------- FIM DO CÓDIGO PARA O GMAIL------------------------------
End If
End Sub
Aqui está somente descrito o envio de um e-mail simples via internet. A porta de acesso é a 25. O servirdor smtp.gmail.com é informado como host.
Verifique que uma simples imagem está sendo enviada em anexo com a mensagem.
Para usar este exemplo, você deve criar uma conta no gmail para uso.
A função ExisteConexaoInternet() verifica se o computador está no caso logado a internet. Se estiver, é possível passar o e-mail sem que o usuário tenha qualquer conhecimento disso.
O código da função está descrito abaixo:
Private Function ExisteConexaoInternet() As Boolean
'Define uma URL válida para consultar
Dim url As New System.Uri("http://www.globo.com/")
'Monta a requisição HTTP
Dim req As System.Net.WebRequest
req = System.Net.WebRequest.Create(url)
'Tenta fazer a requisição
Try
Dim resp As System.Net.WebResponse
resp = req.GetResponse()
resp.Close()
req = Nothing
'Tudo certo... Temos conexão com a Internet
Return True
Catch ex As Exception
'Não deu... Conexão não dispon¡vel
req = Nothing
Return False
End Try
End Function
A função simplesmente verifica se é possível acessar com sucesso um site na internet (no caso o site da Globo). Se for possível, então há a possibilidade de se enviar e-mail via internet e o código de envio de e-mail é liberado.
quinta-feira, 18 de junho de 2009
sexta-feira, 12 de junho de 2009
NF-E: COLETANDO DADOS DO ARQUIVO DE SITUAÇÃO
Em alguns momentos, seja por erro no retorno do web service, seja por algo que impossibilite o acesso, os arquivos -proc-rec.xml para uma nfe enviada normalmente ao servido da sefaz poderão ser perdidos. Ao consultar o site da sefaz você constatará que a mesma já se encontra autorizada para uso, mas não possui ainda o arquivo -pro-rec.xml com número do protocolo informado no site.
Para alguns aplicativos de ERP isso pode significar um problema se de maneira normal estes aplicativos aguardam a recepção do arquivo -pro-rec.xml para validar no banco de dados da empresa a numeração do protocolo de autorização de uso e o status da nf-e no site da Sefaz.
Se o seu ERP move os arquivos de num-lot.xml, -rec.xml e -pro-rec.xml para uma outra pasta quando os mesmos são detectados e um deles não retorna - como o -pro-rec.xml - o trabalho do seu ERP estará comprometido. Você terá que criar um arquivo de pedido de situação da nf-e que enviou à Sefaz e atualizar os dados do protocolo de uso, hora de recepção e status da nf-e na mão... trabalho inglório!!!
Nessa caso, será preciso obter de um outro modo o número do protocolo de autorização da nf-e. Para obter os dados novamente, pode gerar um arquivo de pedido de status e deixar o retorno na mesma pasta onde deveria estar o arquivo -pro-rec.xml não recebido e dessa forma forçar seu ERP a ler o arquivo -sit.XML para resolver por si mesmo essa situação.
Um pedido de situação da nf-e enviado a Sefaz está listado abaixo. O arquivo é pequeno e bem simples de ser gerado:
<
?xml version="1.0" encoding="UTF-8"?>
<
conssitnfe xsi="http://www.w3.org/2001/XMLSchema-instance" xsd="http://www.w3.org/2001/XMLSchema" versao="1.07" xmlns="http://www.portalfiscal.inf.br/nfe">
<
tpamb
>1</tpamb>
<xserv
>CONSULTA</xserv>
<chnfe
>13090604672291000115550110000000380000000494</chnfe>
</consSitNFe>
O nome do arquivo de pedido de situação é nfe-sit.xml.
Exemplo: 13090604672291000115550110000000380000000494-ped-sit.xml
O arquivo de retorno gerado por um pedido de situação traz em conjunto em seu interior o próprio número da nf-e, o número do protocolo de uso e o status da nf-e no site da sefaz:
< ?xml version="1.0" encoding="UTF-8"?>
<retConsSitNFe versao="1.07" xmlns="http://www.portalfiscal.inf.br/nfe"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.portalfiscal.inf.br/nfe retConsSitNFe_v1.07.xsd">
<infProt
>Id="ID113090003033468">
<tpamb
>1</tpamb>
<verAplic
>1</verAplic>
<cStat
>100</cStat>
<xMotivo
>Autorizado o uso da NF-e</xMotivo
<cUF
>13</cUF>
<chNFe
>13090604672291000115550110000000400000000514</chNFe>
<dhRecbto
>2009-06-12T08:50:58</dhRecbto>
<nProt
>113090003033468</nProt>
<digVal
>roFtqwdm/MZJQEmiXms/u3hwEe4=</digVal>
</infProt>
Para coletar a informação do número de protocolo para ser usado na impressão da DANFE, um simples IF a mais precisa ser acrescentado ao código de impressão da DANFE.
Você pode checar antes da impressão da DANFE se há a existência de um arquivo de pedidido de situação ou o arquivo pro-rec.xml de retorno do recibo.
Eis um código em VB.NET para isso:
Dim NomeArquivoRecibo As String
NomeArquivoRecibo = "F:\SisWin\IAM\NFE\RETORNO\PROCESSADOS\" + IdNfe + "-pro-rec.xml"
'Danfe Normal. Pega os dados dos recibos e do protocolo de uso
If TipodeEmissao = "1" Then
'Verifica se já houve retorno do arquivo selecionado
If IO.File.Exists(NomeArquivoRecibo) = False Then
Dim NomeArquivoRecibo5 As String
'Algo errado com o retorno do recibo. Procurar pelo arquivo de situação
'da NF-e. Necessário para os erros de falta de dados do arquivo -pro-rec.xml
'Ler dados do arquivo de retorno de situação, caso o status do
'recibo de retorno esteja diferente de 104
NomeArquivoRecibo5 = "F:\SisWin\NFE\RETORNO\PROCESSADOS" + IdNfe + "-sit.xml"
'Abrir o arquivo de retorno situação de status
Dim reader_5 As XmlTextReader = New XmlTextReader(NomeArquivoRecibo5)
If IO.File.Exists(NomeArquivoRecibo5) = False Then
MsgBox("Impressão da DANFE Cancelada!!! Sem Recibo de Retorno! Envie a NF-e primeiro a SEFAZ!!", MsgBoxStyle.Critical, "DANFE Coplast")
Exit Sub
Else
Do While (reader_5.Read())
Select Case reader_5.NodeType
Case XmlNodeType.Element
If reader_5.Name = "nProt" Then
LProtocolo2 = reader_5.ReadString
If LProtocolo2 <> "" Then
myRow2.NumProtocolo = LProtocolo2
End If
End If
End Select
Loop
reader_5.Close()
End If
(...)
Esse pequeno trecho fará a leitura do dado do Protocolo diretamente do arquivo -sit.xml gerado.
O trecho também pode ser utilizado para gravar o registro de protocolo no banco de dados a fim de evitar problemas quando não se consegue obter o -pro-rec.xml de modo correto no retorno do site da Sefaz.
Sorte a todos!
Assinar:
Postagens (Atom)
UM APLICATIVO PARA LEITURA DEVOCIONAL ANUAL DA BIBLIA EM ANDROID
Olá, pessoal! Este novo projeto foi criado em Visual Studio 2019 em C#.Net com o Xamarin. Já está disponível no Google Play para vocês baix...
-
As funções abaixo ajudam na leitura de um arquivo XML da NF-e. Você só precisa fazer a leitura das tags corretas e lançá-las na base de dado...
-
O GLPI é um dos muitos tipos de aplicativos helpdesk free existentes na internet. O fórum do mesmo pode ser encontrado neste link: ...
-
Olá, pessoal! Esse projeto foi criado em 2017 e aprimorado agora em 2018. Foi também criado com o Visual Studio 2015 em C#.NET com o Xa...