C#을 사용하여 MIME 메시지 만들기

이메일을 보낼 때 이미지, 오디오 및 비디오와 같은 멀티미디어 콘텐츠를 전송해야 할 수도 있습니다. 이때 MIME (다목적 인터넷 메일 확장) 메시지가 필요합니다. 이 기사에서는 C#에서 프로그래밍 방식으로 EML 메시지를 만드는 방법을 살펴봅니다. 기사를 마치면 MIME 메시지를 만들고, 이메일의 HTML 콘텐츠에 이미지를 추가하고, 이메일을 EML 형식으로 저장하는 방법에 대한 이해를 하게 될 것입니다.

.NET API로 MIME 메시지 만들기

첫 번째 MIME 메시지를 만들기 전에, 첫 번째 단계는 프로젝트에 Aspose.Email for .NET을 설치하는 것입니다. 이는 C# 개발자를 위한 강력한 라이브러리로, MIME 메시지를 프로그래밍 방식으로 생성하는 기능을 포함하여 이메일 메시지 작업을 위한 포괄적인 도구 세트를 제공합니다. 이 라이브러리는 개발자가 첨부 파일, 본문, 헤더, 인코딩 등과 같은 MIME 메시지의 다양한 측면을 쉽게 조작할 수 있도록 도와줍니다. 라이브러리는 NuGet을 통해 설치하거나 DLL을 다운로드하여 사용할 수 있습니다.

PM> Install-Package Aspose.Email

EML 파일을 처음부터 만들기

API가 설치되었으니, 이제 처음부터 eml 파일을 만드는 시간입니다. 가장 간단한 방법 중 하나는 Aspose.Email의 MailMessage 클래스를 사용하는 것입니다. MailMessage 클래스는 발신자, 수신자, 제목, 본문, 첨부 파일, 헤더 및 이메일의 기타 세부 정보를 설정할 수 있는 다양한 속성과 메서드를 가진 이메일 메시지 객체를 생성할 수 있게 해줍니다.

다음 단계와 코드 스니펫은 처음부터 EML을 만드는 데 도움이 될 것입니다:

  • 기본 생성자를 사용하여 새 MailMessage 객체를 생성합니다.
  • 필요에 따라 MailMessage 객체의 속성을 설정합니다.
  • Save 메서드를 사용하여 MailMessage 객체를 EML 파일로 저장합니다.
// Create a new MailMessage object
var eml = new MailMessage()
{
// Set the sender address
From = "sender@sender.com",
// Add a recipient address
To = "receiver@receiver.com",
// Set the subject
Subject = "New message",
// Set the HTML body
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>"
};
// Save the MailMessage object to an EML file
eml.Save("message.eml", SaveOptions.DefaultEml);

MailMessage 클래스의 Save 메서드는 두 개의 매개변수를 사용합니다: 파일 경로와 저장 옵션. 저장 옵션은 출력 파일의 형식을 지정합니다.

HTML 콘텐츠에 이미지 추가하기

이 기능을 수행하려면 HTML 본문에 이미지를 포함해야 합니다. 이를 위해 “img” 태그를 사용할 수 있습니다.

다음 코드 스니펫은 메시지의 HTML 본문에 이미지를 추가하는 방법을 보여줍니다.

  • HTML 본문에는 소스 속성이 cid:image1로 설정된 이미지 태그가 포함되어 있습니다.
  • AlternateView 클래스는 포함된 이미지가 있는 메시지 본문의 대체 보기를 가져오는 데 사용됩니다.
  • LinkedResource 클래스는 포함된 이미지를 나타내며, 그 콘텐츠 ID는 image1로 설정됩니다.
  • 마지막으로 대체 보기가 메시지의 대체 보기 컬렉션에 추가됩니다.
// Create a new instance of MailMessage class
var eml = new MailMessage
{
// Set sender and recipient
From = new MailAddress("sender@domain.com"),
To = new MailAddress("recipient@domain.com"),
// Set subject and body
Subject = "New message with image",
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>
<img src='cid:myImage' />
</body>
</html>"
};
var alternateView = eml.AlternateViews.GetView(MediaTypeNames.Text.Html);
var imageResource = new LinkedResource(path + "image.png", MediaTypeNames.Image.Png)
{
ContentId = "image1"
};
alternateView.LinkedResources.Add(imageResource);
eml.Save("message_with_image.eml", SaveOptions.DefaultEml);

