Clique abaixo para nos ajudar
Login

Esqueci minha senha

Estamos no Facebook
Buscar
 
 

Resultados por:
 


Rechercher Busca avançada

Quem está conectado
20 usuários online :: 1 usuário cadastrado, Nenhum Invisível e 19 Visitantes :: 2 Motores de busca

FAF

[ Ver toda a lista ]


O recorde de usuários online foi de 468 em 1/3/2012, 10:43
Últimos assuntos
» Alterar uma palavra num arquivo de texto
Ontem à(s) 12:02 por Teseu

» Buscar endereço por CEP
3/12/2016, 19:59 por pedrossian

» USAR WEBSERVICE NO VFP9
2/12/2016, 09:50 por AJC

» BANIMENTO DE USUARIO
17/11/2016, 08:31 por FAF

» Impressora Ticket
15/11/2016, 09:20 por clima238

» Gráfico
9/11/2016, 10:43 por hidroluz

» TRANSPOR TABELA
9/11/2016, 10:34 por hidroluz

» MUDANÇA DO .DBF PARA POTSGREE
9/11/2016, 09:12 por AJC

» Website com videoaulas sobre linguagens de programação
8/11/2016, 09:56 por JLDR

» Parceria para desenvolvimento de template em Wordpress
7/11/2016, 19:15 por mindix

» Data fica invertida na planilha que é gerada via programa.
27/10/2016, 11:00 por Linghston

» Maximizar report direto do menu
21/10/2016, 20:48 por Rosangela Pires

» Fechar form com tempo
21/10/2016, 10:15 por Rosangela Pires

» URGENTE: Ajuda com impressora ELGIN-L42
14/10/2016, 09:53 por megasoft

» Opções para gerar NF-e
10/10/2016, 09:07 por mavsinfo

» Google Maps
8/10/2016, 15:08 por Rosangela Pires

» Mysql
5/10/2016, 11:22 por Marcos Guedes

» Acessando Banco em MYSQL de um projeto WORDPRESS
3/10/2016, 10:58 por Marcos Guedes

» OPTION SELECT MOSTRAR CAMPOS QUASE PRONTO
26/9/2016, 21:09 por BobKuspe

» Pesquisa em grid
14/9/2016, 09:24 por AJC

Alterar uma palavra num arquivo de texto

5/12/2016, 12:02 por Teseu

Olá prezados colegas de programação!

Este é eu primeiro post no fórum e gostaria de poder …

Comentários: 0

Buscar endereço por CEP

3/12/2016, 19:59 por pedrossian

Caros amigos, meu código para buscar endereço pelo CEP não funciona mais.
Alguém pode me …

Comentários: 0

USAR WEBSERVICE NO VFP9

2/12/2016, 09:50 por AJC

Pessoal, preciso de um material ou livro que me traga instruções como
usar a consumação de …

Comentários: 0

BANIMENTO DE USUARIO

13/11/2016, 16:21 por FAF

A usuária ROSANGELA PIRES ao tentar acessar o Forum obtem sempre a mensagem de BANIMENTO.
A mesma …

Comentários: 3

Impressora Ticket

15/11/2016, 09:20 por clima238

Bom dia,
Por favor alguém me explique porque o código abaixo imprime no ecrã em vez do printer: …

Comentários: 0

Estatísticas
Temos 6962 usuários registrados
O último usuário registrado atende pelo nome de teklainfo

Os nossos membros postaram um total de 17118 mensagens em 2576 assuntos

Enviando emails em formato HTML

Página 1 de 2 1, 2  Seguinte

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Resolvido Enviando emails em formato HTML

Mensagem por pablo_frosi em 3/7/2009, 15:45

Olá colegas,
eu gostaria de saber se alguém tem o conhecimento de alguma função que troque a propriedade da fonte para negrito ou outra propriedade. Não é de um objeto, mas sim de uma variavel string mesmo.

O que eu preciso é criar um programa para envio de e-mails, onde a estrutura do e-mail contém campos em negrito.

Ex:
Valor Total NFe: R$ 792,00
Vctos: 10/07/2009 R$ 392,00
10/08/2009 R$ 400,00

Abraços.

pablo_frosi
Começando a Participar
Começando a Participar


Voltar ao Topo Ir em baixo

Resolvido Re: Enviando emails em formato HTML

Mensagem por Marcos Guedes em 3/7/2009, 15:53

Você já tem uma rotina de email?
Se tiver, você precisará enviar o conteúdo em formato HTML.
Para isto, deverás alterar o tipo de envio (de texto para HTML).
Em seguida enviar uma mensagem no seguinte padrão:
Código:
LOCAL conteudo AS STRING
m.conteudo = "<b>Texto Negrito</b><br/>"
m.conteudo = m.conteudo + "<i>Texto itálico</i><br/>"
m.conteudo = m.conteudo + "<u>Texto sublinhado</u><br/>"
m.conteudo = m.conteudo + "<font color='red'>Texto vermelho</font>"

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: Enviando emails em formato HTML

Mensagem por pablo_frosi em 3/7/2009, 16:24

[Você precisa estar registrado e conectado para ver este link.] escreveu:Você já tem uma rotina de email?

Já tenho sim, tentarei essa opção, valeu Marcos.

pablo_frosi
Começando a Participar
Começando a Participar


Voltar ao Topo Ir em baixo

Resolvido Re: Enviando emails em formato HTML

Mensagem por Marcos Guedes em 3/7/2009, 16:32

Ficarei aguardando o resultado.
Caso não tenhas experiência com HTML, temos um fórum específico para a mesma também. Very Happy

