이메일 생성 및 관리

새 이메일 메시지 만들기

다음은 MailMessage 클래스는 이메일 메시지를 나타내며 개발자가 새 이메일 메시지를 만들 수 있게 합니다. From, To, Subject 및 본문과 같은 기본 이메일 속성을 새로 만든 메일 메시지에 쉽게 첨부할 수 있습니다. 마찬가지로 메일 메시지를 EML, MSG, MHTML과 같은 다양한 형식으로 저장할 수 있습니다.

  • 다음의 인스턴스를 생성합니다. MailMessage 클래스.
  • 메일 메시지 속성을 설정합니다.
  • 메일 메시지를 다양한 형식으로 저장합니다.

다음 코드 스니펫은 다양한 속성을 가진 새 이메일을 만드는 방법을 보여줍니다.

다중 수신자 지정

다음은 MailMessage 객체는 이메일 메시지를 나타냅니다. 해당 클래스의 인스턴스는 MailMessage 클래스는 SMTP 서버로 전송되는 이메일 메시지를 구성하는 데 사용됩니다: SmtpClient 클래스. 이 문서는 하나 이상의 이메일 주소를 지정하는 방법을 보여줍니다. 이메일 주소는 다음을 사용해 지정할 수 있습니다: MailMessage 클래스. 그것들은:

  • To - 받는 사람 주소는 ‘To’ 필드에 지정할 수 있습니다. ‘To’ 필드의 수신자는 메시지의 주요 대상이며, 하나 이상의 받는 사람 주소를 지정할 수 있습니다.
  • Cc - CC는 "Carbon Copy"(복사) 또는 "Courtesy Copy"(예의 복사)를 의미하며, 이메일을 볼 필요는 있지만 반드시 행동을 취해야 하는 것은 아닌 수신자를 추가할 수 있습니다. 예를 들어 관리자는 물론 대화 내용을 알아야 하는 팀 구성원 등이 있습니다. Aspose.Email를 사용하면 코드에서 CC 주소를 지정할 수 있습니다. 이렇게 하면 자동 이메일이나 특정 주소로 보내는 모든 이메일을 해당 담당자에게 복사할 수 있습니다.
  • Bcc - Bcc(Blind Carbon Copy)는 다른 수신자에게 보이지 않게 이메일을 보낼 수 있게 합니다. CC가 주요 수신자가 보는 이메일 정보에 표시되는 반면, Bcc는 표시되지 않습니다. 숨겨진 알림용입니다. 

이메일 메시지에 여러 이메일 주소를 지정하려면 다음 단계를 따르세요:

  1. 다음의 인스턴스를 생성합니다. MailMessage 클래스.
  2. 다음 클래스를 사용하여 From 및 다수의 To, Cc, Bcc 주소를 지정합니다: MailMessage 인스턴스.
  3. 다음의 인스턴스를 생성합니다. SmtpClient 클래스와 Send 메서드를 사용하여 이메일을 보냅니다.

아래 코드 샘플은 여러 To, CC 및 BCC 주소를 지정하는 방법을 보여줍니다.

보내는 사람 및 받는 사람 표시 이름 설정

아래 프로그래밍 예제는 이메일 메시지에서 이메일 주소를 친숙한 이름으로 변경하는 방법을 보여줍니다. 친숙한 이름은 이메일 주소보다 사람에게 더 친근한 이름이며, 예를 들어 js346@domain.com 대신 John Smith와 같이 사용할 수 있습니다. 이메일을 보낼 때 친숙한 이름을 이메일 주소에 연결할 수 있습니다. MailMessage 클래스 생성자.

이메일 메시지에서 이메일 주소를 친숙한 이름으로 변경하려면 다음 단계를 따르세요:

  • 다음의 인스턴스를 생성합니다. MailMessage 클래스를 사용하고 ToFrom 필드에 별명과 함께 이메일 주소를 지정합니다.
  • 다음 메서드를 호출하여 Cc 및 Bcc 이메일 주소와 별명을 지정합니다: MailMessage 클래스 생성자는 MailMessage 인스턴스.
  • 다음의 인스턴스를 생성합니다. SmtpClient 클래스를 사용하여 이메일을 전송합니다. 보내기 메서드.

다음 코드 스니펫은 이메일 주소에 대한 이름을 표시하는 방법을 보여줍니다.

이메일 제목 설정

다음은 MailMessage 클래스를 사용하면 메시지 내용의 간결한 요약을 지정할 수 있습니다: 제목 속성. 다음 코드 샘플은 이메일을 만들고 제목을 설정하는 방법을 보여줍니다:

from aspose.email import MailMessage

# Create a new email message
message = MailMessage()

# Set the subject of the email
message.subject = "Meeting Reminder: Project Update"

