준호씨의 블로그

javamail - eml 파싱하기. 메일 body 출력하기. 본문

개발이야기/이메일시스템

javamail - eml 파싱하기. 메일 body 출력하기.

준호씨 2018. 5. 28. 22:31
반응형

JavaMail API 로 eml 파일 파싱하는 방법을 정리 해 본다.

간단히 요역하자면, FileInputStream 으로 파일 불러와서 MimeMessage 만들 때 인자로 넣어주면 된다.

다음 예제를 보자.

File emlFile = new File("src/main/resources/mail.eml");

Properties props = System.getProperties();

Session mailSession = Session.getDefaultInstance(props, null);

// parse eml file
InputStream inputStream = new FileInputStream(emlFile);
MimeMessage message = new MimeMessage(mailSession, inputStream);

System.out.println("Subject : " + message.getSubject());
System.out.println("From : " + message.getFrom()[0]);
System.out.println("--------------");
System.out.println("Body : " +  message.getContent());

File 클래스로 File 인스턴스를 생성한다. 메일을 실제 발송 하지는 않지만 Property 도 만들고 세션도 만들어 두어야 한다. FileInputStream 에 File 인스턴스를 넣어서 InputStream 인스턴스를 만든다. 세션과 InputStream 을 이용하여 MimeMessage 클래스의 인스턴스를 생성한다. 그럼 끝이다.

메일 Body 를 Raw 데이터로 출력 하고 싶다면 다음과 같이 코드를 추가한다.

    // Raw Data
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    message.writeTo(outputStream);
    System.out.println("\nRaw data\n" + outputStream.toString());

ByteArrayOutputStream 을 생성하고 message 의 writeTo 로 outputStream 에 쓴다.그리고 outputStream 의 데이터를 toString 으로 출력하면 된다. 다음과 같이 나타나는 것을 확인 할 수 있다.

Delivered-To: junho85@gmail.com
Received: by 2002:ac8:130c:0:0:0:0:0 with SMTP id e12-v6csp2204149qtj;
        Sun, 27 May 2018 23:24:10 -0700 (PDT)
X-Google-Smtp-Source: AB8JxZoJwGcd5gIMbfk8sGFq9oRhCv+bCgQNXh1hMfKtiFWAjrBzrrYWou5gcP2egjarlTv/Kef9
X-Received: by 2002:a62:9342:: with SMTP id b63-v6mr12334060pfe.130.1527488650719;
        Sun, 27 May 2018 23:24:10 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; t=1527488650; cv=none;
        d=google.com; s=arc-20160816;
        b=q3fOTpdcXd0wUtHXJOPgsFRho2yjUvtQCECZMhdGUkxkAjfF2hiUaf523Pvi+/F1VQ
         0E4i9nYjXADtUyA9+yjbDO4ciVXW3NLig1taTkON6DXMCA3JEpSLPUP/1Vyz9mYEEXKy
         0lMV8A4NleLU76Z27kNCIUFUzxEl+2/3glvncXRG8xSuKgF5zmy/Q4k3Ch2CHXg2lqn+
         EN+w5SQnLr0jJ7N39OG8eH1IsMe5/6K2qvj6IriOESZ/7feBvgxlsFAchs6uP9rC6KhZ
         ToCdODY6EvJYc6h2Bot98V6MMJj0z1NTyzk1l6/K+flaQ9m1K9vtecU6u7wloNabvbRf
         SU+A==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816;
        h=content-transfer-encoding:mime-version:subject:message-id:to:from
         :date:arc-authentication-results;
        bh=7QQ02yH1C2QclUxNeK4GFuSO6GwcCJ2w09IDfkYnsGs=;
        b=JAEhOEEzmujlMG2knu90tnlMn+i5WivaANIpEfjgYAYKdDmustW/NELeHlxRZEUYSh
         0e7HhzFnvHNp1Tz+W+Zb2UOq6ldCDD0EMB59tnOAAsMnz2zsPSNJ5ZAifRf8Lg3LX6P0
         rPsSVIlmH6Dvnpt8Sgix6SmhXe5wZEinyt1wPlt6m4RZJvN7ZeS1cFPASXehHq5cqt+W
         kdujYMrW1MBpicE2HYd8eNLHXCiYAgkO74Vb6dZmTlzzHvE/Afj7JdN9IJONA4UmVF/d
         ZCrgVNv8+mRJKf9uNlwFrVzSKMoFwilKjEIxVdfiRqX8kR0/v5U1d+KuXio+LaX/YyHx
         s9vQ==
ARC-Authentication-Results: i=1; mx.google.com;
       spf=softfail (google.com: domain of transitioning noreply@daum.net does not designate 211.56.96.51 as permitted sender) smtp.mailfrom=noreply@daum.net
Return-Path: <noreply@daum.net>
Received: from 172.26.117.203 ([211.56.96.51])
        by mx.google.com with ESMTPS id t12-v6si23490468pgr.690.2018.05.27.23.24.09
        for <junho85@gmail.com>
        (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
        Sun, 27 May 2018 23:24:10 -0700 (PDT)
Received-SPF: softfail (google.com: domain of transitioning noreply@daum.net does not designate 211.56.96.51 as permitted sender) client-ip=211.56.96.51;
Authentication-Results: mx.google.com;
       spf=softfail (google.com: domain of transitioning noreply@daum.net does not designate 211.56.96.51 as permitted sender) smtp.mailfrom=noreply@daum.net
Date: Mon, 28 May 2018 15:24:07 +0900 (KST)
From: noreply@daum.net
To: junho85@gmail.com
Message-ID: <1560911714.0.1527488647162@daum.net>
Subject: This is subject for gmail
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

This is body
반응형
Comments