PutEmail

文档中心 › 组件索引 › PutEmail

PutEmail Processor

类型全限定名:cn.org.acal.lynxus.processors.standard.PutEmail

所属 Bundle:cn.org.acal.lynxus:lynxus-standard-nar:2.11.8

描述

向每个传入 FlowFile 的配置收件人发送电子邮件

标签

emailputnotifysmtp

属性

下表中,加粗的属性为必填项;其余为可选项。表格同时标注默认值、是否支持表达式语言,以及是否为敏感属性(值会被加密)。

名称默认值可选值描述
SMTP HostnameSMTP 主机的主机名
支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值)
SMTP Port25用于 SMTP 通信的端口
支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值)
Authorization Modepassword-based-authorization-mode
  • Use Password — Use password
  • Use OAuth2 — Use OAuth2 to acquire access token
如何授权代表用户发送电子邮件。
OAuth2 Access Token Provider控制器服务 API:
OAuth2AccessTokenProvider
cn.org.acal.lynxus-lynxus-standard-services-api-nar-2.11.8
可以提供访问令牌的 OAuth2 服务。
SMTP UsernameSMTP 帐户的用户名
支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值)
SMTP PasswordSMTP 帐户的密码
敏感属性:是
支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值)
SMTP Authtrue指示是否应使用身份验证的标志
支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值)
SMTP START TLSfalse指示是否应使用 STARTTLS 命令启用机会 TLS 的标志
支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值)
SMTP Socket Factoryjavax.net.ssl.SSLSocketFactory用于 SMTP 连接的套接字工厂
支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值)
SMTP X-Mailer HeaderLynxusX-Mailer 用于外发电子邮件的标头
支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值)
Attributes to Send as Headers Regular Expression与所有 FlowFile 属性名称匹配的正则表达式。属性名称匹配此正则表达式的任何属性都将作为 Header 添加到电子邮件中。如果未指定,则不会将任何 FlowFile 属性添加为标头。
Content Typetext/plain用于解释电子邮件内容的 Mime 类型,例如 text/plain 或 text/html
支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值)
From指定用作发送方的电子邮件地址。遵循 RFC822 语法的逗号分隔地址序列。
支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值)
To电子邮件(收件人)行中包含的收件人。遵循 RFC822 语法的逗号分隔地址序列。
支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值)
CC电子邮件(抄送)行中包含的收件人。遵循 RFC822 语法的逗号分隔地址序列。
支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值)
BCC电子邮件(密送)行中包含的收件人。遵循 RFC822 语法的逗号分隔地址序列。
支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值)
Reply-To将接收回复而非发件人的收件人(参见 RFC2822 第3.6.2节)。例如,当电子邮件由无回复账户发送时,此功能很有用。此字段为可选。遵循 RFC822 语法的逗号分隔地址序列。
支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值)
SubjectMessage from Lynxus电子邮件主题
支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值)
Message电子邮件正文
支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值)
FlowFile Content as Messagefalse指定 FlowFile 内容是否应该是电子邮件的消息。 如果为 true,则忽略“Message”属性。
支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值)
Input Character SetUTF-8指定 FlowFile 内容的字符集,用于读取输入 FlowFile 内容以生成消息正文或作为消息的附件。如果未设置,默认值为 UTF-8。
Attach Filefalse
  • true
  • false
指定是否应将 FlowFile 内容附加到电子邮件中
Include All Attributes In Messagefalse
  • true
  • false
指定是否所有 FlowFile 属性都应记录在电子邮件正文中

动态属性

动态属性允许用户自定义属性的名称与值。

名称值描述
mail.propertyName要在 JavaMail Session 对象中设置的特定属性的值将传递给邮件会话的动态属性名称。可用的属性可在以下位置找到:https://javaee.github.io/javamail/docs/api/com/sun/mail/smtp/package-summary.html。

关系 (Relationships)

名称描述自动终止
failure发送失败的FlowFile将被路由到该关系否
success成功发送的FlowFiles将被路由到该关系否

状态管理

该组件不存储状态。

受限 (Restricted)

该组件不受限。

输入要求

该组件要求有传入连接。

系统资源考量

资源描述
MEMORY当使用流文件内容作为电子邮件正文的属性设置为 true 时,FlowFile 的全部内容(作为 String 对象)将被读入内存。

详细说明

PutEmail

OAuth 授权模式

PutEmail 可以使用 OAuth2,具体方式可能因邮件服务商而异。

使用 Gmail 的 OAuth

配置 Gmail OAuth 客户端

Gmail OAuth 客户端可以代表多个不同的 Gmail 账户发送邮件,因此这一步只需要做一次。

  1. 在 Google 开发者控制台中创建一个项目(如果还没有的话)
  2. 配置 OAuth 同意屏幕
  3. 创建 OAuth 客户端。将 Application type 选择为 Desktop app。客户端创建完成后,记下 Client ID 和 Client secret 的值,后续步骤会用到。

为 Lynxus 获取令牌

只有当 Gmail 账户的所有者同意前面创建的客户端代表其发送邮件之后,才会颁发令牌。因此,每个 Gmail 账户 都需要执行一次这一步骤。

  1. 访问以下网页:

    https://accounts.google.com/o/oauth2/auth?redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&response_type=code&scope=https%3A%2F%2Fmail.google.com&client_id=CLIENT_ID

    将末尾的 CLIENT_ID 替换为你的 Client ID。

  2. 可能需要选择要授权的 Google 账户。连续两次点击 Continue。

  3. 页面会显示一个授权码(Authorisation code),底部会有类似这样的提示:

    Authorisation code

    Please copy this code, switch to your application and paste it there:

    AUTHORISATION_CODE

  4. 在终端中执行以下命令获取访问令牌(access token)和刷新令牌(refresh token)。 如果 curl 命令返回错误,请从第 1 步重新开始。

    curl https://accounts.google.com/o/oauth2/token -d grant_type=authorization_code -d redirect_uri="urn:ietf:wg:oauth:2.0:oob" -d client_id=CLIENT_ID -d client_secret=CLIENT_SECRET -d code=AUTHORISATION_CODE

    将 CLIENT_ID、CLIENT_SECRET 和 AUTHORISATION_CODE 替换为你的值。

  5. curl 命令会返回一个包含 access token 和 refresh token 的 JSON:

{
  "access_token": "ACCESS_TOKEN",
  "expires_in": 3599,
  "refresh_token": "REFRESH_TOKEN",
  "scope": "https://mail.google.com/",
  "token_type": "Bearer"
}

在 Lynxus 中配置令牌

  1. 在 PutEmail Processor 的 Authorization Mode 属性中选择 Use OAuth2。

  2. 在 OAuth2 Access Token Provider 属性中选择/创建一个 StandardOauth2AccessTokenProvider Controller Service。

  3. 在 StandardOauth2AccessTokenProvider Controller Service 的 Grant Type 属性中选择 Refresh Token。

  4. 在 Refresh Token 属性中填入 curl 命令返回的 REFRESH_TOKEN。

  5. 在 Authorization Server URL 中填入:

    https://accounts.google.com/o/oauth2/token

  6. 同时填写 Client ID 和 Client secret 属性。