メインコンテンツまでスキップ
バージョン: 20

Email

4Dにおけるメールの作成・送信・受信は Email オブジェクトの操作よっておこなわれます。

transporter クラス関数を使ってメールを取得する際に、 Email オブジェクトが作成されます。

  • IMAP - .getMail() および .getMails() 関数は IMAPサーバーからメールを受信します。
  • POP3 - .getMail() 関数は POP3サーバーからメールを受信します。

また、新規かつ空の Email オブジェクトを作成してから、Email オブジェクトプロパティ を設定していくことも可能です。

Email オブジェクトは SMTP .send() 関数を使って送信します。

MAIL Convert from MIME および MAIL Convert to MIME コマンドは、MIME コンテンツから Email オブジェクトに、またはその逆の変換をおこなうのに使用できます。

Email オブジェクト

Email オブジェクトは次のプロパティを提供します:

4D は Email オブジェクトのフォーマットは JMAP specification に準拠します。

.attachments : Collection    4D.MailAttachment オブジェクトのコレクションを格納します
.bcc : Text
.bcc : Object
.bcc : Collection
    非表示 (BCC: Blind Carbon Copy) のメール受信者 アドレス を格納します
.bodyStructure : Object    メッセージ本文の完全な MIME ストラクチャーである EmailBodyPart オブジェクトを格納します (任意)
.bodyValues : Object    bodyStructure の <partID> 毎にオブジェクトを格納している EmailBodyValue オブジェクトを格納します (任意)。
.cc : Text
.cc : Object
.cc : Collection
    追加 (CC: Carbon Copy) のメール受信者 アドレス を格納します
.comments : Text    追加のコメントのヘッダーを格納します
.from : Text
.from : Object
.from : Collection
    メールの送信元 アドレス を格納します
.headers : Collection    メッセージ内で現れる順番どおりの EmailHeader オブジェクトのコレクションを格納します
.htmlBody : Text    HTML形式のメールメッセージ (デフォルトの文字セットは UTF-8) を格納します (任意、SMTPのみ)
.id : Text    IMAP サーバーからの固有ID を格納します
.inReplyTo : Text    カレントメッセージが返信している、元のメッセージのメッセージID を格納します
.keywords : Object    各プロパティ名がキーワードであり、各値が true であるキーワードセットのオブジェクトを格納します
.messageId : Text    メッセージ識別ヘッダー ("message-id") を格納します
.receivedAt : Text    IMAPサーバーにメールが到着した時間の、ISO 8601 UTC フォーマットでのタイムスタンプ (例: 2020-09-13T16:11:53Z) を格納します
.references : Collection    返信チェーン内メッセージの、全メッセージID のコレクションを格納します
.replyTo : Text
.replyTo : Object
.replyTo : Collection
    返信用 アドレス を格納します
.sendAt : Text    メールのタイムスタンプ (ISO 8601 UTCフォーマット) を格納します
.sender : Text
.sender : Object
.sender : Collection
    メールのソース アドレス を格納します
.size : Integer    IMAPサーバーから返された Email オブジェクトのサイズ (バイト単位) を格納します
.subject : Text    メールの件名を格納します
.textBody : Text    標準テキスト形式のメールメッセージ (デフォルトの文字セットは UTF-8) を格納します (任意、SMTPのみ)
.to : Text
.to : Object
.to : Collection
    メールのメインの受信者 アドレス を格納します

メールアドレス

メールアドレスを格納するプロパティ (from, cc, bcc, to, sender, replyTo) はすべて、テキスト・オブジェクト・コレクション型の値を受け付けます。

テキスト

オブジェクト

2つのプロパティを持つオブジェクト:

プロパティ説明
nameText表示名 (null も可能)
emailTextメールアドレス

コレクション

アドレスオブジェクトのコレクション

メール本文の扱い

textBody および htmlBody はどちらもSMTP.send() でのみ使用され、これによって単純なメールの送信が可能になります。 プロパティが両方ともある場合、MIME content-type の multipart/alternative が使用されます。 メールクライアントは multipart/alternative パートを認識し、必要に応じてテキスト部または html 部を表示します。

Email オブジェクト が MIME ドキュメントからビルドされた場合 (例: MAIL Convert from MIME コマンドで生成されたとき) は、bodyStructure および bodyValuesSMTP に使用されます。 この場合、bodyStructure および bodyValues プロパティは両方一緒に渡される必要があり、textBody および htmlBody の使用は推奨されません。

bodyStructure および bodyValues オブジェクトの例

"bodyStructure": {
"type": "multipart/mixed",
"subParts": [
{
"partId": "p0001",
"type": "text/plain"
},
{
"partId": "p0002",
"type": "text/html"
}
]
},
"bodyValues": {
"p0001": {
"value": "I have the most brilliant plan. Let me tell you all about it."
},
"p0002": {
"value": "<!DOCTYPE html><html><head><title></title><style type=\"text/css\">div{font-size:16px}</style></head><body><div>I have the most brilliant plan. Let me tell you all about it.</div></body></html>"
}
}

