Fórum Anexar imagem num campo MEMO (E-mail) #345828
12/09/2007
0
-----------------------------------------------------------------------------------
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
Curtir tópico
+ 0Posts
12/09/2007
Lucas_spohr
Memo1.Lines.Add(´<br><IMG SRC=´´+OpenPictureDialog1.FileName + ´´>´);
Gostei + 0
12/09/2007
Massuda
Gostei + 0
12/09/2007
Lucas_spohr
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...
Gostei + 0
12/09/2007
Massuda
Gostei + 0
12/09/2007
Lucas_spohr
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.
Gostei + 0
12/09/2007
Martins
// 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?
Gostei + 0
12/09/2007
Lucas_spohr
-----------------------------------------------------------------------
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...
Gostei + 0
12/09/2007
Martins
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?
Gostei + 0
12/09/2007
Lucas_spohr
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...
Gostei + 0
12/09/2007
Martins
No envio?
Gostei + 0
12/09/2007
Lucas_spohr
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...
Gostei + 0
12/09/2007
Lucas_spohr
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...
Gostei + 0
13/09/2007
Martins
Como está seu código para adição da assinatura no e-mail?
Gostei + 0
13/09/2007
Lucas_spohr
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;
Gostei + 0
13/09/2007
Lucas_spohr
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]
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)