Obs: Caso não funcione com o HTML, verifique se sua rotina permite enviar a mensagem em formato .mht

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: Enviando emails em formato HTML

Mensagem por pablo_frosi em 3/7/2009, 16:50

O que acontece é o seguinte, essa rotina já estava criada, só tenho que ver isso das formatações por frescura mesmo... como não sou eu quem boto ordem na "casa", então vou fazer né hahaha.

Mas seguinte, essa rotina tem parametros: assunto, anexo, destinatário, mensagem, etc. por isso creio que essa solução não funcionaria.

Se eu salvar em HTML e anexar, o outlook vai reconhecer a formatação do HTML e lançar o texto para a caixa de texto dele (outlook)?

pablo_frosi
Começando a Participar
Começando a Participar


Voltar ao Topo Ir em baixo

Resolvido Re: Enviando emails em formato HTML

Mensagem por Marcos Guedes em 3/7/2009, 17:02

Vale apena tentar!

Na empresa em que trabalho tenho a rotina de enviar email guardada numa Dll (Não tenho acesso ao código).
Sendo que a rotina usa recursos do winsock.ocx.
E tenho duas opções:

1. Enviar em formato texto
2. Enviar um arquivo .mht

Neste caso, uso a segunda opção.

Em casa tenho guardado uma rotina que adaptei de um amigo (Que também usa o winsock).
Caso não funcione se você anexar o arquivo html ao outlook, então posso procurar a rotina que tenho e disponibilizá-la, caso seja de seu interesse.

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: Enviando emails em formato HTML

Mensagem por pablo_frosi em 3/7/2009, 17:09

Olha... eu ficaria muito grato!!!

Mas sem estress né haha, já conversei aqui com um colega de trabalho, ele falou que se não é possível diretamente com o FOX nem é para eu me esquentar a cabeça.

Claro que é um caso curioso e estou com vontade de resolver agora né. hahahaha

pablo_frosi
Começando a Participar
Começando a Participar


Voltar ao Topo Ir em baixo

Resolvido Re: Enviando emails em formato HTML

Mensagem por Marcos Guedes em 3/7/2009, 17:15

kkkk
Fique tranquilo!
Você mesmo comprovou que o fox faz até chover.
kkkk
Irei procurar a rotina que fiz, hoje a noite - quando chegar em casa, e posto aqui.

Até lá, se conseguir, me avisa!
Há duas formas: Enviando diretamente em formato HTML, ou enviando um arquivo *.mht.

A solução que tenho é enviando em formato *.mht

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: Enviando emails em formato HTML

Mensagem por pablo_frosi em 3/7/2009, 17:35

E como fica a estrutura desse .mht? Pode postar um exemplo do código que entra nele?

Na visualização da mensagem do e-mail, ele aparece a codificação ou somente o texto que vc quer?!

pablo_frosi
Começando a Participar
Começando a Participar


Voltar ao Topo Ir em baixo

Resolvido Re: Enviando emails em formato HTML

Mensagem por Marcos Guedes em 3/7/2009, 18:00

Para enviar em formato mht, eu faço o seguinte (Dá um pouco de trabalho, mas tem sido infalível):
1. Crio o formato do email desejado e salvo como HTML.
2. Abro o arquivo HTML no Internet Explorer (O formato MHT é da Microsoft!).
3. Salvo o arquivo com a extensão .MHT
4. Em seguida, abro o arquivo mht com um editor de texto simples, como o Bloco de Notas por exemplo.
5. Altero o valores que serão mutáveis, para uma string tipo __VALOR__.
6. E na aplicação, sempre que necessário, pego o arquivo, que estará guardado num local específico, e copio para uma pasta temporária.
7. Utilizo o STRTRAN() nas variáveis que define como __VALOR__.
8. Pego o novo arquivo gerado, envio através da rotina que uso.
9. Por fim, excluo o arquivo.
10. Email enviado com sucesso!

Eu teria o seguinte:

1. Arquivo que criei como modelo, em formato HTML:
Código:
<html>
<body>
<p><b>Nome: </b>Meu nome<br>
<b>Email:</b> [Você precisa estar registrado e conectado para ver este link.]</p>
</body>
</html>

2. Conteúdo do arquivo, após ter sido convertido para mht
Código:
From: "Saved by Windows Internet Explorer 8"
Subject:
Date: Fri, 3 Jul 2009 17:50:03 -0300
MIME-Version: 1.0
Content-Type: text/html;
   charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Location: file://C:\Users\Marcos Guedes\Desktop\teste.html
X-MimeOLE: Produced By Microsoft MimeOLE V6.0.6001.18049

=EF=BB=BF<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content=3D"text/html; charset=3Dutf-8" http-equiv=3DContent-Type>
<META name=3DGENERATOR content=3D"MSHTML 8.00.6001.18783"></HEAD>
<BODY>
<P><B>Nome: </B>Meu nome<BR><B>Email:</B>=20
[Você precisa estar registrado e conectado para ver este link.]</P></BODY></HTML>

3. Arquivo que usarei em minha rotina:
Código:


From: "Saved by Windows Internet Explorer 8"
Subject:
Date: Fri, 3 Jul 2009 17:50:03 -0300
MIME-Version: 1.0
Content-Type: text/html;
   charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Location: file://C:\Users\Marcos Guedes\Desktop\teste.html
X-MimeOLE: Produced By Microsoft MimeOLE V6.0.6001.18049

