> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kasoftware.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Email Send 端口

> 透過 SMTP 郵件伺服器或 SendGrid 傳送訊息，支援 OAuth 2.0、基於範本的內容生成以及用於檔案傳遞的附件模式。

export const NameDescription = ({extraRows}) => <table>
    <thead>
      <tr>
        <th>設定</th>
        <th>描述</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><strong>端口 Id</strong></td>
        <td>端口的靜態、唯一識別碼。</td>
      </tr>
      <tr>
        <td><strong>端口型別</strong></td>
        <td>顯示端口型別及其用途的描述。</td>
      </tr>
      <tr>
        <td><strong>端口描述</strong></td>
        <td>一個可選欄位，用於提供端口及其在流中的角色的自由格式描述。</td>
      </tr>
      {extraRows}
    </tbody>
  </table>;

export const CommonProxySettings = () => <>
    <p>這是一組用於識別連線所經代理並對其進行身分驗證的設定。預設情況下，本節使用 <a href="/26.3/self-hosted/zh/getting-started/administration/settings/security">安全設定</a> 頁面的 <a href="/26.3/self-hosted/zh/getting-started/administration/settings/proxy-settings">代理設定</a> 部分中的全域設定。清除此核取方塊可為您的端口提供特定的設定。</p>
    <table>
      <thead>
        <tr><th>設定</th><th>描述</th></tr>
      </thead>
      <tbody>
        <tr>
          <td><strong>代理型別</strong></td>
          <td>基於代理的防火牆使用的協議。</td>
        </tr>
        <tr>
          <td><strong>代理主機</strong></td>
          <td>基於代理的防火牆的名稱或 IP 地址。</td>
        </tr>
        <tr>
          <td><strong>代理端口</strong></td>
          <td>基於代理的防火牆的 TCP 端口。</td>
        </tr>
        <tr>
          <td><strong>代理使用者</strong></td>
          <td>用於透過基於代理的防火牆進行身分驗證的使用者名稱。</td>
        </tr>
        <tr>
          <td><strong>代理密碼</strong></td>
          <td>用於對基於代理的防火牆進行身分驗證的密碼。</td>
        </tr>
        <tr>
          <td><strong>身分驗證方案</strong></td>
          <td>保留預設值 <strong>None</strong> 或選擇以下身分驗證方案之一：<strong>Basic</strong>、<strong>Digest</strong>、<strong>Proprietary</strong> 或 <strong>NTLM</strong>。</td>
        </tr>
      </tbody>
    </table>
  </>;

export const SlasTab = ({siteName = "知行之桥"}) => <>
    <p><em>與配置服務級別協議 (SLA) 相關的設定。</em></p>
    <p>
      SLA 允許配置預期流程中端口傳送或接收的資料量，並設定預期達到該資料量的時間範圍。當 SLA 未達到時，{siteName} 會傳送電子郵件警告使用者，並將 SLA 標記為 <em>存在風險</em>，這意味著如果 SLA 未能儘快達到，則會被標記為 <em>已違反</em>。這讓使用者有機會介入並確定 SLA 未達到的原因，並採取適當的措施。如果在風險時間段結束時仍未達到 SLA，則會將 SLA 標記為已違反，並再次通知使用者。
    </p>
    <p>
      要定義 SLA，請啟用 <strong>預期資料量</strong>，然後點選 <strong>設定</strong> 索引標籤。
    </p>
    <img src="/public/images/sla_empty.png" alt="SLA Empty" />
    <ul>
      <li>如果端口具有單獨的傳送和接收操作，請使用選項按鈕指定 SLA 適用的方向。</li>
      <li>在視窗的 <strong>預計至少</strong> 部分中：
        <ul>
          <li>設定預計處理的最小交易數量（交易量）</li>
          <li>使用 <strong>每個</strong> 欄位指定時間範圍</li>
          <li>指示 SLA 生效的時間。如果選擇 <strong>開始於</strong>，請填寫日期和時間欄位。</li>
          <li>勾選希望 SLA 生效的星期幾對應的核取方塊。如有必要，請使用下拉功能表選擇 <strong>每天</strong>。</li>
        </ul>
      </li>
      <li>在視窗的 <strong>將狀態設定為“有風險”</strong> 部分中，指定應將 SLA 標記為有風險的時間。
        <ul>
          <li>預設情況下，只有在違反 SLA 的情況下才會傳送通知。要更改此設定，請勾選 <strong>傳送“有風險”通知</strong>。</li>
        </ul>
      </li>
    </ul>
    <p>
      以下範例顯示了為端口配置的 SLA，該端口預計在週一至週五每天接收 1000 個檔案。如果尚未收到 1000 個檔案，則會在時間段結束前 1 小時傳送風險通知。
    </p>
    <img src="/public/images/sla_defined.png" alt="SLA Configuration Example" />
    <Note>
      如果有必要，可以關閉 SLA 通知。這在維護視窗期間非常有用。點選導覽列上的 <strong>設定</strong>，然後跳轉到 <strong>通知 &gt; 通用通知</strong>。點選平板和鉛筆圖示進行編輯，並取消勾選 <strong>SLA 通知</strong> 設定。
    </Note>
  </>;