# Set other email properties (optional)
message.from_address = "sender@example.com"
message.to.append("recipient@example.com")
message.body = "This is a reminder for the upcoming project update meeting."

# Print the email details
print(f"Subject: {message.subject}")
print(f"From: {message.from_address}")
print(f"To: {', '.join(message.to)}")
print(f"Body: {message.body}")

이메일 본문 설정

메시지의 제목뿐만 아니라 이메일 본문도 동일한 방법으로 지정할 수 있습니다. MailMessage 클래스. 이메일은 여러 본문을 가질 수 있습니다. 클래스에는 두 종류의 메일 본문이 있습니다:

  • HTML 본문
  • 텍스트 본문

뿐만 아니라 HtmlBody 및 TextBody, Aspose.Email에는 메일 본문과 관련된 두 개의 읽기 전용 속성이 추가로 있습니다:

  • IsBodyText: 본문이 텍스트인지 여부를 사용자에게 알려줍니다.
  • IsBodyHtml: 본문이 HTML인지 일반 텍스트인지 사용자에게 알려줍니다.

이 문서는 일반 텍스트 또는 HTML 본문을 정의하고, 대체 텍스트를 설정하며, 이메일 본문을 인코딩하는 방법을 보여줍니다.

HTML 본문 설정

HTML 본문은 메시지 본문의 HTML 내용을 지정하는 데 사용됩니다. HTML 본문은 태그 사이에 포함되어야 합니다. 다음 코드 스니펫은 HTML 본문을 설정하는 방법을 보여줍니다.

대체 텍스트 설정

다음 사용 AlternateView 클래스는 이메일 메시지를 다양한 형식으로 복사하는 데 사용됩니다. 예를 들어 HTML로 메시지를 보낼 경우, 수신자 중 HTML을 표시하지 못하는 이메일 리더를 사용하는 경우를 대비해 일반 텍스트 버전을 제공하고 싶을 수 있습니다. 이 클래스에는 두 개의 속성이 있습니다: linked_resources 및 base_uri, 이는 이메일 내용 내 URL을 해결하는 데 사용됩니다.

  • LinkedResources는 LinkedResources 객체의 컬렉션입니다. 렌더링 시 이메일 내용 내 URL은 먼저 LinkedResources 컬렉션에 있는 각 LinkedResources 객체의 Content Link URL과 매치되어 해석됩니다.
  • BaseUri는 메일 리더가 본문 내 상대 URL을 해결하고, LinkedResources 컬렉션의 상대 Content Link URL을 해결하는 데 사용됩니다.

다음 코드 스니펫은 대체 텍스트를 설정하는 방법을 보여줍니다.

MailMessage 기능

다음은 MailMessage class는 이메일 메시지의 내용을 나타냅니다. 인스턴스는 MailMessage class는 SMTP 서버로 전송되어 배달되는 이메일 메시지를 구성하는 데 사용됩니다, using the SmtpClient class. 이 문서에서는 사용 방법을 보여줍니다 MailMessage class 유틸리티 기능은 다음 이메일 기능들을 제어합니다:

  • 날짜 및 시간 - Through the MailMessage class Date 속성은 이메일의 날짜와 시간을 가져오거나 설정합니다.
  • 메시지 우선순위MailPriority 클래스는 이메일 전송 시 우선 순위 수준을 지정합니다. 낮음, 보통, 높음이 있으며, 우선 순위는 전송 속도와 전달에 영향을 줍니다.
  • 메시지 민감도MailSensitivity 클래스는 다섯 단계의 민감도를 지정합니다.
  • 배달 알림 - 배달 알림은 발신자에게 이메일이 수신자의 받은편지함에 전달되었음을 알려줍니다.

기본적으로 날짜는 메시지가 전송된 실제 날짜이며, 시간은 Microsoft Outlook에 표시된 전송 시각입니다. 그러나 실제 이메일 전달 시간은 SMTP 서버가 메일 헤더에 추가합니다. 예를 들어, 아래는 일반적인 메일 헤더이며, 여기서 Date는 Date 필드를 설정합니다.

import aspose.email as ae
from aspose.email import MailMessage

# Create a new MailMessage instance
message = MailMessage()

# Add SMTP headers to the message
message.headers.add("Received", "from ip-123.56.99.216.dsl-cust.ca.inter.net ([216.99.56.123]) by Aspose.secureserver.net with MailEnable ESMTP; Thu, 22 Feb 2007 13:58:57 -0700")
message.headers.add("Return-Path", "<xyz@oikoscucine.it>")
message.headers.add("Received", "from 195.120.225.20 (HELO mail.oikoscucine.it) by aspose.com with esmtp (:1CYY+<LA*- *1WK@) id Q8,/O/-.N83@7-9M for abc@aspose.com; Thu, 22 Feb 2007 20:58:51 +0300")