=EF=BB=BF<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content=3D"text/html; charset=3Dutf-8" http-equiv=3DContent-Type>
<META name=3DGENERATOR content=3D"MSHTML 8.00.6001.18783"></HEAD>
<BODY>
<P><B>Nome: </B>__NOME__<BR><B>Email:</B>=20
__EMAIL__</P></BODY></HTML>

Pode parecer complicado, mas não é.
Tentarei enviar um pacote com o exemplo completo.

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: Enviando emails em formato HTML

Mensagem por pablo_frosi em 3/7/2009, 18:07

Eu consegui gerar esse arquivo mht pelo Fox mesmo, a estrutura dele é idêntica ao HTML, porém não consegui reproduzir da forma desejada no outlook mesmo.

Tentei anexar o arquivo para ver se na hora em que abro aparecia as informações na caixa de texto do outlook, mas não consegui. Se souber de algo eu agradeço rsrs.

pablo_frosi
Começando a Participar
Começando a Participar


Voltar ao Topo Ir em baixo

Resolvido Re: Enviando emails em formato HTML

Mensagem por Marcos Guedes em 5/7/2009, 23:16

Pablo, encontrei este solução simples, mas não sei se servirá para você.
Para que a mesma funcione, você deverá baixar o componente jMail, e o instalar no(s) computadores que usarão a rotina.
Você poderá fazer o download do componente no seguinte link:
[Você precisa estar registrado e conectado para ver este link.]

Código do envio da mensagem que poderá, ou não, ser em formato HTML:
Código:
LOCAL objmail AS OBJECT
LOCAL remetente AS STRING
LOCAL destinatario AS STRING
LOCAL assunto AS STRING
LOCAL conteudo AS STRING
LOCAL usuarioautenticar AS STRING
LOCAL senhaautenticar AS STRING
LOCAL servidorsmtp AS STRING
*!*
m.remetente = "programacaobrasil.forum@gmail.com"
m.destinatario = "programacaobrasil@gmail.com"
m.assunto = "Assunto da mensagem"
m.conteudo = "Conteúdo da mensagem"
m.usuarioautenticar = "usuario@dominio.com.br"
m.senhaautenticar = "senhaUsuario"
m.servidorsmtp = "mail.dominio.com.br"

m.objmail = NEWOBJECT("jmail.message")
m.objmail.silent = .T. && Caso ocorra um erro, ficará em silêncio.
m.objmail.FROM = m.remetente
m.objmail.addrecipient(destinatario)
m.objmail.subject = "Assunto"
*!* Formato texto
*m.objmail.appendText = m.conteudo
*!* Formato HTML
m.objmail.appendhtml("<html><body><b><i>" + m.conteudo + "</i></b></body></html>")
m.objmail.mailserverusername = m.usuarioautenticar
m.objmail.mailserverpassword = m.senhaautenticar

MESSAGEBOX(m.objmail.SEND(m.servidorsmtp))
Enquanto isto, estou preparando a classe de envio no formato mht, utilizando o winsock (que é o modelo que eu utilizo) para disponibilizá-la aqui no fórum.

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: Enviando emails em formato HTML

Mensagem por pablo_frosi em 7/7/2009, 22:11

Hoje testei bastante isso, alias, sem ser por essa rotina que você criou, agradeço por ela também, mas acho que não vai ser muito útil pois os TI dos clientes sempre reclamam para instalar aplicações nos terminais, então vamos deixar de lado o jMail.

Testei bastante em cima da rotina que já tenho, não consegui resolver ainda, mas clareou bastante coisas sobre classes, e estou aguardando a Winsock, pelo que pesquisei ela é uma ótima classe para tratar de html, http, etc.

Abraço

pablo_frosi
Começando a Participar
Começando a Participar


Voltar ao Topo Ir em baixo

Resolvido Re: Enviando emails em formato HTML

Mensagem por Marcos Guedes em 8/7/2009, 07:14

Então vamos à classe Winsock!
O exemplo que consegui com um amigo meu foi este:
[Você precisa estar registrado e conectado para ver este link.]

Tenho apenas que adaptá-lo para uma classe em um arquivo PRG.
Até então, a classe que adpatei ficou assim:
Código:
WAIT WINDOW "Enviando..." NOWAIT NOCLEAR

m.obj = NEWOBJECT("mailwinsock")

m.obj.setservidorpop("mail.dominio.com.br")
m.obj.setservidorsmtp("mail.dominio.com.br")
m.obj.setportapop("110")
m.obj.setportasmtp("25")

m.obj.setusuario("email@dominio.com.br")
m.obj.setsenha("senha")

m.obj.setnome("Remetente")
m.obj.setendemail("email@remetente.com.br")

m.obj.setemaildestinatario("email@destinatario.com")
m.obj.setassunto("Assunto")
m.obj.settexto("Texto")

IF m.obj.conecta_smtp()
   ?m.obj.envia_msg()
   ?m.obj.desconectar()
ENDIF

*!*IF m.obj.conecta_pop() THEN
*!*   ?m.obj.checa_msg()
*!*   ?m.obj.desconectar()
*!*ENDIF

*!*?m.obj.conecta_smtp()
m.obj = NULL

WAIT CLEAR

