Fórum Enviar Email pelo Delphi usando o Outlook #380487

01/07/2010

0

boa Tarde Pessoal
estou com um problema e gostaria que voces me ajudassem

estou tentando enviar um email pelo delphi usando o outllook,

consegui abrir o outlook e preecher os campos PARA, ASSUNTO e MENSAGEM
só que tem um detalhe..

na MENSAGEM nao consigo quebrar linha, portanto o Outlook quando abre, aparece a mensagem corrente.

Eu preciso que seja assim:
PARA: teste@teste.com.br
ASSUNTO: Teste Envio
MENSAGEM: teste 1
                    teste 2
                    e assim por diante.

só que sai assim
MENSAGEM: teste1teste2e assim por diante

já tentei usar #13 e/ou #10 e nada funcionou

aki esta o codigo que estou usando

procedure TfrmPRINCIPAL.SpeedButton1Click(Sender: TObject);
var mensagem: String;
var m1:string;                        
begin
m1:=' TESTE MENSAGEM   '+#13#10+''
+'teste 1'+#13+''
+'teste 2 ';      

    completo:= 'mailto:teste@teste.com.br'+
    '?subject=teste assunto '+
    '&body= '+m1+'   ';


    ShellExecute(GetDesktopWindow,'open',pchar(mensagem),nil,nil,sw_ShowNormal);


Obrigado



Rodrigo

Rodrigo

Responder

Posts

01/07/2010

Fábio Cruz

tentou utilizar a TAG html para quebra de linha?  <br />
Responder

Gostei + 0

01/07/2010

Euclides Cunha

Posso te ajudar, mas utilizando os componetes socket ou mesmo Indy, pra enviar e-mail.. e anexos tbm.. se te ajuda posso postar isso.. aqui.. mas só amanhã ou depois.. flw
Responder

Gostei + 0

01/07/2010

Marco Salles

