GARANTIR DESCONTO

Fórum Anexar imagem num campo MEMO (E-mail) #345828

12/09/2007

0

Olá! em minha aplicação, tenho um formulário de envio de e-mail... Nesse formulário, tenho um button, onde eu irei anexar a imagem, que deverá ficar no topo, no corpo do email... Tenho este código:


-----------------------------------------------------------------------------------
procedure TForm1.Button2Click(Sender: TObject);
begin
if OpenPictureDialog1.Execute = true then
begin
if OpenPictureDialog1.FileName <> ´´ then
begin
Memo1.Lines.Add(´
´);
end
end;

end;
-----------------------------------------------------------------------------------


Anexo a imagem Jpeg, e quando envio, a imagem não aparece na visualização do e-mail... Como que eu poderia fazer isto? Se eu deixo este código como está abaixo, aí dá certo, mas quero colocar num button, pra buscar a imagem...


// Anexa a imagem ao corpo do email
newText := TIdText.Create(IdMessage.MessageParts);
newText.ContentType := ´text/plain´;
newAttach.ContentDisposition := ´inline´;
newAttach := TIdAttachment.Create(IdMessage.MessageParts,´imagem1.jpg´);
newAttach.ExtraHeaders.Values[´Content-ID´] := ´imagem1.jpg´;

Desde já, agradeço!


Lucas_spohr

Lucas_spohr

Responder

Posts

12/09/2007

Lucas_spohr

Desculpem, ali em cima é:

Memo1.Lines.Add(´<br><IMG SRC=´´+OpenPictureDialog1.FileName + ´´>´);


Responder

Gostei + 0

12/09/2007

Massuda

Dê uma olhada :arrow: [url=http://forum.devmedia.com.br/viewtopic.php?t=81650]neste tópico[/url], talvez ajude.


Responder

Gostei + 0

12/09/2007

Lucas_spohr

opa! obrigado...

mas neste exemplo, a imagem está no código mesmo...

Eu gostaria de anexar, manualmente mesmo, clicando no button, escolhendo a imagem e anexando no topo do campo da mensagem...

de qualquer forma, obrigado...


Responder

Gostei + 0

12/09/2007

Massuda

Ao invés de usar o nome da imagem hard coded, use o nome da imagem que a pessoa selecionar.


Responder

Gostei + 0

12/09/2007

Lucas_spohr

desculpa, não entendi...

Pois bem, este é o meu código do button, que fará a busca da imagem Jpeg, bmp, o que for...

--------------------------------------------------------------------------------
if OpenPictureDialog1.Execute = true then
begin
if OpenPictureDialog1.FileName <> ´´ then
begin
Memo1.Lines.Add(´<br><IMG SRC=´´+OpenPictureDialog1.FileName + ´´>´);
end
end;
--------------------------------------------------------------------------------

anexo ela, envio meu e-mail, só que, ao visualizar no hotmail ou no outlook, ela não aparece!! é assim que o cliente precisa: clicar no botão, escolher a imagem e ela, ficará no topo... o código acima, não funciona... mas este código abaixo, funciona...

// Anexa a imagem ao corpo do email
newText := TIdText.Create(IdMessage.MessageParts);
newText.ContentType := ´text/plain´;
newAttach.ContentDisposition := ´inline´;
newAttach := TIdAttachment.Create(IdMessage.MessageParts,´imagem1.jpg´);
newAttach.ExtraHeaders.Values[´Content-ID´] := ´imagem1.jpg´;


Como que eu poderia implementar o button para buscar a imagem?

Obrigado.


Responder

Gostei + 0

12/09/2007

Martins

desculpa, não entendi... Pois bem, este é o meu código do button, que fará a busca da imagem Jpeg, bmp, o que for... -------------------------------------------------------------------------------- if OpenPictureDialog1.Execute = true then begin if OpenPictureDialog1.FileName <> ´´ then begin Memo1.Lines.Add(´ ´); end end; -------------------------------------------------------------------------------- anexo ela, envio meu e-mail, só que, ao visualizar no hotmail ou no outlook, ela não aparece!! é assim que o cliente precisa: clicar no botão, escolher a imagem e ela, ficará no topo... o código acima, não funciona... mas este código abaixo, funciona... // Anexa a imagem ao corpo do email newText := TIdText.Create(IdMessage.MessageParts); newText.ContentType := ´text/plain´; newAttach.ContentDisposition := ´inline´; newAttach := TIdAttachment.Create(IdMessage.MessageParts,´imagem1.jpg´); newAttach.ExtraHeaders.Values[´Content-ID´] := ´imagem1.jpg´; Como que eu poderia implementar o button para buscar a imagem? Obrigado.


  // Anexa a imagem ao corpo do email
  newText := TIdText.Create(IdMessage.MessageParts);
  newText.ContentType := ´text/plain´;
  newAttach.ContentDisposition := ´inline´;
  newAttach := TIdAttachment.Create(IdMessage.MessageParts, ExtractFileName(OpenPictureDialog1.FileName);
  newAttach.ExtraHeaders.Values[´Content-ID´] := ExtractFileName(OpenPictureDialog1.FileName);


Assim não funciona também?


Responder

Gostei + 0

12/09/2007

Lucas_spohr

não funcionou...

-----------------------------------------------------------------------
procedure TForm1.Button2Click(Sender: TObject);
begin
// Anexa a imagem ao corpo do email
newText := TIdText.Create(IdMessage.MessageParts);
newText.ContentType := ´text/plain´;
newAttach.ContentDisposition := ´inline´;
newAttach := TIdAttachment.Create(IdMessage.MessageParts, ExtractFileName(OpenPictureDialog1.FileName));
newAttach.ExtraHeaders.Values[´Content-ID´] := ExtractFileName(OpenPictureDialog1.FileName);
end;
-----------------------------------------------------------------------

No seu código, tinha faltado um ´)´, mas corrigi...

mas agora, quando clico no button para anexar, dá essa msg:

´Project Project1.exe raised exception class EAccessViolation with message ´Access violation at address 08071.... in module......´

ñ tá fácil isso!! heheh

Obrigado...


Responder

Gostei + 0

12/09/2007

Martins

Verdade faltou fechar com ). Estou sem Delphi, apenas olhando o seu código e na hora de copiar e colar houve essa pequena falha, rsrs