export const AlertsTab = ({siteNameShort = "知行之桥"}) => <>
    <p><em>與配置通知相關的設定。</em></p>
    <p>
      在執行服務級別協議 (SLA) 之前，需要設定電子郵件通知以接收通知。預設情況下，{siteNameShort} 使用 <a href="/26.3/self-hosted/zh/getting-started/administration/settings/alerts">通知</a> 索引標籤上的全域設定。要為此端口使用其他設定，請啟用 <strong>覆蓋全域設定</strong>。
    </p>
    <p>
      預設情況下，錯誤通知處於啟用狀態，這意味著每當出現錯誤時都會傳送電子郵件。要關閉錯誤通知，請取消選中 <strong>啟用</strong> 核取方塊。
    </p>
    <p>
      輸入 <strong>主題</strong>（必填）。勾選<strong>允許在主題中使用 ArcScript</strong>，即可在<strong>主題</strong>欄位中使用 ArcScript。選中後會顯示 <strong>ArcScript 編輯器</strong>按鈕（<img src="/public/images/rest_arcscript_editor.png" alt="ArcScript 編輯器按鈕" style={{
  display: 'inline',
  verticalAlign: 'middle',
  margin: 0
}} />）。
    </p>
    <p>
      （可選）輸入以逗號分隔的<strong>收件人</strong>電子郵件地址清單。
    </p>
  </>;

export const Message = () => <>
    <p><em>訊息設定確定端口如何搜尋訊息並在處理後管理它們。</em></p>
    <p><strong>注意：</strong>以下設定已棄用，預設處於隱藏狀態。只有先前已啟用這些設定或將其配置為非預設值的端口才會顯示它們。若要保留成功處理的檔案副本，請在工作流程中右鍵單擊該端口，選擇<strong>顯示成功路徑</strong>，然後將成功路徑連線到 <a href="/26.3/self-hosted/zh/connectors/file">File 端口</a>。</p>
    <table>
      <thead>
        <tr><th>設定</th><th>描述</th></tr>
      </thead>
      <tbody>
        <tr>
          <td><strong>儲存到已傳送資料夾</strong>（已棄用）</td>
          <td>將端口處理的檔案複製到 Sent 資料夾。預設停用。儲存到 Sent 資料夾中的檔案不受<a href="/26.3/self-hosted/zh/getting-started/administration/settings/encryption-at-rest">靜態加密</a>保護。</td>
        </tr>
        <tr>
          <td><strong>已傳送資料夾方案</strong>（已棄用）</td>
          <td>按所選時間間隔對 <strong>Sent</strong> 資料夾中的檔案進行分組。僅在啟用<strong>儲存到已傳送資料夾</strong>時適用。</td>
        </tr>
      </tbody>
    </table>
  </>;

