C#에서 사용자 지정 옵션으로 이메일 메시지 만들기

새 이메일 메시지 만들기

새 이메일 메시지를 만들려면 다음을 사용할 수 있습니다 MailMessage 클래스. MailMessage 클래스는 또한 생성된 이메일 메시지의 발신자 이메일 주소, 수신자 이메일 주소, 이메일 제목 및 HTML 형식의 본문 콘텐츠와 같은 속성을 초기화합니다.

다음 코드를 고려하십시오. 자세한 단계와 함께 새 이메일 메시지를 생성하고 속성을 설정합니다.

  1. 새 인스턴스를 생성합니다 MailMessage 클래스.
  2. 설정합니다. From 보낸 사람의 이메일 주소에 대한 속성.
  3. 설정합니다. To 받는 사람들의 이메일 주소를 콤마로 구분한 목록에 대한 속성.
  4. 설정합니다. Subject 이메일 제목에 대한 속성.
  5. 설정합니다. HtmlBody 이메일 본문 HTML 콘텐츠에 대한 속성.
// Create a new instance of MailMessage class
var message = new MailMessage
{
    From = "from@domain.com",
    To = "to1@domain.com, to2@domain.com",
    Subject = "New message",
    HtmlBody = @"<!DOCTYPE html>
    <html>
     <head>
      <style>
       h3{font-family:Verdana, sans-serif;color:#000000;background-color:#ffffff;}
       p {font-family:Verdana, sans-serif;font-size:14px;font-style:normal;
         font-weight:normal;color:#000000;background-color:#ffffff;}
      </style>
     </head>
     <body>
       <h3>New message</h3>
       <p>This is a new message created by Aspose.Email.</p>
     </body>
    </html>"
};

기본 텍스트 인코딩 설정

다음 속성들의 기본 텍스트 인코딩을 설정합니다:

  • From: 표시 이름
  • To: 표시 이름
  • Subject
  • 본문

다음 사용 MailMessage.PreferredTextEncoding 위 속성들의 모든 텍스트가 이메일 메시지에 올바르게 인코딩되도록 보장하는 속성입니다. 다음 코드 스니펫은 이메일 주소, 제목 및 본문에 프랑스어 단어를 표시 이름으로 사용하는 방법을 보여줍니다.

메일 본문 설정

Plain Text 본문 설정

메일 본문은 다음을 사용하여 지정할 수 있습니다: 본문 속성 MailMessage 클래스.

// Declare message as MailMessage instance
var eml = new MailMessage
{
    // Specify HtmlBody
    Body = "This is a plain text body"
};

HTML 본문 설정

메일 본문은 다음을 사용하여 지정할 수도 있습니다: HtmlBody 속성 MailMessage 클래스.

// Declare message as MailMessage instance
var eml = new MailMessage
{
    // Specify HtmlBody
    HtmlBody = "<html><body>This is the HTML body</body></html>"
};

대체 텍스트 설정

EML 파일의 대체 뷰는 이메일 내용의 추가 표현으로, 이메일 메시지를 다른 방식으로 렌더링하는 데 사용할 수 있습니다. 예를 들어 HTML로 메시지를 보낼 경우, 일부 수신자가 HTML을 표시할 수 없는 경우를 대비해 plain text 버전을 제공하고자 할 수 있습니다. 이를 위해 다음을 사용하십시오: AlternateView 클래스. 이 클래스는 두 개의 속성을 갖습니다, LinkedResourcesBaseUri, 이는 이메일 내용 내 URL을 해결하는 데 사용됩니다.

  • LinkedResources 은(는) 컬렉션입니다. LinkedResource 객체들. 렌더링될 때, 이메일 내용 내 URL은 각 객체의 콘텐츠 링크에 있는 URL과 먼저 매칭됩니다. LinkedResource 객체는 LinkedResources 컬렉션을 해석합니다.
  • BaseUri 메일 리더가 본문 내 상대 URL 및 콘텐츠 링크 URL을 해석하는 데 사용됩니다, LinkedResources 컬렉션.

다음 코드를 참고하십시오. 대체 텍스트를 설정하는 자세한 단계가 포함되어 있습니다.

  1. 다음의 인스턴스를 생성합니다 MailMessage 클래스.
  2. Create AlternateView 문자열에 지정된 내용을 사용하여 이메일 메시지를 보기 위해.
  3. 다음으로 대체 텍스트를 추가합니다: 추가 메서드 MailMessage.AlternateViews 컬렉션.
// Declare message as MailMessage instance
var eml = new MailMessage();

// Creates AlternateView to view an email message using the content specified in the //string
var alternate = AlternateView.CreateAlternateViewFromString("Alternate Text");

// Adding alternate text
 eml.AlternateViews.Add(alternate);

메일 본문 인코딩 지정

Aspose.Email은 다음을 사용합니다: BodyEncoding 속성 MailMessage 이메일 본문 인코딩을 지정하는 클래스입니다. 예시:

eml.BodyEncoding = Encoding.UTF8;

다중 수신자 지정

이메일 메시지의 수신자를 지정하는 방법은 To, CC, BCC 필드를 사용하는 세 가지가 있습니다.

  • To 필드는 메시지의 주요 수신자입니다. 이 필드에 하나 이상의 이메일 주소를 쉼표로 구분하여 입력할 수 있습니다. To 필드는 모든 이메일 메시지에 필수입니다.

  • CC 필드는 carbon copy를 의미합니다. 주제에 관심이 있거나 관련된 다른 사람에게 메시지 사본을 보내는 데 사용됩니다. CC 필드는 선택 사항이며 여러 이메일 주소를 포함할 수 있습니다. CC 필드의 수신자는 다른 수신자를 볼 수 있습니다.

  • BCC 필드는 blind carbon copy를 의미합니다. CC 필드와 유사하지만 BCC 필드의 수신자는 다른 수신자에게 숨겨집니다. BCC 필드는 일부 수신자의 프라이버시를 보호하거나 회신으로 인해 받은 편지함이 어수선해지는 것을 방지하고자 할 때 유용합니다. BCC 필드는 선택 사항이며 여러 이메일 주소를 가질 수 있습니다.

다음 코드를 참고하십시오. 자세한 단계와 함께 이메일 메시지의 여러 수신자를 지정합니다.

Code steps:

  1. 새 인스턴스를 생성합니다 MailMessage 클래스.
  2. 설정합니다. From 보낸 사람의 이메일 주소에 대한 속성.
  3. 설정합니다. To 속성을 기본 수신자 이메일 주소 배열에 지정합니다.
  4. 설정합니다. CC 속성을 이메일 사본을 받을 수신자 이메일 주소 배열에 지정합니다.
  5. 설정합니다. Bcc 속성을 이메일을 블라인드 카본 카피로 받을 수신자 이메일 주소 배열에 지정합니다.

Code sample:

var eml = new MailMessage
{
    // Specify From address
    From = "sender@sender.com",
    //  Specify recipients’ mail addresses
    To = {"receiver1@receiver.com", "receiver2@receiver.com", "receiver3@receiver.com"},
    // Specify CC addresses
    CC = {"CC1@receiver.com", "CC2@receiver.com"},
    // Specify BCC addresses
    Bcc = {"Bcc1@receiver.com", "Bcc2@receiver.com"}
};

이메일 주소에 표시 이름 추가

이메일 주소와 함께 display name을 포함시켜 이메일의 발신자 또는 수신자를 식별할 수 있습니다. 이것은

사람의 전체

이름, 별명 또는 기타 식별자를 포함할 수 있습니다.

이메일 메시지가 이메일 클라이언트나 웹메일 인터페이스에 표시될 때, 표시 이름은 일반적으로 이메일 주소와 함께 표시되어 사용자가 메시지가 누구에게서 왔는지 또는 누구에게 전달되는지를 식별하기 쉽게 합니다. 다음과 같은 상세 단계의 코드를 참고하여 이메일 주소에 표시 이름을 추가하십시오:

  1. 파일을 사용하여 이메일 메시지를 로드합니다: MailMessage.Load 메서드.
  2. 다음 방법으로 이메일 발신자를 설정합니다: From 새로운 를 생성하여 eml 객체의 속성을 MailAddress 보낸 사람의 이메일 주소와 표시 이름을 포함하는 객체.
  3. 다음 방법으로 이메일에 수신자를 추가합니다: To eml 객체의 속성, 필요하다면 CC(Carbon Copy) 목록을 사용하여 추가 CC 속성, BCC(Blind Carbon Copy) 목록을 사용하여 Bcc 속성을 사용하고 호출합니다 Add 새로운 메서드와 함께 MailAddress 받는 사람의 이메일 주소와 표시 이름을 포함하는 객체.

Code sample:

// Load eml from file
var eml = MailMessage.Load(Data.Email/"test.eml");

eml.From = new MailAddress("TimothyFairfield@from.com", "Timothy Fairfield");

// A To address with a friendly name can also be specified like this
eml.To.Add(new MailAddress("kyle@to.com", "Kyle Huang"));

// Specify Cc and Bcc email address along with a friendly name
eml.CC.Add(new MailAddress("guangzhou@cc.com", "Guangzhou Team"));
eml.Bcc.Add(new MailAddress("ahaq@bcc.com", "Ammad ulHaq "));

추가 속성 설정

Aspose.Email를 사용하면 다음의 추가 속성을 사용할 수 있습니다: MailMessage 예시 클래스:

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

    // For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
    
    // Add by SMTP server in delivery emails
    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
    
    // Add by SMTP server in delivery emails
    Return-Path: <xyz@oikoscucine.it>
    
    // Add by SMTP server in delivery emails
    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
    From: "XYZ" <xyz@oikoscucine.it>
    To: <abc@aspose.com>
    Subject: For ABC
    
    // Date will set the Date field, outlook will show this as
    Date: Thu, 22 Feb 2007 20:58:51 +0300
    Message-ID: <01c756c4$41b554d0$6c822ecf@dishonestyinsufferably>
    MIME-Version: 1.0
    Content-Type: multipart/alternative;
    boundary="----=_NextPart_000_0006_01C7569A.58DF4CD0"
    X-Mailer: Microsoft Office Outlook, Build 11.0.5510
    X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106
    Thread-Index: Aca6Q:=ES0M(9-=(<.<1.<Q9@QE6CD==
    X-Read: 1
    
  • MailPriority 열거형- 이메일 메시지 전송 우선순위 수준을 지정합니다. 낮음, 보통, 높음 중 선택할 수 있으며, 우선순위는 전송 속도와 전달에 영향을 줍니다.

  • MailSensitivity 열거형 - 다섯 단계의 민감도를 지정합니다.

  • XMailer- 이메일 메시지를 만든 소프트웨어를 지정합니다.

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

var eml = new MailMessage("sender@gmail.com", "receiver@gmail.com", "Some subject", "Some body text")
{
    Date = DateTime.Now,
    Priority = MailPriority.High,
    Sensitivity = MailSensitivity.Normal,
    Xmailer = "Aspose.Email"
};

읽음 확인 요청

요청하기 위해 읽음 확인, Aspose.Email를 사용하십시오 DeliveryNotificationOptions 속성 MailMessage 클래스. 이 속성은 다음 값들을 포함합니다: DeliveryNotificationOptions 열거형.

다음 code sample을 참고하십시오:

// Create an Instance of MailMessage class
var eml = new MailMessage
{
    // Specify From, To, HtmlBody, DeliveryNotificationOptions field
    From = "sender@sender.com",
    To = "receiver@receiver.com",
    HtmlBody = "<html><body>This is the Html body</body></html>",
    DeliveryNotificationOptions = DeliveryNotificationOptions.OnSuccess
};

eml.Headers.Add("Return-Receipt-To", "sender@sender.com");
eml.Headers.Add("Disposition-Notification-To", "sender@sender.com");

// Create an instance of SmtpClient Class
var client = new SmtpClient
{
    // Specify your mailing host server, Username, Password and Port No
    Host = "smtp.server.com",
    Username = "Username",
    Password = "Password",
    Port = 25
};

try
{
    // Client.Send will send this message
    client.Send(eml);
    // Display ‘Message Sent’, only if message sent successfully
    Console.WriteLine(@"Message sent");
}
catch (Exception ex)
{
    System.Diagnostics.Trace.WriteLine(ex.ToString());
}

Note: 읽음 확인 요청이 항상 승인되지 않을 수 있는 이유는 다음과 같습니다:

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

이메일 헤더 사용자 정의

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

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

  • To: 수신자 주소는 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

이메일 헤더를 사용자 정의하려면 다음 code steps를 따라하십시오:

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

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

var eml = new MailMessage
{
    ReplyToList = "reply@reply.com",
    From = "sender@sender.com",
    To = "receiver1@receiver.com",
    CC = "receiver2@receiver.com",
    Bcc = "receiver3@receiver.com",
    Subject = "test mail",
    Date = new System.DateTime(2006, 3, 6),
    XMailer = "Aspose.Email"
};

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

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

특정 위치에 헤더 삽입

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

eml.Headers.Insert("Received", "Value");

사용자 지정 헤더 추가

이메일 헤더는 다음을 사용하여 지정할 수 있습니다. MailMessage 클래스. 이메일 메시지에 사용자 지정 헤더를 지정하려면 다음 코드 샘플을 참고하십시오:

eml.Headers.Add("secret-header", "mystery");

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

secret-header: mystery

서명된 메시지 만들기

Aspose.Email API는 인증서를 사용하여 서명된 메시지를 만들 수 있는 기능을 제공합니다. 해당 AttachSignature 메서드 MailMessage class는 메시지를 서명하여 저장하거나 다음을 사용해 전송할 수 있습니다 SmtpClient.

메시지 서명

다음 코드 스니펫은 메시지에 서명하는 방법을 보여줍니다.

분리된 인증서 옵션 사용

웹 기반 이메일 클라이언트는 서명된 메시지의 본문 내용을 표시하지 못할 수 있습니다. 이를 해결하려면 웹 기반 클라이언트에 보내기 전에 인증서를 분리하면 됩니다. 중첩된 메서드의 분리 플래그는 AttachSignature 이를 구현하는 데 사용할 수 있습니다. true로 설정하면 인증서가 이메일에서 분리됩니다. 웹 기반 클라이언트에서 서명된 메시지 본문을 보려면 다음을 생성해야 합니다 MailMessage 분리된 서명과 함께. 다음 코드 스니펫은 분리된 인증서 옵션을 사용하는 방법을 보여줍니다.