DEFINE CLASS mailwinsock AS CUSTOM OLEPUBLIC

   HIDDEN email AS "MSWinsock.Winsock.1"
   HIDDEN DATA
   HIDDEN time_out
   HIDDEN tempo1
   HIDDEN enviou

   HIDDEN servidor_pop AS STRING
   HIDDEN porta_pop AS STRING
   HIDDEN servidor_smtp AS STRING
   HIDDEN porta_smtp AS STRING

   HIDDEN USER AS STRING
   HIDDEN senha AS STRING

   HIDDEN NOME AS STRING
   HIDDEN end_email AS STRING
   HIDDEN destinatario AS STRING
   HIDDEN bcc AS STRING
   HIDDEN assunto AS STRING
   HIDDEN texto AS STRING

   HIDDEN cursorretorno AS STRING

   PROCEDURE setemaildestinatario AS void
      LPARAMETERS email AS STRING
      THIS.destinatario = m.email
   ENDPROC

   PROCEDURE setemailbbc AS void
      LPARAMETERS email AS STRING
      THIS.bcc = m.email
   ENDPROC

   PROCEDURE setassunto AS void
      LPARAMETERS cassunto AS STRING
      THIS.assunto = m.cassunto
   ENDPROC

   PROCEDURE settexto AS void
      LPARAMETERS ctexto AS STRING
      THIS.texto = m.ctexto
   ENDPROC

   PROCEDURE setservidorpop AS void
      LPARAMETERS servidorpop AS STRING
      THIS.servidor_pop = m.servidorpop
   ENDPROC

   PROCEDURE setservidorsmtp AS void
      LPARAMETERS servidorsmtp AS STRING
      THIS.servidor_smtp = m.servidorsmtp
   ENDPROC

   PROCEDURE setportapop AS void
      LPARAMETERS portapop AS STRING
      THIS.porta_pop = m.portapop
   ENDPROC

   PROCEDURE setportasmtp AS void
      LPARAMETERS portasmtp AS STRING
      THIS.porta_smtp = m.portasmtp
   ENDPROC

   PROCEDURE setnome AS void
      LPARAMETERS cnome AS STRING
      THIS.NOME = m.cnome
   ENDPROC

   PROCEDURE setendemail AS void
      LPARAMETERS email AS STRING
      THIS.end_email = m.email
   ENDPROC

   PROCEDURE setusuario AS void
      LPARAMETERS usuario AS STRING
      THIS.USER = m.usuario
   ENDPROC

   PROCEDURE setsenha AS void
      LPARAMETERS csenha AS STRING
      THIS.senha = m.csenha
   ENDPROC

   FUNCTION conecta_pop AS logical
      *!* Conecta no servidor POP.
      *!* Inicia a conexao com o endereco e porta informada.
      THIS.escrevecursorstatus("Conexão fechada!")
      THIS.email.CLOSE()
      THIS.email.CONNECT(ALLTRIM(THIS.servidor_pop),THIS.porta_pop)

      *!* Aguarda pelo retorno do servidor.
      IF !THIS.WAIT("+OK",.T.) THEN
         THIS.escrevecursorstatus("Não foi possível conectar no serivor POP!")
         THIS.escrevecursorstatus("Conexão fechada!")
         THIS.email.CLOSE()
         RETURN .F.
      ENDIF

      *!* Envia o usuario preenchido e aguarda retorno.
      IF !THIS.enviar("USER " + TRIM(THIS.USER), "+OK") THEN
         THIS.escrevecursorstatus("Usuário não aceito!")
         THIS.escrevecursorstatus("Conexão fechada!")
         THIS.email.CLOSE()
         RETURN .F.
      ENDIF

      *!* Envia a senha e aguarda retorno.
      IF !THIS.enviar("PASS " + THIS.senha, "+OK")
         THIS.escrevecursorstatus("Senha não aceita!")
         THIS.escrevecursorstatus("Conexão fechada!")
         THIS.email.CLOSE()
         RETURN .F.
      ENDIF

      RETURN .T.
   ENDFUNC

   FUNCTION conecta_smtp AS logical
      *!* Conecta no servidor SMTP

      *!* Inicia a conexao com o endereco e porta informada.
      THIS.escrevecursorstatus("Conexão fechada!")
      THIS.email.CLOSE()
      THIS.email.CONNECT(ALLTRIM(THIS.servidor_smtp), THIS.porta_smtp)

      *!* Aguarda retorno do servidor
      IF !THIS.WAIT("220",.T.)
         THIS.escrevecursorstatus("Não foi possível conectar no servidor SMTP!")
         THIS.escrevecursorstatus("Conexão fechada!")
         THIS.email.CLOSE()
         RETURN .F.
      ENDIF

      *!* Identifica-se para o servidor
      IF !THIS.enviar("HELO " + .localhostname, "250")
         THIS.escrevecursorstatus("Erro com a identificação com o servidor SMTP!")
         THIS.escrevecursorstatus("Conexão fechada!")
         THIS.email.CLOSE()
         RETURN .F.
      ENDIF

      RETURN .T.
   ENDFUNC

   HIDDEN PROCEDURE INIT AS void
      THIS.cursorretorno = SYS(2015)

      THIS.DATA = ""
      THIS.time_out = 30
      THIS.tempo1 = 0
      THIS.enviou = .F.

      THIS.servidor_pop = ""
      THIS.porta_pop = ""
      THIS.servidor_smtp = ""
      THIS.porta_smtp = ""

      THIS.USER = ""
      THIS.senha = ""

      THIS.NOME = ""
      THIS.end_email = ""
      THIS.destinatario = ""
      THIS.bcc = ""
      THIS.assunto = ""
      THIS.texto = ""

      THIS.email = NEWOBJECT("MSWinsock.Winsock.1")
      CREATE CURSOR (THIS.cursorretorno) (cstatus c(100))

      *!* application.AutoYield = .f.
   ENDPROC

   HIDDEN PROCEDURE escrevecursorstatus AS void
      LPARAMETERS mensagem AS STRING
      INSERT INTO (THIS.cursorretorno) (cstatus) VALUES (m.mensagem)
   ENDPROC

   HIDDEN PROCEDURE UNLOAD AS void
      *!* application.AutoYield = .t.
   ENDPROC

   HIDDEN PROCEDURE DESTROY AS void
      THIS.email = NULL
   ENDPROC

   HIDDEN FUNCTION checa_msg AS logical
      LPARAMETERS apagar AS logical

      *!* Verifica, mostra e se desejado apaga as mensagem do servidor.      *
      *!* Ja tem que estar conectado no servidor SMTP antes de rodar este metodo.

      LOCAL total_msg AS INTEGER
      LOCAL msg_atual AS INTEGER

      IF (VARTYPE(m.apagar)!="L") THEN
         m.apagar = .F. && Nao apaga as mensagens.
      ENDIF

      THIS.escrevecursorstatus("Solicitando status da conta de email...")

      *!* Solicita o status da caixa postal e aguarda a resposta.
      *!* Aqui é que sabemos se tem email ou nao.
      IF !THIS.enviar("STAT","+OK")
         THIS.escrevecursorstatus("Erro na solicitação de status da conta!")
         RETURN .F.
      ENDIF

      *!* Pega o retorno e transform em valor.
      m.total_msg  = VAL(SUBSTR(THIS.DATA,AT(" ",THIS.DATA)+1,RAT(" ",THIS.DATA)-1))

      FOR m.msg_atual = 1 TO m.total_msg
         THIS.escrevecursorstatus("Recebendo mensagem " + TRANSFORM(m.msg_atual) + "/" + TRANSFORM(m.total_msg))

         *!* Solicita a mensagem para download.
         IF !THIS.enviar("RETR " + TRANSFORM(m.msg_atual))
            THIS.escrevecursorstatus("Erro na solicitação (RETR)")
            RETURN .F.
         ENDIF

         *!* Aguarda o termino do recebimento do ultimo comando.
         IF (!THIS.WAIT("+OK") AND (SUBSTR(THIS.DATA,LEN(THIS.DATA)-2,1) != ".") AND !THIS.WAIT(".",.T.)) THEN
            THIS.escrevecursorstatus("Erro na solicitação (RETR)")
            RETURN .F.
         ENDIF

         IF (m.apagar) THEN

            *!* Apaga a mensagem baixada.
            THIS.escrevecursorstatus("Apagando mensagem " + TRANSFORM(m.msg_atual))

            IF !THIS.enviar("DELE " + TRANSFORM(m.msg_atual) + " 0","+OK")
               THIS.escrevecursorstatus("Erro na exclusão da mensagem (DELE)")
               LOOP
            ENDIF
         ENDIF
      NEXT

      RETURN .T.
   ENDFUNC

   HIDDEN FUNCTION WAIT AS logical
      LPARAMETERS retorno AS STRING, limpa_ret AS logical

      IF ( (VARTYPE(m.limpa_ret)=="L") AND m.limpa_ret ) THEN
         *!* Limpa os ultimos dados recebidos.
         THIS.DATA = ""
      ENDIF

      THIS.tempo1 = SECONDS()

      *!* CLEAR TYPEAHEAD

      *!* Aguarda o recebimento de dados, o "time out" ou o usuario pressionar ESC.
      DO WHILE SECONDS() - THIS.tempo1 <= THIS.time_out

         IF (INKEY(0.1) == 27) THEN
            RETURN .F.
         ENDIF

         *!* Se receber dados...
         IF !EMPTY(THIS.DATA) THEN
            *!* Compara com o "retorno" desejado e retorna o resultado
            RETURN (LEFT(THIS.DATA,LEN(m.retorno)) == m.retorno)
         ENDIF
      ENDDO

      RETURN .F.
   ENDFUNC

   PROCEDURE desconectar AS void
      *!* Desconecta do servidor POP ou SMTP enviando o comando de saida.
      THIS.escrevecursorstatus("Desconectando do servidor...")

      THIS.enviar("QUIT")
      THIS.escrevecursorstatus("Conexão fechada!")
      THIS.email.OBJECT.CLOSE()

      THIS.escrevecursorstatus("Desconectado!")
      RETURN
   ENDPROC

   FUNCTION envia_msg AS logical
      THIS.escrevecursorstatus("Preparando email para envio...")

      *!* Prepara e envia os emails.
      LOCAL total_email_enviar AS INTEGER
      LOCAL mailto_all AS STRING

      m.total_email_enviar = 0
      m.mailto_all = ""

      *!* Separa os enderecos de destinatarios NAO ocultos.
      IF !EMPTY(THIS.destinatario) THEN

         THIS.destinatario = STRTRAN(ALLTRIM(THIS.destinatario),",",";")

         IF (RIGHT(THIS.destinatario,1) != ";") THEN
            THIS.destinatario = THIS.destinatario + ";"
         ENDIF

         m.mailto_tmp = THIS.destinatario

         DO WHILE !EMPTY(mailto_tmp)
            m.acha_ponto = AT(";",mailto_tmp)

            m.total_email_enviar = m.total_email_enviar + 1
            DIMENSION emails_to(m.total_email_enviar)

            m.emails_to(m.total_email_enviar) = "<" + SUBSTR(m.mailto_tmp, 1, m.acha_ponto - 1) + ">"
            m.mailto_tmp                      = SUBSTR(m.mailto_tmp, m.acha_ponto + 1)
            m.mailto_all                      = m.mailto_all + m.emails_to(m.total_email_enviar) + ", "
         ENDDO
      ENDIF

      *!* Separa os enderecos de destinatarios ocultos.
      IF !EMPTY(THIS.bcc) THEN
         THIS.bcc = STRTRAN(ALLTRIM(THIS.bcc),",",";")

         IF RIGHT(THIS.bcc,1) != ";"
            THIS.bcc = THIS.bcc + ";"
         ENDIF

         m.mailto_tmp = THIS.bcc

         DO WHILE !EMPTY(m.mailto_tmp)
            m.acha_ponto = AT(";",m.mailto_tmp)

            m.total_email_enviar = m.total_email_enviar + 1
            DIMENSION m.emails_to(total_email_enviar)

            m.emails_to(total_email_enviar) = "<" + SUBSTR(m.mailto_tmp, 1, m.acha_ponto - 1) + ">"
            m.mailto_tmp                     = SUBSTR(m.mailto_tmp, m.acha_ponto + 1)
         ENDDO

      ENDIF

      *!* Comeca a montar o Header do email.
      m.mailto_all = LEFT(m.mailto_all,LEN(m.mailto_all)-2)

      *!* Nao pode existir no email o CHR(13)+CHR(10) + "." + CHR(13)+CHR(10). Isto é um comando de finalizacao de transmicao.
      *!* Por tanto,substituimos por CHR(13)+CHR(10) + "." + CHR(0)+CHR(13)+CHR(10).

      m.message_temp = STRTRAN(THIS.texto,CHR(13) + CHR(10) + "." + CHR(13) + CHR(10),CHR(13) + CHR(10) + "." + CHR(0) + CHR(13) + CHR(10))

      m.temp_from = ["] + ALLTRIM(THIS.NOME) + [" <] + TRIM(THIS.end_email) + [>]

      m.header_mail = ""
      m.header_mail = m.header_mail + "Message-ID: <" + SUBSTR(SYS(2015),2) + "." + SYS(3) + "@" + THIS.email.OBJECT.localhostname + ">" + CHR(13) + CHR(10)
      m.header_mail = m.header_mail + "From: " + m.temp_from + CHR(13) + CHR(10)

      IF !EMPTY(m.mailto_all)
         *!* Aqui colocamos os enderecos dos destinatarios NAO ocultos.
         m.header_mail = m.header_mail + "To: " + m.mailto_all + CHR(13) + CHR(10)
      ENDIF

      IF EMPTY(THIS.assunto)
         m.header_mail = m.header_mail + "Subject: No Subject" + CHR(13) + CHR(10)
      ELSE
         m.header_mail = m.header_mail + "Subject: " + TRIM(THIS.assunto) + CHR(13) + CHR(10)
      ENDIF

      m.header_mail = header_mail + "Date: " + CDOW(DATE()) + ', ' + MDY(DATE()) + " " + TIME() + CHR(13) + CHR(10)
      m.header_mail = header_mail + "MIME-Version: 1.0" + CHR(13) + CHR(10)
      m.header_mail = header_mail + "Content-Transfer-Encoding: 7bit" + CHR(13) + CHR(10)
      m.header_mail = header_mail + "X-Priority: 3" + CHR(13) + CHR(10)
      m.header_mail = header_mail + "X-MSMail-Priority: Normal" + CHR(13) + CHR(10)
      m.header_mail = header_mail + "X-Mailer: VFP Mail V 1.0" + CHR(13) + CHR(10)

      *!* Juntamos o Header com o corpo da mensagem.
      m.texto_envio = m.header_mail + CHR(13) + CHR(10) + m.message_temp

      *!* Reseta o servidor SMTP para o inicio do envio de mensagem
      IF !THIS.enviar("RSET", "250") THEN
         THIS.escrevecursorstatus("Servidor não aceito o RSET...")
      ENDIF

      THIS.escrevecursorstatus("Enviando email...")

      *!* Envia quem esta mandando a mensagem.
      IF !THIS.enviar("MAIL FROM: <" + ALLTRIM(THIS.end_email) + ">", "250") THEN
         THIS.escrevecursorstatus("Seu endereço de email nao foi aceito!")
         RETURN .F.
      ENDIF

      m.emails_aceito        = 0
      m.total_emails_enviados = 0

      FOR m.email_atual = 1 TO m.total_email_enviar
         m.total_emails_enviados = m.total_emails_enviados + 1

         *!* Comeca a enviar cada endereco de destino.
         *!* O servidor podera recusar algum endereco, caso este estaja errado.
         *!* Para proseguir, pelo menos 1 endereco tem que ser aceito pelo servidor.

         IF !THIS.enviar("RCPT TO: " + m.emails_to(total_emails_enviados), "250") THEN
            THIS.escrevecursorstatus("Email " + m.emails_to(total_emails_enviados) + " não aceito!")
         ELSE
            m.emails_aceito = m.emails_aceito + 1
         ENDIF
      NEXT

      IF (m.emails_aceito = 0) THEN
         THIS.escrevecursorstatus("Nenhum endereço de email foi aceito!")
         RETURN .F.
      ELSE
         *!* Prepara o servidor para o recebimento do email.
         IF !THIS.enviar("DATA", "354") THEN
            THIS.escrevecursorstatus("Servidor não aceito o comando DATA")
            RETURN .F.
         ENDIF

         *!* Envia o corpo do email, junto com o heard em blocos de 8Kbytes
         FOR m.laco_texto_envio = 1 TO LEN(m.texto_envio) STEP 8192
            THIS.enviar(SUBSTR(m.texto_envio, m.laco_texto_envio, 8192), "-1")
         NEXT

         *!* Envia o finalizador da mensagem.
         IF !THIS.enviar(CHR(13) + CHR(10) + ".", "250") THEN
            THIS.escrevecursorstatus("Erro no enviou do email!")
            RETURN .F.
         ENDIF
      ENDIF

      THIS.escrevecursorstatus("Email enviado com sucesso!")
      RETURN .T.
   ENDFUNC

   HIDDEN PROCEDURE mostra_retorno AS void
   ENDPROC

   HIDDEN PROCEDURE enviar AS void
      LPARAMETERS dados AS STRING, retorno AS STRING

      *!* Envia os dados para o computador remoto. E, se necessario aguarda resposta.
      IF (VARTYPE(m.retorno) != "C") THEN
         m.retorno = ""
      ENDIF

      *!* Limpa os ultimos dados recebidos.
      THIS.DATA = ""

      *!*CLEAR TYPEAHEAD
      *!* Verifica o status da conexao
      IF (THIS.email.state != 7) THEN
         THIS.escrevecursorstatus("Erro ao enviar dados!")
         RETURN .F.
      ENDIF

      *!* Reseta a propriedade de controle de envio de dados
      THIS.enviou = .F.

      *!* Se for = "-1", nao é pra mostrar os dados enviados, nem acrescentar chr(13) + chr(10)
      *!* É usando qdo for enviado o email.
      IF (m.retorno != "-1") THEN
         *!* Senao for, é pq é comando para ser enviado.
         THIS.escrevecursorstatus(" ---> " + m.dados)
         m.dados = m.dados + CHR(13) + CHR(10)
      ENDIF

      *!* Envia os dados
      THIS.email.senddata(m.dados)

      m.t1 = SECONDS()

      *!* Aguarda o envio dos dados, "time out", o usuario pressinar "ESC" ou a conexao cair.
      DO WHILE !THIS.enviou

         IF ( (INKEY(0.1) = 27) OR (SECONDS() - t1 > THIS.time_out OR THIS.email.state!= 7) ) THEN
            THIS.escrevecursorstatus("Não foi possível enviar os dados!")
            RETURN .F.
         ENDIF

      ENDDO

      *!* Se tiver que aguardar retorno, executa o metodo para aguardar.
      IF ( !EMPTY(m.retorno) AND (m.retorno != "-1") AND !THIS.WAIT(m.retorno) ) THEN
         RETURN .F.
      ENDIF

      RETURN .T.
   ENDPROC