Esse código q vc diz q funciona.
// Anexa a imagem ao corpo do email 
newText := TIdText.Create(IdMessage.MessageParts); 
newText.ContentType := ´text/plain´; 
newAttach.ContentDisposition := ´inline´; 
newAttach := TIdAttachment.Create(IdMessage.MessageParts,´imagem1.jpg´); 
newAttach.ExtraHeaders.Values[´Content-ID´] := ´imagem1.jpg´; 


Ele está em um Button?

vc não poderia criar uma variável q armazene essa imagem?


Responder

Gostei + 0

12/09/2007

Lucas_spohr

opa...

Resumindo, está como se fosse assim:

procedure TForm1.btnEnviarEmailClick(Sender: TObject);
begin
// Anexa a imagem ao corpo do email
newText := TIdText.Create(IdMessage.MessageParts);
newText.ContentType := ´text/plain´;
newAttach.ContentDisposition := ´inline´;
newAttach := TIdAttachment.Create(IdMessage.MessageParts, ExtractFileName(OpenPictureDialog1.FileName));
newAttach.ExtraHeaders.Values[´Content-ID´] := ExtractFileName(OpenPictureDialog1.FileName);
end;
end;

é claro, no código acima, está faltando o SMTP.Connect/Disconnect, etc, etc... hehe

já no button IMAGEM, o código está assim:

procedure TForm1.Button2Click(Sender: TObject);
begin
if OpenPictureDialog1.Execute = true then
begin
if OpenPictureDialog1.FileName <> ´´ then
begin
Memo1.Lines.Add(´<br><IMG SRC=´´+OpenPictureDialog1.FileName + ´´>´);
end;
end;
end;


Pelo que eu estou interpretando pelo q vc me passou, é o seguinte:

Clico no button IMAGEM, o Opendialog irá executar e escolherei minha imagem... daí quando clico no button ENVIAR, irá anexar no MEMO a imagem que escolhi do OpenDialog, e pronto...