export const MiscConnector = () => <>
    <p><em>特殊設定適用於特定用例。</em></p>
    <table>
      <thead>
        <tr>
          <th>設定</th>
          <th>描述</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td><strong>其他設定</strong></td>
          <td>允許在以分號分隔的清單中配置隱藏的端口設定，例如 <code>setting1=value1;setting2=value2</code>。正常的端口用例和功能不需要使用這些設定。</td>
        </tr>
      </tbody>
    </table>
  </>;

export const Logging = () => <>
    <p><em>用於管理日誌建立和儲存的設定。</em></p>
    <table>
      <thead>
        <tr>
          <th>設定</th>
          <th>描述</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td><strong>日誌級別</strong></td>
          <td>指定要記錄在端口日誌目錄中的資訊型別：
            <ul>
              <li><b>None</b> - 不建立任何日誌。</li>
              <li><b>Error</b> - 僅當端口遇到錯誤時才建立日誌。</li>
              <li><b>Warning</b> - 僅當端口發出警告時才建立日誌。</li>
              <li><b>Info</b> - 記錄工作流程的一般資訊，包括任何錯誤和警告（如果適用）。</li>
              <li><b>Debug</b> - 記錄成功和失敗工作流程的詳細偵錯資訊。</li>
              <li><b>Trace</b> - 記錄成功和失敗工作流程的詳細跟蹤資訊。</li>
            </ul>
            <strong>請注意：</strong><strong>Debug</strong> 和 <strong>Trace</strong> 級別的日誌可能會記錄敏感資訊，包括訊息內容和 SSL 憑證。儘管連線屬性（例如密碼）被遮蔽了，但在與您的組織外部共享它們之前，請檢視此級別的日誌以避免洩漏敏感資訊。</td>
        </tr>
        <tr>
          <td><strong>日誌資料夾結構</strong></td>
          <td>指示端口根據選定的時間間隔將日誌資料夾中的檔案分組。例如，<strong>Weekly</strong> 選項指示端口每週建立一個新的子資料夾，並將該周的所有日誌儲存在該資料夾中。空白設定告訴端口將所有日誌直接儲存在日誌資料夾中。對於處理許多交易的端口，使用子資料夾有助於保持日誌的有序性並提高效能。</td>
        </tr>
        <tr>
          <td><strong>保留訊息副本</strong></td>
          <td>指示端口在日誌目錄中儲存最新訊息副本的切換。請注意，端口每個子資料夾只保留一個訊息，並且端口在再次執行時會覆蓋以前儲存的訊息。</td>
        </tr>
      </tbody>
    </table>
  </>;

export const Performance = () => <>
    <p><em>與端口資源分配相關的設定。</em></p>
    <table>
      <thead>
        <tr>
          <th>設定</th>
          <th>描述</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td><strong>最大工作執行緒數</strong></td>
          <td>此端口上處理檔案時從執行緒池中消耗的最大工作執行緒數。如果設定，則會覆蓋 <a href="/26.3/self-hosted/zh/getting-started/administration/settings/advanced-settings">進階設定</a> 頁面的 <a href="/26.3/self-hosted/zh/getting-started/administration/settings/performance-settings">效能設定</a> 部分的預設設定。</td>
        </tr>
        <tr>
          <td><strong>最大檔案數</strong></td>
          <td>分配給端口的每個執行緒傳送的最大檔案數。如果設定，則會覆蓋 <a href="/26.3/self-hosted/zh/getting-started/administration/settings/advanced-settings">進階設定</a> 頁面的 <a href="/26.3/self-hosted/zh/getting-started/administration/settings/performance-settings">效能設定</a> 部分的預設設定。</td>
        </tr>
      </tbody>
    </table>
  </>;

