この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

ファイルの添付

Visualforce メールテンプレートに添付ファイルを追加することができます。各添付ファイルは、1 つの <messaging:attachment> コンポーネント内にカプセル化する必要があります。<messaging:attachment> 内のコードでは、HTML と Visualforce タグを組み合わせることができます。

前の例は、データを反復処理してメール受信者に表示することで、Visualforce メールテンプレートを作成する方法を示しています。次の例は、データを添付ファイルとして表示するようにそのマークアップを変更する方法を示しています。
1<messaging:emailTemplate recipientType="Contact"
2	relatedToType="Account"
3	subject="Case report for Account: {!relatedTo.name}"
4	replyTo="support@acme.com">
5
6	<messaging:htmlEmailBody>
7		<html>
8			<body>
9			<p>Dear {!recipient.name},</p>
10			<p>Attached is a list of cases related to {!relatedTo.name}.</p>
11			<center>
12				<apex:outputLink value="https://salesforce.com">
13					For more detailed information login to Salesforce.com
14				</apex:outputLink>
15			</center>
16			</body>
17		</html>
18	</messaging:htmlEmailBody>
19
20	<messaging:attachment>
21		<apex:repeat var="cx" value="{!relatedTo.Cases}">
22			Case Number: {!cx.CaseNumber}
23			Origin: {!cx.Origin}
24			Creator Email: {!cx.Contact.email}
25			Case Number: {!cx.Status}
26		</apex:repeat> 
27	</messaging:attachment>
28</messaging:emailTemplate>
このマークアップは、添付データファイルとして、書式設定なしでメールに表示されます。次のいずれかのオプションを使用すると、データをより読みやすい形式で表示できます。

ファイル名の変更

<messaging:attachment> タグには、添付されたファイルの名前を定義する filename という属性があります。わかりやすい名前を定義することをお勧めしますが、必ずしもそのようにする必要はありません。未定義のままにしておくと、Salesforce が名前を生成します。

拡張子のないファイル名は、デフォルトでテキストファイルになります。添付ファイルは CSV として表示できます。
1<messaging:attachment filename="cases.csv">
2	<apex:repeat var="cx" value="{!relatedTo.Cases}">
3		{!cx.CaseNumber}
4		{!cx.Origin}
5		{!cx.Contact.email}
6		{!cx.Status}
7	</apex:repeat> 
8</messaging:attachment>
データを HTML ファイルとして表示することもできます。
1<messaging:attachment filename="cases.html">
2	<html>
3		<body>
4		<table border="0" >
5			<tr>
6				<th>Case Number</th><th>Origin</th>
7				<th>Creator Email</th><th>Status</th>
8			</tr>
9			<apex:repeat var="cx" value="{!relatedTo.Cases}">
10			<tr>
11				<td><a href = 
12					"https://MyDomainName.my.salesforce.com/{!cx.id}">{!cx.CaseNumber}
13				</a></td>
14				<td>{!cx.Origin}</td>
15				<td>{!cx.Contact.email}</td>
16				<td>{!cx.Status}</td>
17			</tr>
18			</apex:repeat> 
19		</table>
20		</body>
21	</html>
22</messaging:attachment>

<messaging:attachment> コンポーネントごとに定義できるファイル名は 1 つのみですが���メールには複数のファイルを添付できます。

renderAs 属性の変更

