POP3 서버에서 이메일 가져오기
파싱 없이 이메일을 디스크에 저장
POP3 서버에서 이메일 메시지를 파싱 없이 다운로드하려면 다음을 사용할 수 있습니다: save_message Aspose.Email의 메서드 Pop3Client 클래스. 다음 코드 스니펫은 시퀀스 번호(예: 1)를 사용해 메시지를 저장하는 방법을 보여줍니다. 해당 save_message 메서드는 파싱 없이 원본 EML 형식을 보존합니다:
저장하기 전에 메시지 파싱
다음 방법을 사용해 특정 이메일 메시지를 가져올 수 있습니다: fetch_message 메서드 Pop3Client 클래스는 클라이언트 객체에 원하는 시퀀스 번호를 지정합니다. 다음 코드 샘플은 특정 메시지를 가져와 그 제목을 파일 이름으로 사용해 저장하는 방법을 보여줍니다. save msg 객체의 메서드:
import aspose.email as ae
client = ae.clients.pop3.Pop3Client("host", 995, "username", "password", ae.clients.SecurityOptions.AUTO)
# Fetch the message by its sequence number and Save the message using its subject as the file name
msg = client.fetch_message(1)
msg.save("first-message_out.eml", ae.SaveOptions.default_eml)
조건으로 서버에서 이메일 필터링
Aspose.Email Pop3Client class는 다음을 제공합니다 list_messages() 메서드는 사서함의 모든 메시지를 가져옵니다. 특정 조건에 일치하는 메시지만 얻으려면 오버로드된 메서드를 사용하십시오 list_messages(query) 메서드는 ~를 받아들입니다 MailQuery 을 인수로 사용합니다. MailQuery 클래스는 날짜, 제목, 발신자, 수신자 등 다양한 속성을 제공하여 쿼리 조건을 지정할 수 있게 합니다.
검색 표현식을 만들려면 다음을 사용하십시오: MailQueryBuilder 클래스. 먼저 필요한 모든 조건과 제약을 정의한 뒤 MailQueryBuilder가 만든 쿼리로 MailQuery 객체를 채웁니다. MailQueryBuilder. Pop3Client는 이 MailQuery 객체를 사용해 서버에서 필터링된 정보를 가져옵니다.
다음 코드 샘플은 Gmail 계정에서 제목, 내부 날짜, 발신자 및 수신자를 포함한 다양한 기준으로 이메일을 필터링하고 가져오는 방법을 보여줍니다. 또한 대소문자 구분 필터링을 보여주고 복잡한 쿼리를 효율적으로 구축하는 방법을 시연합니다.
- Gmail POP3 서버에 연결하려면 다음을 사용하십시오: Pop3Client 클래스는 지정된 서버 주소, 포트, 사용자 이름 및 비밀번호를 포함합니다. 보안 옵션은 안전한 연결을 위해 AUTO로 설정됩니다.
- 다음의 인스턴스를 생성합니다. MailQueryBuilder 이메일을 필터링하기 위한 검색 기준을 구성합니다.
- 제목 기준으로 필터링:
- 제목에 "Newsletter"가 포함된 이메일이 필터 조건으로 지정되었습니다.
- 내부 날짜 기준으로 필터링:
- 현재 날짜에 수신된 이메일에 대한 필터가 설정되었습니다.
- 지난 주에 수신된 이메일을 가져오기 위해 추가 필터가 추가되었습니다.
- 보낸사람 기준으로 필터링:
- 특정 이메일 주소(sa qib.razzaq@127.0.0.1)와 특정 도메인(SpecificHost.com)에서 온 이메일을 찾기 위해 필터가 적용되었습니다.
- 수신인 기준으로 필터링:
- 특정 수신인에게 보낸 이메일을 찾기 위한 필터가 지정되었습니다.
- OR 연산자를 사용해 쿼리를 결합하여 지정된 제목과 일치하거나 특정 주소에서 보낸 이메일을 검색합니다.
- 대소문자 구분 필터링:
- "Newsletter"가 포함된 제목에 대해 대소문자를 구분하는 필터가 지정되었습니다(True 매개변수로 표시).
- 메시지 나열:
- list_messages() 메서드는 구성된 쿼리를 사용해 사서함에서 필터링된 메시지를 가져옵니다.
- 마지막으로 필터링된 메시지 수를 출력합니다.
날짜별 이메일 필터링
전송 날짜별로 메시지를 가져오려면, 다음을 사용하십시오 internal_date 아래 코드 샘플에 표시된 속성:
import aspose.email as ae
from datetime import datetime
builder = ae.tools.search.MailQueryBuilder()
builder.internal_date.on(datetime.now())
날짜 범위별 이메일 필터링
날짜 범위 내의 메시지를 가져오려면, 동일한 것을 사용하십시오 internal_date 아래 코드 샘플에 표시된 날짜 범위를 지정하는 속성:
import aspose.email as ae
from datetime import datetime, timedelta
builder = ae.tools.search.MailQueryBuilder()
# Emails that arrived in last 7 days
builder.internal_date.before(datetime.now())
builder.internal_date.since(datetime.today() - timedelta(days=7))
발신자별 이메일 필터링
특정 발신자에서 메시지를 가져오려면, 다음을 사용하십시오 from_address 아래 코드 샘플에 표시된 속성:
import aspose.email as ae
builder = ae.tools.search.MailQueryBuilder()
builder.from_address.contains("saqib.razzaq@127.0.0.1")
도메인별 이메일 필터링
특정 도메인에서 메시지를 가져오려면, 다음을 사용하십시오 from_address 아래 코드 샘플에 표시된 속성:
import aspose.email as ae
builder = ae.tools.search.MailQueryBuilder()
builder.from_address.contains("SpecificHost.com")
수신자별 이메일 필터링
특정 수신자에게 메시지를 가져오려면, 다음을 사용하십시오 to 아래 코드 샘플에 표시된 속성:
import aspose.email as ae
builder = ae.tools.search.MailQueryBuilder()
builder.to.contains("recipient")
복잡한 검색 쿼리 만들기
때때로 하나 이상의 쿼리를 만족시켜야 할 필요가 있습니다. Aspose.Email은 여러 문장에서 쿼리를 결합할 수 있게 해줍니다. 생성합니다 MailQueryBuilder 객체와 그 속성을 사용해 특정 쿼리를 작성합니다.
AND 연산자로 쿼리 결합
다음 코드 스니펫은 AND 연산자를 사용해 쿼리를 결합하는 방법을 보여줍니다:
import aspose.email as ae
from datetime import datetime, timedelta
builder = ae.tools.search.MailQueryBuilder()
builder.internal_date.before(datetime.now())
builder.internal_date.since(datetime.today() - timedelta(days=7))
builder.from_address.contains("SpecificHost.com")
OR 연산자로 쿼리 결합
다음 코드 스니펫은 OR 연산자를 사용해 쿼리를 결합하는 방법을 보여줍니다:
import aspose.email as ae
builder = ae.tools.search.MailQueryBuilder()
builder.either(builder.subject.contains("test"), builder.from_address.contains("noreply@host.com"))
대소문자 구분 필터 적용
API는 또한 대소문자를 구분하는 기준에 따라 사서함에서 이메일을 필터링할 수 있는 기능을 제공합니다. 다음 메서드들은 StringComparisonField 클래스는 대소문자를 구분하는 플래그를 지정해 이메일을 검색할 수 있는 기능을 제공합니다:
메서드 Aspose.Email.StringComparisonField.contains(value, ignore_case) 메서드 Aspose.Email.StringComparisonField.equals(value, ignore_case) 메서드 Aspose.Email.StringComparisonField.not_contains(value, ignore_case) 메서드 Aspose.Email.StringComparisonField.not_equals(value, ignore_case)
다음 코드 스니펫은 이 기능을 프로젝트에 구현하는 방법을 보여줍니다:
import aspose.email as ae
builder = ae.tools.search.MailQueryBuilder()
builder.from_address.contains("noreply@host.com", True)