私たちは、メール送信の重要性、そしてそれが今日のアプリケーションにおいて一般的なタスクであることを理解しています。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 で実際に使ってみてください。詳細については ドキュメント を参照ください。