.attachments

.attachments : Collection

説明

.attachments プロパティは、 4D.MailAttachment オブジェクトのコレクションを格納します。

MailAttachment オブジェクトは MAIL New attachment コマンドによって定義されます。 MailAttachment オブジェクトは特有の プロパティや関数 を持ちます。

.bcc

.bcc : Text
.bcc : Object
.bcc : Collection

説明

.bcc プロパティは、 非表示 (BCC: Blind Carbon Copy) のメール受信者 アドレス を格納します。

.bodyStructure

.bodyStructure : Object

説明

.bodyStructure プロパティは、 メッセージ本文の完全な MIME ストラクチャーである EmailBodyPart オブジェクトを格納します (任意)。 メール本文の扱い を参照ください。

.bodyStructure オブジェクトには、次のプロパティが格納されています:

プロパティ
partIDTextメールのパートを固有に識別する ID
typeText(必須) パートの Content-Type ヘッダーフィールドの値
charsetTextContent-Type ヘッダーフィールドの Charset の値
encodingTextisEncodingProblem=true の場合、Content-Transfer-Encoding の値が追加されます (デフォルトでは未定義)
dispositionTextパートの Content-Disposition ヘッダーフィールドの値
languageText の Collectionパートの Content-Language ヘッダーフィールドの、RFC3282 で定義されている言語タグの一覧 (あれば)
locationTextパートの Content-Location ヘッダーフィールドの、RFC2557 で定義されている URI (あれば)
subPartsObject の Collectionそれぞれの子の本文パート (EmailBodyPart オブジェクトのコレクション)
headersObject の Collectionパート内の全ヘッダーフィールドの、メッセージ内で出現する順の一覧 (EmailHeader オブジェクトのコレクション。headers プロパティ参照)

.bodyValues

.bodyValues : Object

説明

.bodyValues プロパティは、 bodyStructure の <partID> 毎にオブジェクトを格納している EmailBodyValue オブジェクトを格納します (任意)。。 メール本文の扱い を参照ください。

.bodyValues オブジェクトには、次のプロパティが格納されています:

プロパティ
partID.valuetext本文パートの値
partID.isEncodingProblemboolean文字セットをデコーディング中に、不正なフォーマットのセクション、未知の文字セット、あるいは未知の content-transfer-encoding が見つかった場合には true。 デフォルトは false。

.cc

.cc : Text
.cc : Object
.cc : Collection

説明

.cc プロパティは、 追加 (CC: Carbon Copy) のメール受信者 アドレス を格納します。

.comments

.comments : Text

説明

.comments プロパティは、 追加のコメントのヘッダーを格納します。

コメントはメッセージのヘッダーセクション内にのみ表示されます (つまり本文部分には触れないということです)。

特定のフォーマット条件についての詳細は、RFC#5322 を参照ください。

.from

.from : Text
.from : Object
.from : Collection

説明

.from プロパティは、 メールの送信元 アドレス を格納します。

送信されるメールには、それぞれ sender および from アドレスの両方がついています:

  • sender ドメインは、受信側のメールサーバーがセッションを開いたときに受け取るドメインです。
  • from アドレスは、受信者から見えるアドレスです。

混乱を避けるため、sender および from アドレスには同じアドレスを使用することが推奨されます。

.headers

.headers : Collection

説明

.headers プロパティは、 メッセージ内で現れる順番どおりの EmailHeader オブジェクトのコレクションを格納します。 これによってユーザーは拡張された (登録された) ヘッダーや、ユーザー定義された (登録されていない、"X" で始まる) ヘッダーを追加することができます。

メールレベルですでにプロパティとして設定されている "from" または "cc" などのヘッダーを EmailHeader オブジェクトプロパティが定義している場合、EmailHeader プロパティは無視されます。

ヘッダーコレクションの各オブジェクトには、次のプロパティが格納されることがあります:

プロパティ
[].nametext(必須) RFC#5322 で定義されているヘッダーフィールド名。 null または未定義の場合には、ヘッダーフィールドは MIME ヘッダーに追加されません。
[].valuetextRFC#5322 で定義されているヘッダーフィールド値。

.htmlBody

.htmlBody : Text

説明

.htmlBody プロパティは、 HTML形式のメールメッセージ (デフォルトの文字セットは UTF-8) を格納します (任意、SMTPのみ)。 メール本文の扱い を参照ください。

.id

.id : Text

説明

IMAP transporter のみ。

.id プロパティは、 IMAP サーバーからの固有ID を格納します。

.inReplyTo

.inReplyTo : Text

説明