Bem ,depende do Sistema Operacional o #13#10 não irá funcionar Use a Constante sLineBreak Definida na Uses System; Veja a definiççao desta Constante  
const
   sLineBreak = {$IFDEF LINUX} AnsiChar(#10) {$ENDIF}
      {$IFDEF MSWINDOWS} AnsiString(#13#10) {$ENDIF}
      {$IFDEF MACOSX} AnsiChar(#10) {$ENDIF};
  Esta Constante independe do Sistema Operacional ) Pois esta protegida pelas directivas de Compilação
Responder

Gostei + 0

01/07/2010

Marco Salles

Bem ,depende do Sistema Operacional o #13#10 não irá funcionar Use a Constante sLineBreak Definida na Uses System; Veja a definiççao desta Constante  
const
   sLineBreak = {$IFDEF LINUX} AnsiChar(#10) {$ENDIF}
      {$IFDEF MSWINDOWS} AnsiString(#13#10) {$ENDIF}
      {$IFDEF MACOSX} AnsiChar(#10) {$ENDIF};
  Esta Constante independe do Sistema Operacional ) Pois esta protegida pelas directivas de Compilação
Responder

Gostei + 0

02/07/2010

Rodrigo

Rafael se possivel, poste o codigo por favor pra ver se consigo fazer

Muito Obrigado
Responder

Gostei + 0

02/07/2010

Rodrigo

Euclides, por favor se possivel poste o codigo

Obrigado
Responder

Gostei + 0

02/07/2010

Rodrigo

Marco, eu nao entendi muito bem estes codigo, sou iniciante
agradecei se voce pudess postar os codigos certinho ou entao me mandar no email rodrigoantonioli@hotmail.com

Muito Grato
Responder

Gostei + 0

02/07/2010

Marco Salles

Bem ,depende do Sistema Operacional o #13#10 não irá funcionar Use a Constante sLineBreak Definida na Uses System; Veja a definiççao desta Constante  
const
   sLineBreak = {$IFDEF LINUX} AnsiChar(#10) {$ENDIF}
      {$IFDEF MSWINDOWS} AnsiString(#13#10) {$ENDIF}
      {$IFDEF MACOSX} AnsiChar(#10) {$ENDIF};
  Esta Constante independe do Sistema Operacional ) Pois esta protegida pelas directivas de Compilação
Eu não estou lhe passando codigo. Eu estou lhe passando um Dica Pelo que se percebe vc ja consegui enviar emails So que sua mensagem não sai com quebra de linha Vc disse tb que ja tentou quebrar a Linha com #13 e com #10 e nada Adiantou   Ai que entra a dica . O Correto para quebra a Linha é usar sLineBreak ( Pq independe do Sistema Operacional) Se vc tiver no Linux o SlineBreak correposnde ao #10 , se tiver no MSWINDOWS a quebra de Linha é 13#10
se tiver no  MACOSX será 10 .. E futuramente Outros Sistemas   Para Quebrar Linha  
Recomendável
Showmessage('Quebrar'+sLineBreak+'Linha');
Mais Usual

Showmessage('Quebrar'+#13#10+'Linha');
     
Responder

Gostei + 0

02/07/2010

Euclides Cunha

Essa é uma rotina que funciona num programa q fiz .. apenas de envio de e-mail.. Para funcionar, primeiramente me conecto ao servidor pop3 e posteriormente ao SMTP , envio o e-mail e por fim desconecto dos dois... simples .. claro no caso so Yahoo.. tem q ativar na sua conta de e-mail a opção de trabalhar com os servidores POP e SMTP do Yahoo.. opções de E-mail...
Mas pelo o que entendi do seu problema é que esta concatenando todas suas string, transformando-as em uma só.., ai da problema mesmo.. no corpo do e-mail.. pode concatenar e utilizar a função "quebra de linha".. mas o assunto é um paramentro a parte.. poste toda sua rotina para dar uma olhada...
    IdPOP3.Host := 'pop.mail.yahoo.com.br';   IdPOP3.Password := 'suasenha';   IdPOP3.UserId := 'usuario';   IdPOP3.Port   := 110;   IdPOP3.Connect;     // Mensagem   IdMessage1.Subject := 'assunto';   IdMessage1.Body.Text := 'Corpo do e-mail';     // Remetente   IdMessage1.From.Address := 'usuario@yahoo.com.br';   IdMessage1.From.Name := SysComputerName(); //captura o nome da máquina   //IdMsgSend.ReplyTo.EMailAddresses := 'from@ficticio.com.br'; //não precisa    // Anexo   IdMessage1.MessageParts.Clear;   TIdAttachment.create(idmessage1.MessageParts, TFileName('nomearquivo.ext'));      // Destinatario   IdMessage1.Recipients.EMailAddresses := 'usuario@yahoo.com.br';   // Autenticacao - Use apenas quando o servidor exigir   IdSMTP.AuthenticationType := atLogin;   IdSMTP.UserId := 'usuario';   IdSMTP.Password := 'senha';     // Dados do Servidor   IdSMTP.Host := 'smtp.mail.yahoo.com.br';   IdSMTP.Port := 25;     IdSMTP.Connect;     try     IdSMTP.Send(IdMessage1);     //ShowMessage('Enviado com Sucesso');   finally     IdSMTP.Disconnect;     end;     IdPOP3.Disconnect;
Responder

Gostei + 0

02/07/2010

Rodrigo

boa tarde Euclides..

pois aki esta a codificação

procedure TfrmPRINCIPAL.SpeedButton1Click(Sender: TObject);
var completo: String;
var m1:string;                       
begin
      m1:=' ABERTURA DE CHAMADO TECNICO   '+#13#10+''
      +'teste 1'+#13+''
      +'teste 2 ';      

    completo:= 'mailto:dwi@com4.com.br'+
    '?subject=Abertura de Chamado Técnico '+
    '&body= '+m1+'   ';


    ShellExecute(GetDesktopWindow,'open',pchar(completo),nil,nil,sw_ShowNormal);
end;

e o que aparece é assim:





Agradeço desde já.




Responder

Gostei + 0

02/07/2010

Marco Salles

Ha agora deu para entender o que vc quer   Mas desde jeito que vc esta fazendo existem duas limitações Não é permitido o envio de anexos com esta solução    As quebras de linha não são respeitadas.   Então acho que vc deve tentar uma das Tantas outras soluçoes disponiveis
Responder

Gostei + 0

03/07/2010

Rodrigo

muito obrigado,
consegui fazer do jeito do Euclides
valeu mesmo!

abraço!
Responder

Gostei + 0

03/07/2010

Marco Salles

Beleza , coloque concuido
Responder

Gostei + 0

22/12/2011

Rafael

muito obrigado,
consegui fazer do jeito do Euclides
valeu mesmo!

abraço!



Sei que já conseguiu mas para outros que chegarem a esse post informo que é possível quebrar linha colocando o caractere %0A após a sua string. Não esqueça de concatenar-> QueryConsultaNOME.Text+%0A
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar