4Dにおけるメールの作成・送信・受信は Email
オブジェクトの操作よっておこなわれます。
transporter クラス関数を使ってメールを取得する際に、
Email
オブジェクトが作成されます。
- IMAP -
.getMail()
および.getMails()
関数は IMAPサーバーからメールを受信します。 - POP3 -
.getMail()
関数は POP3サーバーからメールを受信します。
また、新規かつ空の
Email
オブジェクトは SMTP .send()
関数を使って送信します。
MAIL Convert from MIME
および MAIL Convert to MIME
コマンドは、MIME コンテンツから Email
オブジェクトに、またはその逆の変換をおこなうのに使用できます。
Email オブジェクト
Email オブジェクトは次のプロパティを提供します:
4D は Email オブジェクトのフォーマットは JMAP specification に準拠します。
.attachments : Collection4D.MailAttachment オブジェクトのコレクション |
.bcc : Text .bcc : Object .bcc : Collection 非表示 (BCC: Blind Carbon Copy) のメール受信者 アドレス |
.bodyStructure : Object (任意) メッセージ本文の完全なMIME ストラクチャーである EmailBodyPart オブジェクト |
.bodyValues : ObjectbodyStructure の <partID> 毎にオブジェクトを格納している EmailBodyValue オブジェクト |
.cc : Text .cc : Object .cc : Collection 追加 (CC: Carbon Copy) のメール受信者 アドレス |
.comments : Text 追加のコメントのヘッダー |
.from : Text .from : Object .from : Collection メールの送信元 アドレス |
.headers : Collection メッセージ内で現れる順番どおりの EmailHeader オブジェクトのコレクション |
.htmlBody : Text (任意、SMTPのみ) HTML形式のメールメッセージ (デフォルトの文字セットは UTF-8) |
.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 (任意、SMTPのみ) 標準テキスト形式のメールメッセージ (デフォルトの文字セットは UTF-8) |
.to : Text .to : Object .to : Collection メールのメインの受信者 アドレス |
メールアドレス
メールアドレスを格納するプロパティ (from
, cc
, bcc
, to
, sender
, replyTo
) はすべて、テキスト・オブジェクト・コレクション型の値を受け付けます。
テキスト
- 単一のメールアドレス: "somebody@domain.com"
- 単一の表示名+メールアドレス: "Somebody somebody@domain.com"
- 複数のメールアドレス: "Somebody somebody@domain.com,me@home.org"
オブジェクト
2つのプロパティを持つオブジェクト:
プロパティ | 型 | 説明 |
---|---|---|
name | Text | 表示名 (null も可能) |
Text | メールアドレス |
コレクション
アドレスオブジェクトのコレクション
メール本文の扱い
textBody
および htmlBody
はどちらもSMTP.send() でのみ使用され、これによって単純なメールの送信が可能になります。 プロパティが両方ともある場合、MIME content-type の multipart/alternative が使用されます。 メールクライアントは multipart/alternative パートを認識し、必要に応じてテキスト部または html 部を表示します。
Email オブジェクト が MIME ドキュメントからビルドされた場合 (例: MAIL Convert from MIME
コマンドで生成されたとき) は、bodyStructure
および bodyValues
が SMTP に使用されます。 この場合、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
オブジェクトには、次のプロパティが格納されています:
プロパティ | 型 | 値 |
---|---|---|
partID | Text | メールのパートを固有に識別する ID |
type | Text | (必須) パートの Content-Type ヘッダーフィールドの値 |
charset | Text | Content-Type ヘッダーフィールドの Charset の値 |
encoding | Text | isEncodingProblem=true の場合、Content-Transfer-Encoding の値が追加されます (デフォルトでは未定義) |
disposition | Text | パートの Content-Disposition ヘッダーフィールドの値 |
language | Text の Collection | パートの Content-Language ヘッダーフィールドの、RFC3282 で定義されている言語タグの一覧 (あれば) |
location | Text | パートの Content-Location ヘッダーフィールドの、RFC2557 で定義されている URI (あれば) |
subParts | Object の Collection | それぞれの子の本文パート (EmailBodyPart オブジェクトのコレクション) |
headers | Object の Collection | パート内の全ヘッダーフィールドの、メッセージ内 で出現する順の一覧 (EmailHeader オブジェクトのコレクション。headers プロパティ参照) |
.bodyValues
.bodyValues : Object
説明
.bodyValues
プロパティは、
bodyStructure
の <partID> 毎にオブジェクトを格納している EmailBodyValue オブジェクトを格納します (任意)。 メール本文の扱い を参照ください。
.bodyValues
オブジェクトには、次のプロパティが格納されています:
プロパティ | 型 | 値 |
---|---|---|
partID.value | text | 本文パートの値 |
partID.isEncodingProblem | boolean | 文字セットをデコーディング中に、不正なフォーマットのセクション、未知の文字セット、あるいは未知の 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
プロパティは無視されます。
ヘッダーコレクションの各オブジェクトには、次のプロパティが格納されることがあります:
プロパティ | 型 | 値 |
---|---|---|
[].name | text | (必須) RFC#5322 で定義されているヘッダーフィールド名。 null または未定義の場合には、ヘッダーフィールドは MIME ヘッダーに追加されません。 |
[].value | text | RFC#5322 で定義されているヘッダーフィールド値。 |
.htmlBody
.htmlBody : Text
説明
.htmlBody
プロパティは、(任意、SMTPのみ) HTML形式のメールメッセージ (デフォルトの文字セットは UTF-8) を格納します。 メール本文の扱い を参照ください。
.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
プロパティは、(任意、SMTPのみ) 標準テキスト形式のメールメッセージ (デフォルトの文字セットは UTF-8) を格納します。 メ ール本文の扱い を参照ください。
.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
引数 | 型 | 説明 | |
---|---|---|---|
mime | Blob, 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
引数 | 型 | 説明 | |
---|---|---|---|
Object | -> | Email オブジェクト | |
options | Object | -> | 文字セットとエンコーディングのメールオプション |
戻り値 | Text | <- | MIME に変換された Emailオブジェクト |
説明
MAIL Convert to MIME
コマンドは、Emailオブジェクトを MIMEテキストへと変換します。 このコマンドは、Email オブジェクトを送信する前に整形する目的でSMTP_transporter.send() コマンドによって内部的に呼び出されます。 また、オブジェクトの MIME フォーマットを解析するためにも使用されます。
mail には、変換するメールのコンテンツとストラクチャーの詳細を渡します。 この情報には、メールアドレス (送信者と受信者)、メッセージそのもの、メッセージの表示タイプなどが含まれます。
4D は Email オブジェクトのフォーマットは JMAP specification に準拠します。
options 引数を渡すと、メールに対して特定の文字セットとエンコーディング設定を指定することができます。 次のプロパティを利用することができます:
プロパティ | 型 | 説明 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
headerCharset | Text | メールの以下の部分で使用される文字セットとエンコーディング: 件名、添付ファイル名、メール名の属性。 とりうる値:
| |||||||||||||||
bodyCharset | Text | メールの HTML およびテキスト本文コンテンツで使用される文字セットとエンコーディング。 取りうる値: headerCharset と同じ(上記参照) |
options 引数が省略された場合、ヘッダーおよび本文においては mail mode UTF8 設定が使用されます。
例題
var $mail: Object
var $mime: Text
$mail:=New object
// Creation of a mail
$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"))
// transform the mail object in MIME
$mime:=MAIL Convert to MIME($mail)
// Contents of $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--