é mais ou menos por aí?

Obrigado...


Responder

Gostei + 0

12/09/2007

Martins

Em qual momento dá o erro?

No envio?


Responder

Gostei + 0

12/09/2007

Lucas_spohr

é na hora de enviar o e-mail...

eu anexo a imagem e o caminho da imagem, até aparece no MEMO... mas depois quando vou enviar o e-mail, aí da o erro...


Responder

Gostei + 0

12/09/2007

Lucas_spohr

aeee, agora deu!!

tooda minha aplicação ficou assim:
[i:236f6ec870]


procedure TForm1.EnviarClick(Sender: TObject);
begin
// Endereço e ID das Imagens
imgName1 := ExtractFileName(OpenPictureDialog1.FileName);
assinatura := ExtractFileName(OpenDialog1.FileName);

// Mensagem
IdMessage.Subject := edtAssunto.Text;

// Adiciona uma parte texto ao corpo
newText := TIdText.Create(IdMessage.MessageParts,nil);
newText.ContentType := ´text/plain´;

// Anexa a primeira imagem
newAttach := TIdAttachment.Create(IdMessage.MessageParts,imgName1);
newAttach.ContentType := ´image/jpeg´;
newAttach.ContentDisposition := ´inline´;
newAttach.ExtraHeaders.Values[´Content-ID´] := ´<´+imgId1+´>´;

// Anexa a assinatura
//newAttach := TIdAttachment.Create(IdMessage.MessageParts,assinatura);
//newAttach.ContentType := ´text/plain´;
//newAttach.ContentDisposition := ´inline´;
//newAttach.ExtraHeaders.Values[´Content-ID´] := ´<´+assinatura+´>´;
//EmailContent.BodyText := ....
newText := TIdText.Create(IdMessage.MessageParts);
newText.Body.Text := Memo1.Text;
newText.ContentType := ´text/plain´;

// Remetente
idMessage.From.Address := edtEmailRem.Text;
idMessage.From.Name := edtNomeRem.Text;

// Destinatario
idMessage.Recipients.EMailAddresses := edtEmailDes.Text;

// Autenticacao - Use apenas quando o servidor exigir
idSMTP.AuthenticationType := atLogin;
idSMTP.Username := edtUsuario.Text;
idSMTP.Password := edtSenha.Text;

// Dados do Servidor
idSMTP.Host := edtHostSMTP.Text;
idSMTP.Port := 25;
idSMTP.Connect;
try
idSMTP.Send(IdMessage);
FreeAndNil(newText);
FreeAndNil(newAttach);
finally
idSMTP.Disconnect;
end;
end;


procedure TForm1.ImagemClick(Sender: TObject);
begin
if OpenPictureDialog1.Execute = true then
begin
if OpenPictureDialog1.FileName <> ´´ then
begin
Memo1.Lines.Add(´<br><IMG SRC=´´+OpenPictureDialog1.FileName + ´´>´);
end;
end;

end;

procedure TForm1.AssinaturaClick(Sender: TObject);
begin
if OpenDialog1.Execute = true then
begin
if OpenDialog1.FileName <> ´´ then
begin
Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
end;
end;

end;

end.[/i:236f6ec870]

Agora, falta a assinatura!! clico no button pra colocar a assinatura, no memo ela aparece, porém, na hora de enviar por e-mail, na visualização, ela não aparece... como faze??

obrigado...


Responder

Gostei + 0

13/09/2007

Martins

