본문 바로가기

Delphi/꿀팁

[E-Mail] 메일 및 첨부파일 내용 가져오기 - 4

TEmailInfo = record
  Index: Integer;
  UID: string;
  PartNumber: string;
  TransferEncoding: string;
  FileName: string;
end;
PEmailInfo = ^TEmailInfo;

TAttachInfo = record
  Index: Integer;
end;
PAttachInfo = ^TAttachInfo;

TForm1 = Class(TForm)
  ..
  lstMailBox: TListBox;
  lstMailList: TListView;
  lstAttachList: TListView;
private
public
  SelectMsg: TIdMessage;
end;

//lstMailList의 OnSelectItem 이벤트를 추가합니다.
procedure TForm1.lstMailListSelectItem(Sender: TObject; Item: TListItem; Selected: Boolean);
var
  I: Integer;
  AttachItem: TListItem;
  AttachInfo: PAttachInfo;
begin
  SelectMsg.Clear;
  lstAttachList.Clear;

  IdIMAP4.UIDRetrieve(PEmailInfo(Item.Data).UID, SelectMsg);
  
  for I := 0 to SelectMsg.MessageParts.Count - 1 do begin
    if SelectMsg.MessageParts.Items[I] is TIdText and (Length(Trim(TIdText(SelectMsg.MessageParts.Items[I]).Body.Text)) > 0) then begin
      //메일 내용일 경우 출력
      Memo1.Text := TIdText(SelectMsg.MessageParts.Items[I]).Body.Text;
    end else
    if SelectMsg.MessageParts.Items[I] is TIdAttachmentFile then begin
      GetMem(AttachInfo, SizeOf(TAttachInfo));
      
      //MessagePart에서 첨부파일에 해당하는 인덱스 저장
      AttachInfo.Index := I;
      AttachItem := lstAttachList.Items.Add;
      AttachItem.Caption := TIdAttachmentFile(SelectMsg.MessageParts.Items[I]).FileName;      
      AttachItem.Data := AttachInfo;
    end;
  end;
end;

2017/10/11 - [Delphi/꿀Tip] - [E-Mail] Mail에 로그인 하기 - 1

2017/10/13 - [Delphi/꿀Tip] - [E-Mail] 메일함 목록 불러오기 - 2

2017/10/25 - [Delphi/꿀Tip] - [E-Mail] 메일함의 메일 리스트 불러오기 - 3

2019/09/21 - [Delphi/꿀Tip] - [E-Mail] 첨부파일 다운로드 하기 - 5

 

반응형