ENDDEFINE

Acontece que não está funcionando, e preciso encontrar o motivo.
Se quizer ajudar, fico grato!

Tendo concluído esta classe, as vantagens em se trabalhar com o winsock, são muitas! Pois não haverá necessidade de configuração do Outlook.

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: Enviando emails em formato HTML

Mensagem por pablo_frosi em 8/7/2009, 16:08

Testei a função também, a que o seu amigo lhe enviou, e também me retornou erro, segundo o campo "retorno" o erro foi na senha, porém o e-mail foi enviado e eu recebi. Creio que o erro, na verdade, se dá ao tentar acessar o POP3, acho que a função não está preparada parra carregar o recebimento de e-mails.
Em casa darei uma olhada, tentarei implementar a classe conforme as informações que estão no form.

Abraço

pablo_frosi
Começando a Participar
Começando a Participar


Voltar ao Topo Ir em baixo

Resolvido Re: Enviando emails em formato HTML

Mensagem por Marcos Guedes em 12/7/2009, 14:43

Pablo, você obteve sucesso ao passar os dados do Form para um PRG?

Se possível, testa se a minha rotina funciona contigo:
[Você precisa estar registrado e conectado para ver este link.]

Para o que precisamos fazer, precisaremos apenas que funcione o envio via SMTP.
O POP3 não é importante no momento.

