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

MailAttachment

Attachment オブジェクトによって、Email オブジェクト内のファイルを参照することができます。 MailAttachment オブジェクトは MAIL New attachment コマンドによって作成されます。

Attachment オブジェクト

Attachment オブジェクトは、次の読み取り専用プロパティや、関数を提供します:

.cid : Text     添付ファイルの ID を格納します
.disposition : Text    Content-Disposition ヘッダーの値を格納します
.getContent() : Blob    添付オブジェクトの中身を BLOB として返します
.name : Text    添付ファイルの名前と拡張子を格納します
.path : Text    添付ファイルの POSIX パス (存在すれば) を格納します
.platformPath : Text    カレントプラットフォームのシンタックスで表現された添付ファイルのパスを返します
.type : Text    添付ファイルの content-type を格納します

MAIL New attachment

MAIL New attachment( path : Text { ; name : Text {; cid : Text{ ; type : Text { ; disposition :Text } } } } ) : 4D.MailAttachment
MAIL New attachment( blob : Blob { ; name : Text {; cid : Text{ ; type : Text { ; disposition :Text } } } } ) : 4D.MailAttachment

引数説明
pathText->添付ファイルのパス
blobBLOB->添付を格納した BLOB
nameText->メールクライアントが添付を指定するのに使用する名前 + 拡張子
cidText->添付の ID (HTMLメッセージのみ)、あるいは cid が不要な場合は "" (空の文字列)
typeText->content-type ヘッダーの値
dispositionText->content-disposition ヘッダーの値: "inline" あるいは "attachment"
戻り値4D.MailAttachment<-Attachment オブジェクト

|

説明

MAIL New attachment コマンドは、 Email オブジェクト に追加できる添付オブジェクトを作成します。

添付を定義するには、パスまたは Blob を引数として渡します。

  • path: システムシンタックスで表現された添付ファイルのパスを テキスト 値で渡します。 完全なパス名、または単純なファイル名を渡すことができます (ファイル名のみの場合、4D はプロジェクトファイルと同じディレクトリ内を検索します)。

  • blob: 添付そのものを BLOB で渡します。

任意の name 引数として、添付を指定するためにメールクライアントが使用する名前と拡張子を渡すことができます。 name が省略された場合:

  • ファイルパスを渡していれば、そのファイル名と拡張子が使用されます。
  • BLOB を渡していれば、拡張子がないランダムな名前が自動的に生成されます。

任意の cid 引数を使用すると、添付ファイルの内部ID を渡すことができます。 この ID は Content-Id ヘッダーの値で、HTMLメッセージにおいてのみ使用されます。 cid を使い、\<img src="cid:ID"> のような HTMLタグによってメッセージ本文で定義された参照と添付ファイルが紐づけられます。 これはつまり、添付ファイルの中身 (例: ピクチャー) がメールクライアント上ではメッセージ本文内に表示されるべきであることを意味しています。 最終的な表示は、メールクライアントによって若干異なる可能性があります。 cid を使用したくない場合、空の文字列を引数として渡します。

任意の type 引数を渡すと、添付ファイルの content-type を明示的に設定することができます。 たとえば、MIMEタイプを定義する文字列 ("video/mpeg"など) を渡すことができます。 この content-type の値は拡張子とは関係なく添付ファイルに対して設定されます。 MIMEタイプについての詳細は、Wikipedia 上のMIME に関するページ を参照ください。

この引数が省略された場合、あるいはこの引数に空の文字列が渡された場合はデフォルトで、添付ファイルの content-type は拡張子に基づいて設定されます。 主な MIMEタイプについては、以下のルールが適用されます:

拡張子Content-Type
jpg, jpegimage/jpeg
pngimage/png
gifimage/gif
pdfapplication/pdf
docapplication/msword
xlsapplication/vnd.ms-excel
pptapplication/vnd.ms-powerpoint
zipapplication/zip
gzapplication/gzip
jsonapplication/json
jsapplication/javascript
psapplication/postscript
xmlapplication/xml
htm, htmltext/html
mp3audio/mpeg
その他application/octet-stream

任意の disposition 引数を渡して、添付ファイルの content-disposition ヘッダーを指定できます。 "Mail" 定数テーマ内の、以下の定数のいずれか 1つを渡すことができます:

定数説明
mail disposition attachment"attachment"Content-disposition ヘッダーの値を "attachment" に設定します。これは添付ファイルはメッセージ内でリンクとして提供される必要があることを意味します。
mail disposition inline"inline"Content-disposition ヘッダーの値を "inline" に設定します。これは添付ファイルはメッセージ本文内の、"cid" の位置にレンダリングされる必要があることを意味します。 レンダリングの結果はメールクライアントによって異なります。

disposition 引数が省略された場合はデフォルトで:

  • cid 引数が使われていた場合、Content-disposition ヘッダーは "inline" に設定されます。
  • cid 引数が渡されていない、あるいは空の文字列が渡されていた場合、Content-disposition ヘッダーは "attachment" に設定されます。

例題 1

ユーザーが選択したファイルを添付し、HTML 本文に画像を埋め込んだメールを送信します:

$doc:=Select document("";"*";"添付するファイルを選択したください";0)
If (OK=1) // もしドキュメントが選択されていれば

C_OBJECT($email;$server;$transporter)

$server:=New object
$server.host:="smtp.mail.com"
$server.user:="test_user@mail.com"
$server.password:="p@ssw@rd"
$transporter:=SMTP New transporter($server)

$email:=New object
$email.from:="test_user@mail.com"
$email.to:="test_user@mail.com"
$email.subject:="添付の付いたテストメッセージです"

// ファイルをダウンロードするリンクを追加します
$email.attachments:=New collection(MAIL New attachment(Document))
// インラインピクチャーを挿入します (cid を使用)
$email.attachments[1]:=MAIL New attachment("c:\\Pictures\\4D.jpg";"";"4D")

$email.htmlBody:="<html>"+\
"<body>Hello World!"+\
"<img src='cid:4D' >"+\
"</body>"+\
"</head>"+\
"</html>"

$transporter.send($email) // メールを送信します

End if

例題 2

4D Write Pro エリアを添付したメールを送信します:

C_BLOB($blob)
WP EXPORT VARIABLE(WPArea;$blob;wk docx)

C_OBJECT($email;$server;$transporter)

$server:=New object
$server.host:="smtp.mail.com"
$server.user:="user@mail.com"
$server.password:="p@ssw@rd"
$transporter:=SMTP New transporter($server)

$email:=New object
$email.from:="user@mail.com"
$email.to:="customer@mail.com"
$email.subject:="新規年次レポート"
$email.textBody:="添付のとおり、新しい年次レポートをご連絡します。
"
$email.attachments:=New collection(MAIL New attachment($blob;"Annual report.docx"))

$transporter.send($email)

4D.MailAttachment.new()

4D.MailAttachment.new( path : Text { ; name : Text {; cid : Text{ ; type : Text { ; disposition :Text } } } } ) : 4D.MailAttachment
4D.MailAttachment.new( blob : Blob { ; name : Text {; cid : Text{ ; type : Text { ; disposition :Text } } } } ) : 4D.MailAttachment

引数説明
pathText->添付ファイルのパス
blobBLOB->添付を格納した BLOB
nameText->メールクライアントが添付を指定するのに使用する名前 + 拡張子
cidText->添付の ID (HTMLメッセージのみ)、あるいは cid が不要な場合は "" (空の文字列)
typeText->content-type ヘッダーの値
dispositionText->content-disposition ヘッダーの値: "inline" あるいは "attachment"
戻り値4D.MailAttachment<-Attachment オブジェクト

|

説明

4D.MailAttachment.new() 関数は、 4D.MailAttachment 型の新しいオブジェクトを作成して返します。 この関数の機能は、MAIL New attachment コマンドと同一です。

.cid

.cid : Text

説明

.cid プロパティは、 添付ファイルの ID を格納します。 このプロパティは HTMLメッセージでのみ使用されます。 このプロパティがない場合、ファイルは単なる添付 (リンク) として管理されます。

.disposition

.disposition : Text

説明

.disposition プロパティは、 Content-Disposition ヘッダーの値を格納します。 二つの値が利用可能です:

  • "inline": 添付ファイルはメッセージコンテンツ内に、"cid"の場所にレンダリングされます。 レンダリングの結果はメールクライアントによって異なります。
  • "attachment": 添付ファイルはメッセージ内でリンクとして提供されます。

.getContent()

.getContent() : Blob

引数説明
戻り値BLOB<-添付の中身

|

説明

.getContent() 関数は、 添付オブジェクトの中身を BLOB として返します。 MAIL Convert from MIME コマンドによって取得した添付オブジェクトに対して、この関数を使用することができます。

.name

.name : Text

説明

.name プロパティは、 添付ファイルの名前と拡張子を格納します。 MAIL New attachment コマンドで別の名称を指定しなかった場合のデフォルトは、ファイルの名称です。

.path

.path : Text

説明

.path プロパティは、 添付ファイルの POSIX パス (存在すれば) を格納します。

.platformPath

履歴
リリース内容
19追加

.platformPath : Text

説明

.platformPath プロパティは、 カレントプラットフォームのシンタックスで表現された添付ファイルのパスを返します。

.type

.type : Text

説明

.type プロパティは、 添付ファイルの content-type を格納します。 MAIL New attachment コマンドにて、このタイプが明示的に渡されていない場合、content-type はファイルの拡張子に基づきます。