# Set email details
message.from_address = "XYZ <xyz@oikoscucine.it>"
message.to.append("abc@aspose.com")
message.subject = "For ABC"
message.date = "Thu, 22 Feb 2007 20:58:51 +0300"
message.message_id = "<01c756c4$41b554d0$6c822ecf@dishonestyinsufferably>"
message.headers.add("MIME-Version", "1.0")
message.headers.add("Content-Type", "multipart/alternative; boundary=\"----=_NextPart_000_0006_01C7569A.58DF4CD0\"")
message.headers.add("X-Mailer", "Microsoft Office Outlook, Build 11.0.5510")
message.headers.add("X-MimeOLE", "Produced By Microsoft MimeOLE V6.00.2800.1106")
message.headers.add("Thread-Index", "Aca6Q:=ES0M(9-=(<.<1.<Q9@QE6CD==")
message.headers.add("X-Read", "1")

# Save the message as an EML file
message.save("output.eml", ae.EmlSaveOptions())

아래 코드 스니펫은 위에서 논의한 각 기능을 어떻게 사용할 수 있는지 보여줍니다.

import aspose.email as ae
from aspose.email import MailMessage, MailPriority, MailSensitivity
from datetime import datetime

# Create a new MailMessage instance
message = MailMessage("sender@gmail.com", "receiver@gmail.com", "Some subject", "Some body text")

# Set additional properties
message.date = datetime.now()
message.priority = MailPriority.HIGH
message.sensitivity = MailSensitivity.NORMAL
message.headers.add("X-Mailer", "Aspose.Email")

# Save the message as an EML file
message.save("output.eml", ae.EmlSaveOptions())

수신 확인 요청

아래 프로그래밍 샘플은 읽음 확인을 요청하는 방법을 보여줍니다. The MailMessage 클래스 DeliveryNotificationOptions Enumeration 속성은 이메일에 대한 배달 알림 옵션을 설명합니다. 이메일을 보낸 후 읽음 확인을 요청하려면 다음 단계를 따르세요:

  1. 다음의 인스턴스를 생성합니다. MailMessage 클래스.
  2. 이메일의 보낸 사람, 받는 사람 및 HTML 본문을 다음에 지정합니다: MailMessage 인스턴스.
  3. 지정하세요 DeliveryNotificationOptions 다른 MailMessage 인스턴스.
  4. 다음의 인스턴스를 생성합니다. SmtpClient 클래스를 사용하고 Send 메서드로 이메일을 보냅니다.

읽음 확인 요청이 항상 허용되지 않을 수 있는 이유는:

  • 메일 클라이언트가 해당 기능을 구현하지 않을 수 있습니다.
  • 최종 사용자는 해당 기능을 비활성화했을 수 있습니다.
  • 최종 사용자는 이를 전송하지 않을 수 있습니다.

다음 코드 스니펫은 읽음 확인 요청 방법을 보여줍니다.

import aspose.email as ae
from aspose.email import MailMessage, SmtpClient, DeliveryNotificationOptions

# Create an instance of MailMessage class
message = MailMessage()

# Specify From, To, HtmlBody, and DeliveryNotificationOptions
message.from_address = "sender@sender.com"
message.to.append("receiver@receiver.com")
message.html_body = "<html><body>This is the Html body</body></html>"
message.delivery_notification_options = DeliveryNotificationOptions.ON_SUCCESS

message.headers.add("Return-Receipt-To", "sender@sender.com")
message.headers.add("Disposition-Notification-To", "sender@sender.com")

# Create an instance of SmtpClient class
client = SmtpClient()

# Specify your mailing host server, Username, Password, and Port
client.host = "smtp.server.com"
client.username = "Username"
client.password = "Password"
client.port = 25

try:
    # Client.send will send this message
    client.send(message)
    # Display 'Message sent' only if the message is sent successfully
    print("Message sent")
except Exception as ex:
    import traceback
    traceback.print_exc()

이메일 헤더 설정

이메일 헤더는 인터넷 표준을 나타내며, RFC는 인터넷 이메일 메시지에 포함되는 헤더 필드를 정의합니다. 이메일 헤더는 MailMessage 클래스를 사용해 지정할 수 있습니다. 일반적인 헤더 유형은 HeaderType 클래스에 정의되어 있으며, 이는 일반 열거형처럼 작동하는 sealed 클래스입니다.