他の Visualforce ページと同様に、<messaging:attachment> コンポーネントの renderAs 属性を PDF に設定すると、添付ファイルが PDF として表示されます。次に例を示します。
1<messaging:attachment renderAs="PDF" filename="cases.pdf">
2	<html>
3		<body>
4		<p>You can display your {!relatedTo.name} cases as a PDF:</p>
5			<table border="0" >
6			<tr>
7				<th>Case Number</th><th>Origin</th>
8				<th>Creator Email</th><th>Status</th>
9			</tr>
10			<apex:repeat var="cx" value="{!relatedTo.Cases}">
11			<tr>
12				<td><a href = 
13					"https://MyDomainName.my.salesforce.com/{!cx.id}">{!cx.CaseNumber}
14				</a></td>
15				<td>{!cx.Origin}</td>
16				<td>{!cx.Contact.email}</td>
17				<td>{!cx.Status}</td>
18			</tr>
19			</apex:repeat> 
20		</table>
21		</body>
22	</html>
23</messaging:attachment>
Visualforce PDF 表示サービスの制限は次のとおりです。
  • サポートされている表示サービスは PDF のみです。
  • PDF 表示サービスでは PDF バージョン 1.4 と、CSS バージョン 2.1 以前が表示されます。
  • Visualforce ページを PDF ファイルとして表示する機能は、印刷用にデザインされ、最適化されたページのためのものです。
  • PDF ファイルとして表示された Visualforce ページは、ブラウザーの設定に応じて、ブラウザーに表示されるかダウンロードされます。特定の動作は、ブラウザー、バージョン、ユーザー設定によって異なり、Visualforce では制御できません。
  • PDF 表示サービスはページにマークアップとデータを表示しますが、ページに追加されたリッチテキストエリア項目のコンテンツ内に含まれる書式設定は表示されない可能性があります。
  • 空白やダッシュなどのブレークポイントがない長いテキスト行は、PDF 表示サービスではラップされません。このシナリオは、長い URL やレジストリエントリなどでよく発生します。これらの行がページよりも広い場合、ページのコンテンツの幅が PDF ページの幅を超えて拡張されます。その結果、コンテンツはページの端からはみ出し、途中で切れてしまいます。
  • 印刷用の書式設定が容易ではないか、入力やボタンなどのフォーム要素が含まれる標準コンポーネント、または書式設定に JavaScript が必要なコンポーネントは使用しないでください。
  • PDF 表示では、JavaScript で表示されるコンテンツはサポートされていません。
  • Salesforce モバイルアプリケーションのページでは、PDF 表示はサポートされていません。
  • ページで使用するフォントは、Visualforce PDF 表示サービスで使用できる必要があります。Web フォントはサポートされていません。
  • PDF ファイルでページのすべてのテキスト (特に日本語などのマルチバイト文字やアクセント記号付きの国際文字) が表示されない場合は、CSS を調整してそれに対応するフォントを使用します。次に例を示します。
    1<apex:page showHeader="false" applyBodyTag="false" renderAs="pdf">
    2    <head>
    3        <style>
    4            body { font-family: 'Arial Unicode MS'; }
    5        </style> 
    6    </head>
    7    <body>
    8    
    9    これはサンプルページです。<br/>
    10    This is a sample page: API version 28.0
    11    
    12    </body>
    13</apex:page>
    マルチバイト文字を含む拡張文字セットでサポートされているフォントは「Arial Unicode MS」のみです。
  • インライン CSS スタイルを使用する場合は、API バージョンを 28.0 以降に設定します。また、前の例のように <apex:page applyBodyTag="false"> を設定し、有効な静的 <head> および <body> タグをページに追加します。
  • PDF ファイル作成時の最大応答サイズは、PDF ファイルとして表示されるで 15 MB 未満です。この制限は、すべての Visualforce 要求の標準制限です。
  • 生成される PDF ファイルの最大ファイルサイズは、60 MB です。
  • 生成された PDF に含まれるすべての画像の最大合計サイズは 30 MB です。
  • PDF 表示では、data: URI スキーム形式で符号化された画像はサポートされていません。
  • PDF 表示では、WebP 画像および SVG マークアップはサポートされません。
  • 次のコンポーネントは、PDF として表示するときに 2 バイトのフォントをサポートしません。
    • <apex:pageBlock>
    • <apex:sectionHeader>
    PDF として表示するページでこのようなコンポーネントを使用することはお勧めしません。
  • <apex:dataTable> または <apex:pageBlockTable> に表示される <apex:column> コンポーネントがない場合、PDF としてのページの表示に失敗します。この問題を回避するには、その子 <apex:column> コンポーネントが表示されない場合にテーブルコンポーネントの rendered 属性を false に設定します。

スタイルと画像の追加

添付ファイルでは、スタイルシートを使用してデータの表示方法を変更することもできます。スタイルは、Visualforce メールテンプレートと同じ方法 (インラインコードとして、またはカスタムコンポーネントを使用して) で、添付ファイルに関連付けられています。

PDF として表示される添付ファイルは、$Resource グローバル変数を使用して静的リソースを参照できます。これにより、PDF の本文内の画像またはスタイルシートを参照できます。

たとえば、次の添付ファイルでは PDF にロゴが含まれます。
1<messaging:attachment renderAs="PDF" filename="cases.pdf">
2		<html>
3			<body>
4			<img src = "{!$Resource.logo}" />
5			...
6			</body>
7		</html>
8	</messaging:attachment>
この添付ファイルは、静的リソースとして保存したスタイルシートを参照します。
1<messaging:attachment renderAs="PDF">
2		<html>
3		<link rel='stylesheet' type='text/css' href='{!$Resource.EMAILCSS}' />
4			<body>
5			...
6			</body>
7		</html>
8	</messaging:attachment>

リモートサーバーの静的リソースを参照すると、PDF 添付ファイルの表示に時間がかかる場合があります。Apex トリガーで PDF 添付ファイルを作成する場合、リモートリソースは参照できません。参照すると例外になります。

警告