Aguardo respostas!

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: Enviando emails em formato HTML

Mensagem por pablo_frosi em 12/7/2009, 19:03

Realmente coma funç~çao eu não consigo, ele não acusa erro nenhum, porém não envia.
E as informações são as mesmas que coloquei no form.

Mas voltando ao assunto principal do tópico...
Parece que tem um jeito de tratar Propriedades de Fonte através de uma OLE dentro do VFP.

Terei que dar uma pesquisada melhor sobre isso...
Mas to indo atrás, relaxa. Assim que eu tiver uma solução certinha eu posto aqui.

pablo_frosi
Começando a Participar
Começando a Participar


Voltar ao Topo Ir em baixo

Resolvido Re: Enviando emails em formato HTML

Mensagem por pablo_frosi em 13/7/2009, 17:30

Seguinte...
Rodando o código a seguir, encontramos diversas informações de classes do FOX...
Código:
DO (HOME(2) + "Solution\solution.app")
[Você precisa estar registrado e conectado para ver esta imagem.]
Abrirá a seguinte janela, então selecionando conforme a imagem teremos algo assim:
[Você precisa estar registrado e conectado para ver esta imagem.]

Podemos inclusive ver os códigos-fonte da aplicação, procurarei criar uma classe onde ele faça praticamente todo o processo com um texto de parâmetro...
Dai assim que etiver pronto eu posto, só não prometo nada logo pq estou um tanto corrido ultimamente!

