メールの作成と管理

新しいメールメッセージの作成

この 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(ブラインド カーボン コピー)は、他の受信者に見えない受信者へメールを送信できる機能です。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 クラスです。メールは複数の本文を持つことができます。クラスには 2 種類のメール本文があります:

  • HTML 本文
  • テキスト本文

に加えて HtmlBody および TextBody、Aspose.Email にはメール本文に関連する他の 2 つの読み取り専用プロパティがあります:

  • IsBodyText: 本文がテキストかどうかをユーザーに知らせます。
  • IsBodyHtml:本文が HTML かプレーンテキストかをユーザーに示します。

本記事では、プレーンテキストまたは HTML 本文テキストの定義、代替テキストの設定、メール本文のエンコード方法を示します。

HTML 本文の設定

Html body はメッセージ本文の HTML コンテンツを指定するために使用されます。Html body は タグで囲む必要があります。以下のコードスニペットは HTML body の設定方法を示しています。

代替テキストの設定

使用する AlternateView クラスは、メールメッセージのコピーを異なる形式で指定するためのものです。たとえば、HTML でメッセージを送信する場合、HTML コンテンツを表示できないメールクライアント向けにプレーンテキスト版も提供したいことがあります。このクラスには 2 つのプロパティがあります。 linked_resources および base_uri、メールコンテンツ内の URL を解決するために使用されます。

  • LinkedResources は LinkedResources オブジェクトのコレクションです。レンダリング時に、メールコンテンツ内の URL はまず LinkedResources コレクション内各オブジェクトの Content Link の URL と照合され、解決されます。
  • BaseUri はメールリーダーが本文内の相対 URL を解決するため、また LinkedResources コレクション内の相対 Content Link URL を解決するために使用されます。

以下のコードスニペットは、代替テキストを設定する方法を示します。

MailMessage の機能

この MailMessage クラスはメールメッセージの内容を表します。このクラスのインスタンスは MailMessage クラスは、SMTP サーバーへ配信するメールメッセージを構築するために使用されます。 SmtpClient クラス。この記事では、使用方法を示します。 MailMessage クラス ユーティリティ機能は、以下のメール機能を制御します:

  • Date and time - を介して MailMessage クラス Date プロパティは、メールの日時を取得または設定します。
  • メッセージ優先度 -  MailPriority クラスはメール送信時の優先度レベルを指定します。低、標準、高のいずれかです。優先度は送信速度と配信に影響します。
  • メッセージ感度 -  MailSensitivity クラスは感度の 5 つのレベルを指定します。
  • 配信通知 - 配信通知は、送信者にメールが受信者の受信トレイに配信されたことを知らせます。

既定では、日付はメッセージが送信された実際の日付で、時刻は送信された時間で、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())

開封確認の要求

以下のプログラミングサンプルは、開封確認を要求する方法を示しています。 MailMessage クラス DeliveryNotificationOptions 列挙プロパティはメールの配達通知オプションを説明します。メール送信後に開封確認を要求するには、次の手順に従ってください:

  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 クラスで定義されており、通常の列挙体のように動作するシールドクラスです。

通常、メールヘッダーは以下のフィールドを含みます:

  • To: 受信者アドレスは To フィールドで指定できます。これらの受信者がメッセージの主要な対象です。受信者アドレスは複数指定可能です。
  • From: メッセージ送信者のメールアドレスを示すフィールドです。
  • 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

特定の位置にヘッダーを挿入

この Add メソッド HeadersCollection クラスはヘッダーをコレクションの末尾に挿入します。ただし、特定の位置にヘッダーを挿入する必要がある場合もあります。その場合、 Add メソッドでは役に立ちません。これを実現するには、以下を使用します 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