Envio de e-mail com Delphi 7 com assinatura e anexos

Delphi

01/02/2018

Boa tarde,
Estaou há algum tempo juntando códigos mas esta dificil....
Preciso enviar uma mail direto de meu prog. desenvolvido em D7, em minha tela existem os campos padrões (Para, CC, CO e assunto) um Memo para o texto, um list box e OpenDialog para adicionar anexos e uma assinatura préviamente feita (em .jpg) para ser colocada no fim do e-mail escrito sem ser em anexo.
Abaixo segue meu código, gostaria de adicionar a assinatura sem precisar que a jpg/html desta fique na internet, podendo estar estar no computador local ou em uma estação de trabalho na rede da empresa.
procedure TfrmMail.btnEnviarClick(Sender: TObject);
var IdSMTP : TIdSMTP;
IdMessage : TIdMessage;
xAnexo : Integer;
NomeArq : string;
CaminhoAssinatura : string;
Anexo : TIdAttachment;
arq: TextFile; { declarando a variável "arq" do tipo arquivo texto }
begin
try
begin
IdSMTP := TIdSMTP.Create (Nil);
IdMessage := TIdMessage.Create (Nil);

{ Configura a autenticacao de usuario no servidor }
IdSMTP.AuthenticationType := atLogin;
IdSMTP.Username := UserName;
IdSMTP.Password := Password; 

{ Informações básicas para uma conexão }
IdSMTP.Host :=edServidor.Text;
IdSMTP.Port := edPorta.Text;

{ Tenta conectar no servidor, aguardando no máximo um minuto }
IdSMTP.Connect (60000);

Screen.Cursor:=crHourGlass;
{ Carrega imagem de assinatura dependendo du usuario logado }
dtmDados.qrArquivosUser.Close;
dtmDados.qrArquivosUser.ParamByName('pCodUser').Value:=UserCod;
dtmDados.qrArquivosUser.Open;
CaminhoAssinatura:=dtmDados.qrArquivosUserNOME_ARQ.Value;

{ Nome e endereço de quem está enviando }
IdMessage.From.Address := AddrMail; 
IdMessage.From.Name := MailNameUser;

{ Destinatários }
IdMessage.Recipients.EMailAddresses := edtMailPara.Text;

{ Destinatários em cópia }
IdMessage.CCList.EMailAddresses := edtMailCC.Text;

{ Destinatários em cópia oculta }
IdMessage.BccList.EMailAddresses := ''

{ Endereço para resposta, isto é, se um destinatário der um "reply", a resposta será enviada para este endereço }
IdMessage.ReplyTo.EMailAddresses := AddrMail;

{ Assunto da mensagem }
IdMessage.Subject := edtMailAssunto.Text;

// Teste novo mail
IdMessage.ContentType:='multipart/alternative';
IdMessage.ContentDisposition:='inline';
IdMessage.Encoding:=meMIME;

    AssignFile(arq, 'C:\\temp\\Index.html');
    Rewrite(arq);

    Writeln(arq, '<html><body><b>'+Memo1.Lines[1]+'</b></body></html>'+#13#10+
    '<html><body><b>'+Memo1.Lines[2]+'</b></body></html>'+#13#10+
    '<html><body><b>'+Memo1.Lines[3]+'</b></body></html>'+#13#10+
    '<html><body><b>'+Memo1.Lines[4]+'</b></body></html>'+#13#10+
    '<html><body><b>'+Memo1.Lines[5]+'</b></body></html>'); { [ 8 ] Grava uma linha no arquivo }

    CloseFile(arq); { [ 8 ] Fecha o arquivo texto "tabuada.txt". }

    // Parte 0
WITH TIdText.Create(IdMessage.MessageParts) DO
  BEGIN
    //Body.Text := Memo1.Lines;
    Body.Text := '';
    ContentType := 'multipart/related';
    ContentTransfer := '7bit';
    ContentType := 'text/plain';
  END;

// Parte 1 HTML
WITH TIdText.Create(IdMessage.MessageParts) DO
  BEGIN
    ContentType:='multipart/related';
    Body.Clear;
  END;

// Dentro da parte 1 em HTML
WITH TIdText.Create(IdMessage.MessageParts) DO
  BEGIN
    Body.Clear;
    Body.LoadFromFile('C:\\temp\\Index.html');
    ContentTransfer := '7bit';
    ContentType := 'text/html';
    // parent part nao existe no indy 9
  END;

{ Anexar Assinatura }
Anexo := TIdAttachment.Create(IdMessage.MessageParts, 'C:\\Users\\FFP\\Desktop\\a.jpg');
Anexo.ContentType:='image/jpg';
Anexo.ContentDisposition:='inline';

{ Anexa Arquivos que foram carregado no LtbAnexos }
for xAnexo := 0 to LtbAnexos.Items.Count-1 do
BEGIN
  NomeArq:=LtbAnexos.Items.Strings[xAnexo];
  TIdAttachment.Create(IdMessage.MessageParts, TFileName(LtbAnexos.Items.Strings[xAnexo]));
END;

{ Envia o e-mail }
IdSMTP.Send (IdMessage);

Application.MessageBox('E-mail enviado com Sucesso', 'Aviso', MB_OK);
end;
except
    on e:exception do
    begin
    ShowMessage(e.message);
    end;
end;

{ Desconecta }
IdSMTP.Disconnect ();

FreeAndNil (IdMessage);
FreeAndNil (IdSMTP);
Close;

end;
Fabricio Pereira

Fabricio Pereira

Curtidas 0
POSTAR