Class MailReceiver

java.lang.Object
deu.cse.spring_webmail.mail.service.MailReceiver

@Service public class MailReceiver extends Object
메일을 받아오는 클래스
  • Field Details

    • mailMapper

      private final MailMapper mailMapper
      메일 변환 매퍼
    • mailRepository

      private final MailRepository mailRepository
      메일 레포지토리
    • mailBoxRepository

      private final MailBoxRepository mailBoxRepository
      메일함 레포지토리
    • mailPageableRepository

      private final MailPageableRepository mailPageableRepository
      페이지네이션을 위한 메일 레포지토리
    • jamesAdminMailBox

      private final JamesAdminMailBox jamesAdminMailBox
      James 관리자 메일함
    • downloadFolder

      @Value("${file.download_folder}") private String downloadFolder
      다운로드 폴더 경로
  • Constructor Details

  • Method Details

    • getMailFromMailBox

      public List<MailDto> getMailFromMailBox(String userName, MailBoxType mailBoxType, int page, int size)
      메일함에 있는 메일을 조회 함
      Parameters:
      userName - 사용자 아이디 (메일함은 사용자 이름으로 생성되므로 사용자 이름이 메일함 이름과 동일)
      mailBoxType - 메일함 종류
      page - 페이지 번호
      size - 페이지 크기
      Returns:
      사용자 메일함에 있는 모든 메일
    • getCountMailAtMailbox

      public Long getCountMailAtMailbox(String userName, MailBoxType mailboxName)
      사용자 이름으로 메일함을 찾아서 해당 메일함에 있는 모든 메일의 개수를 가져옴
      Parameters:
      userName - 사용자 아이디
      mailboxName - 메일함 이름
      Returns:
      사용자 메일함에 있는 모든 메일의 개수
    • getCountUnReadMailAtMailbox

      public Long getCountUnReadMailAtMailbox(String userName, MailBoxType mailboxName)
      사용자 이름으로 메일함을 찾아서 해당 메일함에 있는 읽지 않은 메일의 개수를 가져옴
      Parameters:
      userName - 사용자 아이디
      mailboxName - 메일함 이름
      Returns:
      사용자 메일함에 있는 읽지 않은 메일의 개수
    • getMail

      public MailDto getMail(int mailBoxType, Long mailUid, String userName)
      메일 UID를 통해 메일을 가져옴 - 메일 내용과 첨부파일을 포함 (메일을 가져오면 메일을 읽은 것으로 처리)
      Parameters:
      mailBoxType - 메일함 아이디
      mailUid - 메일 UID
      Returns:
      메일 DTO
    • downloadAttachment

      public org.springframework.core.io.Resource downloadAttachment(Long id, String filename)
      임시 디렉토리에 저장된 첨부파일을 다운로드
      Parameters:
      id - 메일 UID
      filename - 첨부파일 이름
    • mergeBlobs

      protected Blob mergeBlobs(Blob mailHeaders, Blob mailBytes) throws SQLException
      메일 Headers와 Body를 합쳐서 Blob으로 반환
      Parameters:
      mailHeaders - 메일 Headers
      mailBytes - 메일 Body
      Returns:
      합쳐진 Blob
      Throws:
      SQLException - SQL 예외
    • extractMailContent

      protected String extractMailContent(Object mailContents) throws jakarta.mail.MessagingException, IOException
      메일 Contents에서 내용만 추출 (첨부파일은 제외)
      Parameters:
      mailContents - 메일 Contents
      Throws:
      jakarta.mail.MessagingException
      IOException
    • extractAttachments

      protected List<String> extractAttachments(Object mailContents, Long mailUid) throws jakarta.mail.MessagingException, IOException
      메일 Content에서 첨부파일 이름만 추출 파일은 서버의 임시 디렉토리에 저장 (mailUid/fileName)
      Parameters:
      mailContents - 메일 Contents
      Throws:
      jakarta.mail.MessagingException
      IOException