.inReplyTo プロパティは、 カレントメッセージが返信している、元のメッセージのメッセージID を格納します。

特定のフォーマット条件についての詳細は、RFC#5322 を参照ください。

.keywords

.keywords : Object

説明

.keywords プロパティは、 各プロパティ名がキーワードであり、各値が true であるキーワードセットのオブジェクトを格納します。

このプロパティは "keywords" ヘッダーです (RFC#4021 参照)。

プロパティ
.<keyword>boolean設定するキーワード (値は true でなければなりません)。

予約されたキーワード:

  • $draft - メッセージが下書きであることを表します
  • $seen - メッセージが読まれたことを表します
  • $flagged - メッセージが注視されるべきであることを表します (例: 至急のメール)
  • $answered - メッセージに返信がされたことを表します
  • $deleted - メッセージが消去されることを表します

例題

 $mail.keywords["$flagged"]:=True
$mail.keywords["4d"]:=True

.messageId

.messageId : Text

説明

.messageId プロパティは、 メッセージ識別ヘッダー ("message-id") を格納します。

通常は、"lettersOrNumbers@domainname" の形式、たとえば "abcdef.123456@4d.com" などです。 この固有ID は特にフォーラムや公開メーリングリストで使用されています。 一般的に、メールサーバーは送信するメッセージにこのヘッダーを自動的に追加します。

.receivedAt

.receivedAt : Text

説明

IMAP transporter のみ。

.receivedAt プロパティは、 IMAPサーバーにメールが到着した時間の、ISO 8601 UTC フォーマットでのタイムスタンプ (例: 2020-09-13T16:11:53Z) を格納します。

.references

.references : Collection

説明

.references プロパティは、 返信チェーン内メッセージの、全メッセージID のコレクションを格納します。

特定のフォーマット条件についての詳細は、RFC#5322 を参照ください。

.replyTo

.replyTo : Text
.replyTo : Object
.replyTo : Collection

説明

.replyTo プロパティは、 返信用 アドレス を格納します。

.sendAt

.sendAt : Text

説明

.sendAt プロパティは、 メールのタイムスタンプ (ISO 8601 UTCフォーマット) を格納します。

.sender

.sender : Text
.sender : Object
.sender : Collection

説明

.sender プロパティは、 メールのソース アドレス を格納します。

送信されるメールには、それぞれ sender および from アドレスの両方がついています:

  • sender ドメインは、受信側のメールサーバーがセッションを開いたときに受け取るドメインです。
  • from アドレスは、受信者から見えるアドレスです。

混乱を避けるため、sender および from アドレスには同じアドレスを使用することが推奨されます。

.size

.size : Integer

説明

IMAP transporter のみ。

.size プロパティは、 IMAPサーバーから返された Email オブジェクトのサイズ (バイト単位) を格納します。

.subject

.subject : Text

説明

.subject プロパティは、 メールの件名を格納します。

.textBody

.textBody : Text

説明

.textBody プロパティは、 標準テキスト形式のメールメッセージ (デフォルトの文字セットは UTF-8) を格納します (任意、SMTPのみ)。 メール本文の扱い を参照ください。

.to

.to : Text
.to : Object
.to : Collection

説明

.to プロパティは、 メールのメインの受信者 アドレス を格納します。

MAIL Convert from MIME

履歴
リリース内容
18追加

MAIL Convert from MIME( mime : Blob ) : Object
MAIL Convert from MIME( mime : Text ) : Object

引数説明
mimeBlob, Text->MIME形式のメール
戻り値Object<-Email オブジェクト

|

説明

MAIL Convert from MIME コマンドは、 MIMEドキュメントを有効な Emailオブジェクトへと変換します。

戻り値の Email オブジェクトのフォーマットは JMAP specification に準拠します。

mime には、変換する有効な MIME ドキュメントを渡します。 これはどのメールサーバーまたはアプリケーションから提供されたものでも可能です。 mime 引数として、BLOB またはテキストを渡すことができます。 MIME がファイルから渡された場合、文字セットと改行コード変換に関する問題を避けるため、BLOB型の引数を使用することが推奨されます。

返されるオブジェクト

Email オブジェクト。

例題 1

テキストドキュメントとして保存された MIME のメールのテンプレートを読み込み、メールを送信します。

var $mime: Blob
var $mail;$server;$transporter;$status: Object

$mime:=File("/PACKAGE/Mails/templateMail.txt").getContent())

$mail:=MAIL Convert from MIME($mime)
$mail.to:="smith@mail.com"
$mail.subject:="Hello world"

$server:=New object
$server.host:="smtp.gmail.com"
$server.port:=465
$server.user:="test@gmail.com"
$server.password:="XXXX"

$transporter:=SMTP New transporter($server)
$status:=$transporter.send($mail)

例題 2

この例題では、ピクチャーが含まれた 4D Write Pro ドキュメントを直接送信します:

var $mime: Blob
var $email;$server;$transporter;$status: Object

// 4D Write Pro ドキュメントを MIME に書き出します
WP EXPORT VARIABLE(WParea;$mime;wk mime html)

// 4D Write Pro MIME 変数をメールオブジェクトに変換します
$email:=MAIL Convert from MIME($mime)

// Email オブジェクトのヘッダーを設定します
$email.subject:="4D Write Pro HTML body"
$email.from:="YourEmail@gmail.com"
$email.to:="RecipientEmail@mail.com"

$server:=New object
$server.host:="smtp.gmail.com"
$server.port:=465
$server.user:="YourEmail@gmail.com"
$server.password:="XXXX"

$transporter:=SMTP New transporter($server)
$status:=$transporter.send($email)

MAIL Convert to MIME

履歴
リリース内容
17 R4追加
17 R5変更

MAIL Convert to MIME( mail : Object { ; options : Object } ) : Text

引数説明
mailObject->Email オブジェクト
optionsObject->文字セットとエンコーディングのメールオプション
戻り値Text<-MIME に変換された Emailオブジェクト

|

説明

MAIL Convert to MIME コマンドは、 Emailオブジェクトを MIMEテキストへと変換します。 このコマンドは、Email オブジェクトを送信する前に整形する目的でSMTP_transporter.send() コマンドによって内部的に呼び出されます。 また、オブジェクトの MIME フォーマットを解析するためにも使用されます。

mail には、変換するメールのコンテンツとストラクチャーの詳細を渡します。 この情報には、メールアドレス (送信者と受信者)、メッセージそのもの、メッセージの表示タイプなどが含まれます。

Email オブジェクトのフォーマットは JMAP specification に準拠します。

options 引数を渡すと、メールに対して特定の文字セットとエンコーディング設定を指定することができます。 次のプロパティを利用することができます:

プロパティ説明
headerCharsetTextメールの以下の部分で使用される文字セットとエンコーディング: 件名、添付ファイル名、メール名の属性。 とりうる値:
定数説明
mail mode ISO2022JPUS-ASCII_ISO-2022-JP_UTF8_QP
  • headerCharset: 可能なら US-ASCII 、次に可能なら Japanese (ISO-2022-JP) & Quoted-printable 、それも不可なら UTF-8 & Quoted-printable
  • bodyCharset: 可能なら US-ASCII、次に可能なら Japanese (ISO-2022-JP) & 7-bit、それも不可なら UTF-8 & Quoted-printable
mail mode ISO88591ISO-8859-1
  • headerCharset: ISO-8859-1 & Quoted-printable
  • bodyCharset: ISO-8859-1 & 8-bit
mail mode UTF8US-ASCII_UTF8_QPheaderCharset & bodyCharset: 可能なら US-ASCII、それが不可なら UTF-8 & Quoted-printable (デフォルト値)
mail mode UTF8 in base64US-ASCII_UTF8_B64headerCharset & bodyCharset: 可能な場合は US-ASCII、それ以外は UTF-8 & base64
bodyCharsetTextメールの HTML およびテキスト本文コンテンツで使用される文字セットとエンコーディング。 取りうる値: headerCharset と同じ(上記参照)

options 引数が省略された場合、ヘッダーおよび本文においては mail mode UTF8 設定が使用されます。

例題

var $mail: Object
var $mime: Text
$mail:=New object

// メール作成
$mail.from:="tsales@massmarket.com"
$mail.subject:="Terrific Sale! This week only!"
$mail.textBody:="Text format email"
$mail.htmlBody:="<html><body>HTML format email</body></html>"
$mail.to:=New collection
$mail.to.push(New object ("email";"noreply@4d.com"))
$mail.to.push(New object ("email";"test@4d.com"))

// Email オブジェクトを MIME に変換します
$mime:=MAIL Convert to MIME($mail)

// $mime の中身:
// MIME-Version: 1.0
// Date: Thu, 11 Oct 2018 15:42:25 GMT
// Message-ID: <7CA5D25B2B5E0047A36F2E8CB30362E2>
// Sender: tsales@massmarket.com
// From: tsales@massmarket.com
// To: noreply@4d.com
// To: test@4d.com
// Content-Type: multipart/alternative; boundary="E0AE5773D5E95245BBBD80DD0687E218"
// Subject: Terrific Sale! This week only!
//
// --E0AE5773D5E95245BBBD80DD0687E218
// Content-Type: text/plain; charset="UTF-8"
// Content-Transfer-Encoding: quoted-printable
//
// Text format email
// --E0AE5773D5E95245BBBD80DD0687E218
// Content-Type: text/html; charset="UTF-8"
// Content-Transfer-Encoding: quoted-printable
//
// <html><body>HTML format email</body></html>
// --E0AE5773D5E95245BBBD80DD0687E218--