---
title: "讀取電子郵件"
description: "EMILY.RPA 讀取電子郵件模組：以 IMAP 協議連接郵件伺服器讀取電子郵件，信箱參數依使用的郵件服務而定。"
source: https://docs.emily.tips/wap/imap2csv
---

# 讀取電子郵件

使用 IMAP 協議連接郵件伺服器讀取電子郵件，信箱設定參數依使用的電子郵件服務或伺服器而定。

![](https://docs.emily.tips/img/zh/wap-141.png)

## 參數

**`HOST`** - IMAP 郵件伺服器主機名稱，例如 imap.gmail.com。

**`PORT`** - IMAP 郵件伺服器連線埠號，預設為常用的 993。

**`TLS/SSL`** - IMAP 郵件伺服器是否需要TLS/SSL加密。

**`USERNAME`** - 使用者在郵件伺服器設定的帳號名稱，可以夾帶 **%FILENAME%** 變數插入工作資料夾內檔名為 FILENAME.txt 的TXT檔案內容，達到動態指定的效果。

**`PASSWORD`** - 使用者在郵件伺服器設定的帳號密碼，支援 **%FILENAME%** 變數。

**`MAILBOX`** - 郵件信箱名稱。

**`SINCE DAY(S) AGO`** - 讀取自幾天前的郵件。

**`UNREAD ONLY`** - 是否選擇只讀取未讀郵件。

## No-Code 編輯器

提供：「**重置 output.csv**」、「**過濾郵件**」等無程式碼指令。例如，過濾出來自 `@emily.tips` 網域，主旨包含 `採購單` 的郵件，寫入到工作資料夾的 output.csv。

![](https://docs.emily.tips/img/zh/wap-142.png)

## Low-Code 編輯器

![](https://docs.emily.tips/img/zh/wap-143.png)

### input 物件陣列

在 input 物件陣列中的每個元素代表讀取自指定郵件信箱的每封郵件：

```javascript
// 印出讀取到的每封郵件主旨與寄件者
input.forEach((mail) => {
  console.log('from:' + mail.from + ', title:' + mail.subject)
})
```

### output 物件陣列

加入 output 陣列中的每個物件元素代表輸出表格的一列資料，物件中的 key 為表頭欄位，value 為該欄位在這一列資料的值，最後表格將被輸出成工作資料夾內的 output.csv 檔案。

```javascript
// 將讀取的每封郵件文字欄位輸出到CSV，並且將附件檔案存檔
input.forEach((mail) => {
  output.push({
    from: mail.from,
    subject: mail.subject,
    date: mail.date.toLocaleString(),
  })
  
  if (mail.attachments.length > 0) {
    mail.attachments.forEach((att) => {
      api.write(att.filename, att.content)
    })
  }
})

// 指定表頭欄位
output.header.push('from','subject','date')
```

### api 物件

除了提供同步函式：api.files(), api.read(filename, encoding='utf8'), api.write(filename, text), api.rename(oldname, newname), api.remove(filename) 存取工作資料夾內的檔案；另外提供 mail 物件與相關非同步函式 api.mail.moveto(uid, mailbox), api.mail.remove(uid)

```javascript
// 找到標題包含'促銷'的郵件
let mail = _.find(input, (m) => m.subject.includes('促銷')）

// 移到'Trash'郵件資料夾
await api.mail.moveto(mail.uid, 'Trash')

// 找到標題包含'中獎'的郵件
mail = _.find(input, (m) => m.subject.includes('中獎')）

// 移除郵件
await api.mail.remove(mail.uid)
```