aeee, agora deu!! tooda minha aplicação ficou assim: [i:56673de654] procedure TForm1.EnviarClick(Sender: TObject); begin // Endereço e ID das Imagens imgName1 := ExtractFileName(OpenPictureDialog1.FileName); assinatura := ExtractFileName(OpenDialog1.FileName); // Mensagem IdMessage.Subject := edtAssunto.Text; // Adiciona uma parte texto ao corpo newText := TIdText.Create(IdMessage.MessageParts,nil); newText.ContentType := ´text/plain´; // Anexa a primeira imagem newAttach := TIdAttachment.Create(IdMessage.MessageParts,imgName1); newAttach.ContentType := ´image/jpeg´; newAttach.ContentDisposition := ´inline´; newAttach.ExtraHeaders.Values[´Content-ID´] := ´<´+imgId1+´>´; // Anexa a assinatura //newAttach := TIdAttachment.Create(IdMessage.MessageParts,assinatura); //newAttach.ContentType := ´text/plain´; //newAttach.ContentDisposition := ´inline´; //newAttach.ExtraHeaders.Values[´Content-ID´] := ´<´+assinatura+´>´; //EmailContent.BodyText := .... newText := TIdText.Create(IdMessage.MessageParts); newText.Body.Text := Memo1.Text; newText.ContentType := ´text/plain´; // Remetente idMessage.From.Address := edtEmailRem.Text; idMessage.From.Name := edtNomeRem.Text; // Destinatario idMessage.Recipients.EMailAddresses := edtEmailDes.Text; // Autenticacao - Use apenas quando o servidor exigir idSMTP.AuthenticationType := atLogin; idSMTP.Username := edtUsuario.Text; idSMTP.Password := edtSenha.Text; // Dados do Servidor idSMTP.Host := edtHostSMTP.Text; idSMTP.Port := 25; idSMTP.Connect; try idSMTP.Send(IdMessage); FreeAndNil(newText); FreeAndNil(newAttach); finally idSMTP.Disconnect; end; end; procedure TForm1.ImagemClick(Sender: TObject); begin if OpenPictureDialog1.Execute = true then begin if OpenPictureDialog1.FileName <> ´´ then begin Memo1.Lines.Add(´ ´); end; end; end; procedure TForm1.AssinaturaClick(Sender: TObject); begin if OpenDialog1.Execute = true then begin if OpenDialog1.FileName <> ´´ then begin Memo1.Lines.LoadFromFile(OpenDialog1.FileName); end; end; end; end.[/i:56673de654] Agora, falta a assinatura!! clico no button pra colocar a assinatura, no memo ela aparece, porém, na hora de enviar por e-mail, na visualização, ela não aparece... como faze?? obrigado...


Como está seu código para adição da assinatura no e-mail?


Responder

Gostei + 0

13/09/2007

Lucas_spohr

o código está assim:

procedure TForm1.Button3Click(Sender: TObject);
begin
if OpenDialog1.Execute = true then
begin
if OpenDialog1.FileName <> ´´ then
begin
Memo1.Lines.LoadFromFile(´<br><body=´´+ OpenDialog1.FileName + ´´>´);
end;
end;
end;


Responder

Gostei + 0

13/09/2007

Lucas_spohr

aeee!! no memo, apareceu como html!! o q tinha de errado, é o seguinte:

procedure TForm1.Button3Click(Sender: TObject);
begin
if OpenDialog1.Execute = true then
begin
if OpenDialog1.FileName <> ´´ then
begin
[i:b18a163ade] //Nesta linha de baixo, estava Memo1.Lines.LoadFromFile, hehe[/i:b18a163ade]
Memo1.Lines.Add(´<br><strong=´´+ OpenDialog1.FileName +´´>´);
end;
end;
end;

Mas ainda está dando erro, na hora de enviar o e-mail... :oops: :cry:

o erro é nesta parte:


btnEnviar:
[i:b18a163ade]// Dados do Servidor
idSMTP.Host := edtHostSMTP.Text;
idSMTP.Port := 25;
idSMTP.Connect;
try
idSMTP.Send(IdMessage);
FreeAndNil(newText);
FreeAndNil(newAttach);
ShowMessage(´E-mail enviado com sucesso!´);
finally
idSMTP.Disconnect;
Form1.Close;
end;[/i:b18a163ade]

Project Project1.exe raised exception class EFOpenError with message ´Cannot open file ´´. O sistema não pode encontrar o caminho especificado....´

alguém faz idéia??

e ainda não sei se é exatamente assim esta parte, para colocar o arquivo do OpenDialog, se é strong, etc, etc:
(´<br><strong=´´+ OpenDialog1.FileName +´´>´);


tá difícil!!

Obrigado pessoal... Mas ainda falta coisas!! hehe[/i]


Responder

Gostei + 0

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

Aceitar