일반적으로 이메일 헤더에는 다음 필드가 포함됩니다:

  • To: To 필드에 받는 사람 주소를 지정할 수 있습니다. 이 수신자는 메시지의 주요 대상이며, 하나 이상의 주소를 지정할 수 있습니다.
  • From: 이 필드는 메시지 보낸 사람의 이메일 주소를 나타냅니다.
  • Cc: 사용자가 메시지를 "Carbon Copy" 또는 "Courtesy Copy"로 보내도록 허용합니다. 즉, 수신자는 회신하거나 행동할 필요가 없습니다. 일반적으로 상급자가 CC를 통해 알림을 받습니다.
  • Bcc: Blind Carbon Copy의 약자로, 수신자들이 전체 수신자 목록을 확인할 수 없도록 메시지를 여러 사람에게 보내는 방식을 의미합니다. 숨은 알림을 위해 사용됩니다.
  • ReplyTo: 이 헤더 필드는 보내는 사람이 회신을 받고자 하는 주소를 나타냅니다.
  • Subject: 제목, 헤딩, 주제. 종종 다른 메시지에 대한 회신이나 댓글의 스레드 표시자로 사용됩니다.
  • Date: 이 헤더는 날짜(및 시간)를 지정합니다. 일반적으로 메시지가 작성 및 전송된 날짜입니다.
  • XMailer: 발신자 클라이언트 소프트웨어에 대한 정보입니다. 예시: X-Mailer: Aspose.Email. XMailer는 메일 클라이언트에서 사용됩니다. 메일 클라이언트마다 XMailer 값이 다릅니다. MS Outlook의 XMailer 값은 Microsoft Office Outlook, Build 11.0.5510이며, 이메일 수신자나 리더에서는 무시됩니다.

일반적으로 이메일 헤더는 다음과 같이 보입니다:


Reply-To: reply@reply.com

From: sender@sender.com

To: guangzhou@guangzhoo.com

Subject: test mail

Date: 6 Mar 2006 8:2:2 +0800

X-Mailer: Aspose.Email

이메일 헤더를 사용자 정의하려면 다음 단계를 따르세요:

  • 다음의 인스턴스를 생성합니다. MailMessage 클래스.
  • 인스턴스를 사용하여 To, From, CC, Bcc, ReplyTo, Subject, Date 및 XMailer를 지정합니다: MailMessage.
  • 다음의 인스턴스를 생성합니다. MimeHeader 클래스와 비밀 헤더를 지정합니다.
  • 비밀 헤더를 다음에 추가합니다: MailMessage 인스턴스.

다음 코드 스니펫은 이메일 헤더를 설정하는 방법을 보여줍니다.

import aspose.email as ae
from aspose.email import MailMessage
from datetime import datetime

# Create an instance of MailMessage class
message = MailMessage()

# Specify email details
message.reply_to_list.append("reply@reply.com")
message.from_address = "sender@sender.com"
message.to.append("receiver1@receiver.com")
message.cc.append("receiver2@receiver.com")
message.bcc.append("receiver3@receiver.com")
message.subject = "test mail"
message.date = datetime(2006, 3, 6)
message.headers.add("X-Mailer", "Aspose.Email")

위의 코드 스니펫은 다음 형식의 이메일 헤더를 생성합니다. 이는 결과 파일 "MsgHeaders.msg"를 Microsoft Outlook에서 열고 속성을 확인하면 확인할 수 있습니다.


Reply-To: reply@reply.com

From: sender@sender.com

To: receiver1@receiver.com

CC: receiver2@receiver.com

BCC: receiver3@receiver.com

Subject: test mail

Date: 6 Mar 2006 8:2:2 +0800

X-Mailer: Aspose.Email

secret-header: mystery

특정 위치에 헤더 삽입

다음은 추가 메서드 HeadersCollection 클래스는 헤더를 컬렉션 끝에 삽입합니다. 그러나 특정 위치에 헤더를 삽입해야 할 때도 있습니다. 그런 경우에는 추가 메서드로는 도움이 되지 않습니다. 이를 달성하려면 다음을 사용하십시오: Insert 메서드 HeadersCollection. 컬렉션에 같은 이름의 헤더가 포함되어 있으면, 이 헤더는 동일한 이름의 다른 헤더 앞에 삽입됩니다.

다음 코드 스니펫은 특정 위치에 헤더를 삽입하는 방법을 보여줍니다.

# Insert a header into the MailMessage instance
message.headers.insert("Received", "Value")

이메일에 사용자 정의 헤더 추가

아래 프로그래밍 예제는 다음을 사용하여 이메일 메시지에 사용자 정의 헤더를 지정하는 방법을 보여줍니다: MailMessage 클래스.

# Add a header into the MailMessage instance
message.headers.add("secret-header", "mystery")

위의 코드 스니펫은 다음 형식의 이메일 헤더를 생성합니다:

secret-header: mystery