Microsoft 365: 電子メールの送信

私たちは、メール送信の重要性、そしてそれが今日のアプリケーションにおいて一般的なタスクであることを理解しています。Office 365 を使って仕事をしている多くの人から、Microsoft Graph API を使ってメールを送信する API が欲しいという要望がありました。Microsoft サーバーに接続し、ユーザー情報を取得するコマンドを導入するためには、OAuth 2.0 機能が必須条件でした。メール送信コマンドを皮切りに、今後もメール管理の機能を推し進めていけることを嬉しく思います。

HDI: メール: OAuth2を使って、Microsoftアカウントからメールを送信する

アカウントの接続

メールを作成する前に、OAuth2接続オブジェクトと Office 365オブジェクトを作成しておきましょう。

var $oAuth2: cs.NetKit.OAuth2Provider
var $office365 : cs.NetKit.Office365

$oAuth2:=cs.NetKit.OAuth2Provider.new($param)
$office365:=cs.NetKit.Office365.new($oAuth2;\
 New object("mailType"; "Microsoft"))

メールの準備

まず、メールオブジェクトを作成する必要があります。4D は現在、Microsoft Graph の メッセージリソースタイプ  をサポートしています。この記事のコード例と HDI は、この新しいオブジェクトを使っています。もちろん、JMAP形式のメールオブジェクトを使ってもかまいません。

メールの作成者を指定することから始めましょう。作成者は、接続ユーザーのメールアドレスでなければならないので、$office365.user.getCurrent() を使ってこの属性を自動で設定します:

$email:=New object
$email.from:=New object
$email.from.emailAddress:=New object
$email.from.emailAddress.address:=$office365.user.getCurrent().userPrincipalName

次に、異なるシンタックスを使って受信者を指定しましょう:

$addressTo:=New object
$addressTo.emailAddress:=New object
$addressTo.emailAddress.email:="address1@mail.com"

$addressCC:=New object
$addressCC.emailAddress:=New object
$addressCC.emailAddress.email:="address2@mail.com"
$addressCC.emailAddress.name:="Stephen"

// 宛先の指定
$email.toRecipients:=new collection($addressTo)
// CC の指定
$email.ccRecipients:=new collection($addressCC)

件名を追加しましょう:

$email.subject:="Hello world"

本文には 2つの種類を指定できます。

テキスト本文:

$email.body:=New object
$email.body.content:="Test content mail"
$email.body.contentType:="text"

HTML本文:

$email.body:=New object
$email.body.content:="<html><body><h1>Test content mail </h1></body></html>"
$email.body.contentType:="html"

また、下のように、メールに追加情報を設定できます:

  • 配信確認の設定
$email.isDeliveryReceiptRequested:=True
  • 開封確認の設定
$email.isReadReceiptRequested:=True
  • 重要度 (低・通常・高) の設定
$email.importance:="high"

その他の追加可能な設定に関しては ドキュメント を参照ください。

添付ファイルの作成

添付ファイルを追加するには、attachmentオブジェクトを作成します:

var $attachmentText : Text
$attachmentText:="Simple text attachement content"

var $attachment : Object
BASE64 ENCODE($attachmentText)
$attachment:=New object
$attachment["@odata.type"]:="#microsoft.graph.fileAttachment"
$attachment.contentId:=Generate UUID
$attachment.isInline:=False
$attachment.name:="attachment.txt"
$attachment.contentType:="text/plain"
$attachment.contentBytes:=$attachmentText
$attachment.size:=Length($attachmentText)

そして、次のようにメールに添付します:

$email.attachments:=New collection($attachment)

メールの送信

メールの準備ができたので、先ほど作成した $office365 オブジェクトの mail.send() 関数を使ってメールを送信します:

$status:=$office365.mail.send($email)

メールが送信できました!

この機能を HDI で実際に使ってみてください。詳細については ドキュメント を参照ください。

Fabrice Mainguené
- Product Owner -Fabrice Mainguenéは、2016年11月に4D Programチームに参加しました。プロダクトオーナーとして、彼はユーザーストーリーを書き、それを機能仕様に変換する役割を担っています。CNAMでコンピュータサイエンスの学士号を取得した後、FabriceはWindev開発者として小さなソフトウェア出版社に入社しました。その後、彼は産業および貿易分野のさまざまな企業で、Windev および Web 開発者として、また新機能の技術アドバイザーとして働きました。