Abraço

pablo_frosi
Começando a Participar
Começando a Participar


Voltar ao Topo Ir em baixo

Resolvido Re: Enviando emails em formato HTML

Mensagem por Marcos Guedes em 15/7/2009, 17:23

Pablo conseguir chegar a uma solução usando Programação Orientada a Gambiarras.
Very Happy

Até onde testei funcionou legal, então para facilitar eu armazenei numa DLL:
[Você precisa estar registrado e conectado para ver este link.]

Exemplo de uso:
Código:
LOCAL obj AS OBJECT
LOCAL enviado AS logical

m.obj = NEWOBJECT("email", SYS(5)+CURDIR()+"email.dll")

m.obj.setservidorsmtp("smtp.dominio.com.br") && Servidor SMTP
m.obj.setportasmtp(25) && Porta SMTP
m.obj.setusuario("email@dominio.com.br") && Usuário credenciado
m.obj.setsenha("senha") && Senha do usuário

m.obj.setnomeremetente("Programação Brasil") && Nome do remetente (Este ficará em exibição)
m.obj.setemailremetente("programacaobrasil.forum@gmail.com") && Email do remetente

m.obj.setemaildestinatario("email@destinatario.com.br") && Email do destinatário
m.obj.setemailcopiaoculta("email@oculto.com") && Email oculto