HTML 파일에서 EML 파일 만들기

이 작업을 수행하는 한 가지 방법은 HTML 파일로 시작하여 EML로 변환하는 것입니다. 이는 이메일 메시지로 보낼 HTML이 있는 경우 유용할 수 있습니다. 이 목적을 위해 HTML 콘텐츠가 필요합니다. 이 파일을 content.html이라고 부르겠습니다. 다음은 그 예입니다:

<!DOCTYPE html>
<html>
<head>
	<title>내 이메일</title>
</head>
<body>
	<h1>안녕하세요,</h1>
	<img src="logo.png" alt="로고">
	<p>이것은 HTML로 생성된 첫 번째 이메일입니다.</p>
</body>
</html>

또한, HTML에 포함된 모든 이미지를 미리 준비하고 HTML 파일에서 올바른 경로를 지정해야 합니다.

이제 content.html에서 HTML 본문을 설정하여 MailMessage를 쉽게 생성할 수 있습니다.

  • 먼저 새 HtmlLoadOptions 객체를 생성합니다.
  • PathToResources에 이미지 경로를 포함하는 문자열을 설정합니다.
  • EML에 일반 텍스트가 포함된 AlternateView를 포함하려면 ShouldAddPlainTextView 속성을 true로 설정합니다.
  • HTML 파일을 로드하고 HtmlLoadOptions 객체를 매개변수로 전달하여 MailMessage 객체를 생성합니다.
  • 추가 메시지 속성을 설정합니다.
  • 마지막으로 Save 메서드를 사용하여 MailMessage 객체를 EML 파일로 저장합니다.
var htmlloadOptions = new HtmlLoadOptions
{
PathToResources = path,
ShouldAddPlainTextView = true
};
var eml = MailMessage.Load(path + @"content.html", htmlloadOptions);
// Set sender and recipient
eml.From = new MailAddress("sender@domain.com");
eml.To = new MailAddress("recipient@domain.com");
// Set subject
eml.Subject = "New message from HTML";
// Save the message in EML format
eml.Save("message_from_html.eml", SaveOptions.DefaultEml);

Outlook에서 HTML 메시지 보기 개선을 위한 팁

Outlook에서 HTML 메시지를 보려면 코드가 Outlook 렌더링 엔진과 호환되는지 확인해야 합니다. 이는 대부분의 웹 브라우저와 다릅니다. Outlook에서 HTML 이메일에 영향을 미칠 수 있는 일반적인 문제는 다음과 같습니다:

  • Outlook은 배경 이미지, 플로트, 여백, 패딩 등의 일부 태그 및 CSS 속성을 지원하지 않습니다. 원하는 레이아웃과 형식을 달성하기 위해 인라인 스타일, 테이블 또는 조건부 주석을 사용해야 할 수 있습니다.
  • Outlook은 요소 간에 추가 공간이나 줄을 추가하거나 일부 요소를 완전히 제거할 수 있습니다. 이를 방지하기 위해 비분리 공간, 제로 너비 공간 또는 빈 테이블 셀을 사용할 수 있습니다.
  • Outlook은 HTML 파일의 인코딩 또는 문자 집합을 변경하여 일부 문자가 잘못 표시될 수 있습니다. 메타 태그를 사용하여 인코딩 및 문자 집합을 지정해야 할 수 있습니다.

결론

이 블로그 게시물에서는 Aspose.Email을 사용하여 C#에서 프로그래밍 방식으로 MIME 메시지를 생성하는 방법을 배웠습니다. 단계별 튜토리얼과 코드 샘플에서는 처음부터 EML 파일을 생성하고 HTML 파일에서 EML 파일을 만들고 이메일 메시지의 HTML 콘텐츠에 이미지를 추가하는 방법을 보여주었습니다. 또한 Outlook에서 HTML 메시지 보기 개선을 위한 유용한 팁을 제공했습니다.

  • Aspose.Email for .NET에 대해 더 알아보고 무료로 시도해 보십시오.
  • 문서에서 Aspose.Email의 더 많은 기능과 기능을 확인할 수도 있습니다.
  • 질문은 포럼에서 환영합니다.

추가 정보