export const siteNameShort = "知行之橋";

export const siteName = "知行之橋";

Email Send 端口透過 SMTP 郵件伺服器傳送郵件。

## 核心功能

* 基於 SMTP 的郵件投遞，支援使用者指定的伺服器或 SendGrid，並支援現代服務商的 OAuth 2.0 認證
* 支援範本模式，可根據 XML 資料或 ArcScript 生成動態內容
* 支援附件模式，可在傳送檔案的同時自定義郵件正文
* 支援多個收件人（To、CC 和 BCC）及動態欄位填充

## 概覽

Email Send 端口連線到 SMTP 伺服器（使用者指定或 SendGrid）投遞服務，將檔案作為傳出電子郵件訊息傳送。端口處理的輸入檔案可以作為電子郵件附件直接傳送，也可以從輸入檔案中解析資料，並透過指令碼範本包含在傳出訊息中。有關建立指令碼範本的更多資訊，請參閱[範本模式](#範本模式)部分。

<Note>Outlook 和 Gmail 郵件伺服器的 OAuth 2.0 配置是 Email Send 端口中最常見的兩種連線配置。</Note>

## 端口配置

本節包含所有可配置的端口屬性。

### 郵件配置

#### 建立連線

要允許 {siteNameShort} 傳送電子郵件，必須先建立 Email Send 連線。建立後，該連線可以在多個 Email Send 端口之間共享。建立此連線有以下兩種方式：

1. 在流程中新增一個 Email Send 端口。然後使用 **Connection** 下拉功能表選擇現有連線，或點選 **Create** 新增新連線。
2. 開啟 {siteNameShort} **系統設定** 頁面，然後開啟 **Connections** 索引標籤。點選 **Add**，選擇 **Email Send**，然後點選 **Next**。
   <Note>
     如果透過此方式建立連線，仍需在端口的 **Connection** 下拉功能表中選擇該連線。
   </Note>

完成以下屬性配置：

| 設定                           | 描述                                                                                                                                                                                                                                                    |
| ---------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Email Protocol**           | 選擇使用使用者指定的 SMTP 伺服器還是 SendGrid。如果選擇 SendGrid，則只保留 **TLS Type**。所有其他欄位均與 SMTP 相關。                                                                                                                                                                      |
| **API Key**                  | 你的 SendGrid API 金鑰。不適用於 {siteNameShort} Cloud 實現。                                                                                                                                                                                                     |
| **Host**                     | SMTP 伺服器的主機名或 IP 地址。                                                                                                                                                                                                                                  |
| **Port**                     | 連線到 SMTP 伺服器的端口。典型值包括 143 和 993。                                                                                                                                                                                                                      |
| **Authentication Mechanism** | 用於登入伺服器的身分驗證型別。可用選項會根據你的選擇而變化。                                                                                                                                                                                                                        |
| **Password**                 | （Basic 和 NTLM）IMAP 伺服器的密碼。                                                                                                                                                                                                                            |
| **Auth URL**                 | （OAuth 2.0）服務的授權 URL。點選 **Connect** 按鈕登入並授予應用程式權限時，會定向到此 URL。                                                                                                                                                                                         |
| **Access Token URL**         | （OAuth 2.0）存取權杖的 URL。                                                                                                                                                                                                                                 |
| **Client Id**                | （OAuth 2.0）註冊 OAuth 時分配的用戶端 Id。                                                                                                                                                                                                                       |
| **Client Secret**            | （OAuth 2.0）註冊 OAuth 時分配的金鑰。                                                                                                                                                                                                                           |
| **Scope**                    | （OAuth 2.0）應用程式應有權存取的範圍清單。                                                                                                                                                                                                                            |
| **Callback URL**             | （OAuth 2.0）所連線服務傳回權杖以提供存取權限的 URL。服務通常要求你將允許的 URL 加入白名單，因此在服務中配置應用程式註冊時應使用此值。                                                                                                                                                                          |
| **None**                     | 不需要身分驗證。                                                                                                                                                                                                                                              |
| **User**                     | 登入 SMTP 伺服器的使用者名稱。當 **Authentication Mechanism** 設定為 None 時不可見。                                                                                                                                                                                       |
| **TLS Type**                 | 連線到伺服器時用於協商 TLS/SSL 的方法：<br />**STARTTLS**：先建立明文連線，然後可以透過顯式命令啟動 TLS/SSL。<br />**SSL/TLS**：無需先建立明文連線，立即進行協商。<br />**None (Plain Text)**：建立明文連線，不使用 TLS/SSL。<br />**Automatic**：根據端口號檢測並應用合適的 TLS/SSL 協商方法。標準郵件端口（25、587）使用 STARTTLS，端口 465 使用 TLS/SSL。 |

建立與 SMTP 伺服器的網路級連線需要以下設定：

* Host
* Port
* TLS Type

建立網路級連線後，需要以下設定才能存取伺服器上儲存的訊息：

* User
* Password 或 OAuth 2.0 身分驗證憑據
* Mailbox

SendGrid 唯一需要的設定是 TLS Type。

使用 **Add and Test** 按鈕驗證端口是否可以連線到伺服器。

#### 其他配置

*與傳出電子郵件訊息相關的設定。大多數欄位可以包含來自傳出檔案的動態資料（有關更多資訊，請參閱[動態欄位](#動態欄位)）。*

| 設定                                | 描述                                                                                                                                                          |
| --------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Message Type**                  | 指定處理訊息的方法：<br />**Attachment**：將到達端口的檔案作為附件傳送。有關更多資訊和範例，請參閱[附件模式](#附件模式)。<br />**Template**：將訊息正文解釋為從輸入檔案讀取值的 ArcScript 範本。有關建立指令碼範本的更多資訊，請參閱[範本模式](#範本模式)。 |
| **To**                            | 傳出電子郵件訊息收件人的電子郵件地址。使用逗號分隔的清單傳送給多個收件人。                                                                                                                       |
| **Show From**                     | 展開一個欄位，用於輸入傳出電子郵件訊息發件人的電子郵件地址。端口會嘗試根據傳遞給 SMTP 伺服器的 **User** 憑據自動確定此欄位的值。                                                                                    |
| **Show Cc / Show Bcc**            | 展開欄位，用於輸入要抄送（CC）或密件抄送（BCC）的電子郵件地址。使用逗號分隔的清單傳送給多個收件人。                                                                                                        |
| **Subject**                       | 傳出電子郵件訊息的主題行。                                                                                                                                               |
| **Message Body**                  | 電子郵件正文。                                                                                                                                                     |
| **Allow ArcScript in Email Body** | 當 **Message Type** 為 Attachment 時，勾選此項以允許在訊息正文中計算 ArcScript。                                                                                                |

<Note>還可以點選 ArcScript 編輯器按鈕，在 **To**、**From**、**CC**、**BCC** 和 **Subject** 欄位中使用 ArcScript。</Note>

### 設定

#### 郵件傳送配置

*與端口名稱和描述相關的設定。*

<NameDescription />

### 高階頁面

#### 進階設定

*與處理相關的額外設定。*

| 設定                                     | 描述                                                                                                                                                                |
| -------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Attachment Filter**                  | 在傳送訊息之前應用的 glob 模式過濾器。模式可以是正向或負向的。例如，`*.edi` 僅傳送副檔名為 `.edi` 的檔案，`-*.tmp` 排除副檔名為 `.tmp` 的檔案。可以提供逗號分隔的過濾器清單。除非使用精確匹配，否則後面的過濾器優先順序更高。                                |
| **Outgoing Server Public Certificate** | 用於驗證 TLS/SSL 伺服器身份的公開金鑰憑證。如果目標伺服器使用 TLS/SSL，請將此欄位設定為標識伺服器的憑證。如果伺服器憑證不可用，可以將此設定留空以允許底層 OS/JVM 執行憑證驗證，或將其設定為 `Any Certificate` 以隱式信任伺服器身份。                          |
| **Extension Map**                      | 逗號分隔的名稱-值對清單，用於確定附件的 Content-Type 訊息頭值。例如，*.txt=text/plain、.dat=application/edi-x12、.edi=application/edifact*<br />**注意**：在輸入訊息中包含 Content-Type 訊息頭會覆蓋此設定確定的內容類型。 |
| **處理延遲**                               | 放置在 **交易** 索引標籤中的檔案在處理前延遲的時間（以秒為單位）。這是舊版設定。最佳做法是[使用 File 端口](../flows/designing-a-flow#interacting-with-the-local-file-system)來管理本地檔案系統，而不是使用此設定。                 |

#### 代理配置

<CommonProxySettings />

#### 訊息

<Message />

#### 日誌

<Logging />

#### 其他設定

<MiscConnector />

### 自動化

#### 自動化設定

| 設定                 | 描述                                                                               |
| ------------------ | -------------------------------------------------------------------------------- |
| **傳送**             | 指示端口在檔案準備就緒時自動傳送檔案的開關。                                                           |
| **Retry Interval** | 端口在重試失敗傳送之前等待的間隔。                                                                |
| **Max Attempts**   | 端口嘗試傳送訊息的次數。將此值設定為 *1* 會指示端口僅進行初始傳送嘗試而不重試。每次嘗試之間，端口會等待 **Retry Interval** 指定的時長。 |

#### 效能

<Performance />

### 警示

<AlertsTab />

### SLA

<SlasTab />

### 交易

此索引標籤列出與該端口關聯的所有訊息。使用搜尋欄查詢特定訊息，或點選漏斗圖示應用過濾器。可以按跟蹤訊息頭、時間和/或狀態進行過濾。

## 傳送郵件

[郵件配置](#郵件配置)索引標籤決定要傳送的電子郵件訊息：

* 如果 **Message Type** 設定為 **Attachment**，端口處理的檔案將作為電子郵件附件傳送，並且應在訊息文字編輯器中指定訊息正文。有關更多資訊，請參閱[附件模式](#附件模式)。
* 如果 **Message Type** 設定為 **Template**，訊息文字編輯器將被視為 ArcScript 範本。在指令碼範本中，可以從端口處理的檔案中解析值，並將其包含在電子郵件正文中。有關更多資訊，請參閱[範本模式](#範本模式)。

要在一封電子郵件中傳送多個附件，需要構建一個包含所有要包含附件的[批次處理組](../getting-started/architecture#batch-groups)，然後將該批次處理組傳送到 Email Send 端口進行處理。

### 動態欄位

**To**、**From**、**CC**、**BCC** 和 **Subject** 欄位支援來自傳出檔案的動態資訊（例如檔名和已處理該檔案的端口）。

檔案資訊可透過 [*\_message*](../scripting/introduction-to-arcscript#message-_message) 項獲得。*\_message* 項具有一組帶有 `header:` 字首的屬性，對應於傳出檔案中可用的每個訊息頭。這些訊息頭包括檔名、與在 {siteNameShort} 流程中處理檔案相關的任何中繼資料，以及透過指令碼提升到檔案的任何自定義訊息頭。

與任何其他 ArcScript 項一樣，*\_message* 項和訊息頭屬性在方括號中引用：

`[_message.header:headerName]`

例如，可以將 Subject 設定為以下值，以包含傳出檔案的檔名：

`[_message.header:filename]`

### 範本模式

將 **Message Type** 設定為 Template 會指示端口將訊息正文解釋為 ArcScript 範本。範本使用簡單的語法與輸入檔案互動，並檢索要在電子郵件正文中使用的值。這些值可以與靜態文字組合，生成根據端口處理的檔案動態填充的標準正文格式。

要使用 Template 模式，端口必須接收 XML 檔案作為輸入。範本只能解析 XML 檔案中的資訊。

#### 基本範本

有關範本訊息的範例，請考慮以下輸入 XML 文件：

```xml theme={null}
<Lead>
  <Company>ABC, Inc.</Company>
  <Email>john@abcinc.com</Email>
  <FirstName>John</FirstName>
  <Description>Blue Widget</Description>
</Lead>
```

此檔案在 `Lead` 標籤內包含一組屬性：`Company`、`Email`、`FirstName`、`Description`。將 `Email` 欄位傳入訊息的 ArcScript 運算式如下所示：

`[document.lead_email]`

此運算式包含三個元件：

* *document* 項，指向當前開啟的檔案。
* *lead\_email* 屬性，指向 `john@abcinc.com`。
* 方括號（`[]`），表示使用格式化器而不是文字字元。

上述 XML 輸入檔案的電子郵件正文範本可能如下所示：

```
Hi [document.lead_firstname],
<br>
We saw that you might be interested in the following product:
<br>
[document.lead_description]
<br>
Would you like to set up a demo to learn more about how we can help you with your work at [document.lead_company]?
```

此訊息將生成以下電子郵件：

```
Hi John,

We saw that you might be interested in the following product:

Blue Widget

Would you like to set up a demo to learn more about how we can help you with your work at ABC, Inc.?
```

有關 ArcScript 的更多資訊，請參閱[指令碼](../scripting/scripting)部分。

#### XPath 格式化

XPath 格式化器（在運算式中寫為 `xpath`）提供了從檔案中檢索動態值的替代方法。對於已經在 {siteNameShort} 其他位置使用 ArcScript 的使用者來說，這種方法可能更熟悉。XPath 要求輸入檔案是 XML 檔案。

使用與上面相同的輸入檔案範例：

```xml theme={null}
<Lead>
  <Company>ABC, Inc.</Company>
  <Email>john@abcinc.com</Email>
  <FirstName>John</FirstName>
  <Description>Blue Widget</Description>
</Lead>
```

傳回電子郵件地址的 XPath 運算式如下：

`[xpath(/Lead/Email)]`

此運算式包含三個元件：

* *xpath* 後跟括號，表示該運算式為 XPath 運算式。
* 資料路徑，每個級別用斜槓分隔。
* 方括號（`[]`），表示使用格式化器而不是文字字元。

##### 在範本模式下使用 XPath 格式化器

考慮以下 XML：

```xml theme={null}
<Items>
    <projectName>myProject</projectName>
    <assignee>Bob Ross</assignee>
    <dueDate>02/27/2024</dueDate>
    <resources>
        <description>http://mydomain.com/desc</description>
        <images>http://mydomain.com/images</images>
        <colors>http://mydomain.com/colors</colors>
    </resources>
</Items>
```

對上面的 XML 輸入檔案使用 xpath 運算式的電子郵件正文範本可能如下所示：

```xml theme={null}
Hi [xpath(/Items/assignee)],
<br>
You have a new project to start working on. The name of the project is [xpath(/Items/projectName)].
<br>
All the resources you need can be found at the following links:
<br>
<ul>
  <li>Description: [xpath(/Items/resources/description)]</li>
  <li>Images: [xpath(/Items/resources/images)]</li>
  <li>Colors: [xpath(/Items/resources/colors)]</li>
</ul>
<br>
The due date for this project is [xpath(/Items/dueDate)].
```

此訊息將生成以下電子郵件：

```
Hi Bob Ross,

You have a new project to start working on. The name of the project is myProject.

All the resources you need can be found at the following links:

  - Description: http://mydomain.com/desc
  - Images: http://mydomain.com/images
  - Colors: http://mydomain.com/colors

The due date for this project is 02/27/2024.
```

#### 程式碼檢視編輯器

程式碼檢視編輯器支援建立自定義 ArcScript，以對來自 XML 檔案的資訊進行高階處理。要開啟程式碼檢視編輯器，請點選訊息編輯器中的 **Code View** 按鈕。

<img src="https://mintcdn.com/qiao/U-KEZ9JbQY4Wqs1D/public/images/code_view_editor.png?fit=max&auto=format&n=U-KEZ9JbQY4Wqs1D&q=85&s=bc2067eb53f76b5756c48fcede3d3837" width="600" data-path="public/images/code_view_editor.png" />

在此模式下，ArcScript 運算式可用於一次處理多個資料項目。以下輸入檔案範例包含名稱清單：

```xml theme={null}
<record>
  <to>Dave</to>
  <items>
    <item>
      <first_name>James</first_name>
      <last_name>Satchel</last_name>
    </item>
    <item>
      <first_name>John</first_name>
      <last_name>Smith</last_name>
    </item>
    <item>
      <first_name>Gina</first_name>
      <last_name>Newberry</last_name>
    </item>
  </items>
</record>
```

在程式碼檢視編輯器中編寫的以下訊息使用 ArcScript 合併了來自該輸入檔案的資料：

```xml theme={null}
Hi [document.record_to],
<br>
Here are the people you were asking about:
<br>
<arc:set attr="xml.xpath" value="/record/items/item" />
<arc:call op="xmlDOMSearch" in="xml">
  <arc:set attr="first.names" value="[xpath(first_name)]" />
  <arc:set attr="last.names" value="[xpath(last_name)]" />
  <arc:enum attr="first.names">
    [_value]
  </arc:enum>
  <arc:enum attr="last.names">
    [_value]
  </arc:enum>
  <br>
</arc:call>
```

此程式碼會迴圈輸入 XML 檔案中的所有名字和姓氏值，並將它們列印在訊息正文中。使用上面的輸入檔案執行時，最終電子郵件如下所示：

```
Hi Dave,

Here are the people you were asking about:

James Satchel
John Smith
Gina Newberry
```

有關 ArcScript 和自定義運算式的更多資訊，請參閱[指令碼](../scripting/scripting)部分。

### 附件模式

如果將 **Message Type** 設定為 Attachment，請在編輯器中輸入電子郵件正文。如有必要，可以引用輸入訊息上的訊息頭來豐富電子郵件正文。然後，Email Send 端口會計算這些訊息頭，並將輸入檔案附加到傳出電子郵件。

<Note>這依賴於流程中的前一步將必要的值作為訊息頭提升到訊息上。根據檔案內容，可以使用各種[操作](../scripting/operations/operations)和端口設定來執行此操作。</Note>

考慮以下 XML：

```xml theme={null}
<Items>
    <projectName>myProject</projectName>
    <assignee>Bob Ross</assignee>
    <dueDate>02/27/2024</dueDate>
    <resources>
        <description>http://mydomain.com/desc</description>
        <images>http://mydomain.com/images</images>
        <colors>http://mydomain.com/colors</colors>
    </resources>
</Items>
```

電子郵件正文可能如下所示：

```xml theme={null}
Hi [_message.header:assignee],
<br>
You have a new project to start working on. The name of the project is [_message.header:projectname].
<br>
All the resources you need can be found at the following links:
<br>
<ul>
  <li>Description: [_message.header:description]</li>
  <li>Images: [_message.header:images]</li>
  <li>Colors: [_message.header:colors]</li>
</ul>
<br>
The due date for this project is [_message.header:duedate].
```

此訊息將生成以下電子郵件，幷包含輸入檔案作為附件：

```
Hi Bob Ross,

You have a new project to start working on. The name of the project is myProject.

All the resources you need can be found at the following links:

  - Description: http://mydomain.com/desc
  - Images: http://mydomain.com/images
  - Colors: http://mydomain.com/colors

The due date for this project is 02/27/2024.
```