m.obj.setassunto("Assunto da mensagem") && Assunto do email
*!* Mensagem do email.
m.obj.setmensagem("<font color='red'><b><i><u>Texto negrito, itálico, sublinhado e em vermelho</u></i></b></font>")
*!* Define se a mensagem será, ou não, em formato HTML
m.obj.setishtml(.T.)

m.obj.enviaremail() && Envia o email
m.enviado = m.obj.getenviado() && Retorna se foi enviado

IF (m.enviado) THEN
   MESSAGEBOX("Email enviado com sucesso!")
ELSE
   MESSAGEBOX("Email não enviado!")
ENDIF

LOCAL cursorretorno AS STRING
LOCAL cursormensagem AS STRING

m.cursorretorno = m.obj.getnomecursormensagens() && Retorna o nome do cursor de retornos do email
m.cursormensagem = m.obj.getnomecursorretornos() && Retorna o nome do cursor de estatus da mensagem

*!* Exibe o cursor de retorno
SELECT(m.cursorretorno)
GO TOP
BROWSE

*!* Exibe o cursor de mensagens
SELECT(m.cursormensagem)
GO TOP
BROWSE

m.obj = NULL

*!* Fecha os cursores
USE IN SELECT(m.cursorretorno)
USE IN SELECT(m.cursormensagem)

Faz um teste e me diz se funcionou contigo também.
Segue o link do projeto:
[Você precisa estar registrado e conectado para ver este link.]

Obs: Eu estava tendo problemas ao passar do formulário para um arquivo PRG, então teve que ser desse jeito.

Se fizeres algum ajuste, favor comunicar.

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: Enviando emails em formato HTML

Mensagem por pablo_frosi em 17/7/2009, 14:01

Olhaa!!! Funcionou certinho cara!!!
hahaha

Bacana, bacana.
Ah, alterei o prg principal, botei os dados do e-mail, ok?!
hahaha

Abraço

pablo_frosi
Começando a Participar
Começando a Participar


Voltar ao Topo Ir em baixo

Resolvido Re: Enviando emails em formato HTML

Mensagem por Marcos Guedes em 17/7/2009, 14:11

Sem problemas!
rs...
Como foi disponibilizado o código do projeto e também a DLL, talvez seja mais interessante utilizar a DLL, pois poderá ser utilizada para qualquer outra aplicação.
Só um detalhe: Não cheguei a passar o refox nela.
hehe

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: Enviando emails em formato HTML

Mensagem por cfreitasc em 5/8/2009, 18:15

Gostaria de saber se essa DLL permite enviar arquivos anexados e, se possível, como especificar essa propriedade.
Obrigado.

cfreitasc
Participa Pouco
Participa Pouco


Voltar ao Topo Ir em baixo

Resolvido Re: Enviando emails em formato HTML

Mensagem por Marcos Guedes em 5/8/2009, 20:24

Olá cfreitasc!
Tentando adaptar a rotina para incluir anexos, acabei sendo levado a este link:
[Você precisa estar registrado e conectado para ver este link.]

Dê uma olhada pois tem vários exemplos para envio de emails, incluindo anexos.
Já testei e funciona perfeitamente!
Very Happy

_________________
Marcos Guedes - Programador e desenvolvedor Web.


Visite o nosso portal:
[Você precisa estar registrado e conectado para ver este link.]

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: Enviando emails em formato HTML

Mensagem por cfreitasc em 6/8/2009, 09:43

Obrigado pela resposta mas estou tendo a seguinte mensagem de erro:

A minha rotina é a seguinte:
loMsg = CREATEOBJECT("VFP_Winsock_Send_Mail")
WITH loMsg
.SMTP_HOST = "mail.servidor1.com.br"
.Auth_Login = "gerente@servidor1.com.br"
.Auth_password = "123456"
.FROM = "gerente@servidor1.com.br"
.FROM_NAME = "Gerente"
.TO = "fulano@servidor2.com.br"
.Subject = "Email de teste"
.Message = "teste"
.attachment = "c:\temp\arquivo.xls"
ENDWITH

Obs.: os dados dos servidores são fictícios.
Será que vc pode me ajudar ?
Obrigado.

cfreitasc
Participa Pouco
Participa Pouco


Voltar ao Topo Ir em baixo

Resolvido Re: Enviando emails em formato HTML

Mensagem por cfreitasc em 6/8/2009, 09:44

Esqueci a mensagem de erro: É a seguinte:

ERR04: Impossible de se connecter au serveur de mail. 0.

cfreitasc
Participa Pouco
Participa Pouco


Voltar ao Topo Ir em baixo

Resolvido Re: Enviando emails em formato HTML

Mensagem por Conteúdo patrocinado Hoje à(s) 18:53


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Página 1 de 2 1, 2  Seguinte

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo


 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum