38.4. 端点选项
邮件端点使用 URI 语法进行配置:
imap:host:port
使用以下路径和查询参数:
38.4.1. 路径参数(2 参数)
Name | 描述 | 默认值 | 类型 |
---|---|---|---|
host (common) | 必需 邮件服务器主机名。 | 字符串 | |
port (common) | 邮件服务器的端口号。 | int |
38.4.2. 查询参数(66 参数)
Name | 描述 | 默认值 | 类型 |
---|---|---|---|
bridgeErrorHandler (consumer) | 允许将消费者桥接到 Camel 路由错误处理程序,这意味着当消费者试图选择传入消息或类似信息时发生异常,现在将作为消息处理并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.ExceptionHandler 来处理例外情况,该处理程序将被记录在 WARN 或 ERROR 级别,并忽略。 | false | 布尔值 |
closeFolder (consumer) | 消费者是否在轮询后关闭文件夹。将这个选项设置为 false,也具有 disconnect=false,然后消费者在轮询之间保持文件夹打开。 | true | 布尔值 |
CopyTo (consumer) | 处理邮件后,它可以复制到具有指定名称的邮件文件夹中。您可以使用键 copyTo 的标头覆盖此配置值,允许您将消息复制到运行时配置的文件夹名称。 | 字符串 | |
decodeFilename (consumer) | 如果设置为 true,则使用 MimeUtility.decodeText 方法来解码文件名。这与设置 JVM 系统属性 mail.mime.encodefilename 类似。 | false | 布尔值 |
delete (consumer) | 在消息被处理后删除消息。这可以通过在邮件中设置 DELETED 标志来完成。如果为 false,则设置 SEEN 标志。从 Camel 2.10 开始,您可以通过使用键 delete 设置标头来覆盖此配置选项,以确定是否应该删除邮件。 | false | 布尔值 |
disconnect (consumer) | 消费者在轮询后是否应断开。如果启用此选项,它会强制 Camel 在每个轮询连接。 | false | 布尔值 |
handleFailedMessage (consumer) | 如果邮件使用者无法检索给定的邮件消息,则此选项允许处理消费者的错误处理程序导致的异常。通过在消费者上启用网桥错误处理程序,然后 Camel 路由错误处理程序可以处理异常。默认行为是消费者抛出异常,并且批处理中的邮件无法由 Camel 路由。 | false | 布尔值 |
maxMessagesPerPoll (consumer) | 指定每个轮询要收集的最大消息数。默认情况下,不会设置最大值。可用于设置限制(例如 1000),以避免在服务器启动时下载数千个文件。将值设为 0 或负数以禁用这个选项。 | int | |
mimeDecodeHeaders (consumer) | 这个选项启用对邮件标头的透明 MIME 解码和取消处理。 | false | 布尔值 |
moveTo (consumer) | 处理邮件后,它可以移到具有指定名称的邮件文件夹中。您可以使用键 moveTo 的标头来覆盖此配置值,允许您将消息移到运行时配置的文件夹名称。 | 字符串 | |
peek (consumer) | 在处理邮件之前,会将 javax.mail.Message 标记为 peeked。这只适用于 IMAPMessage 消息类型。通过使用将邮件标记为 SEEN 的邮件,这允许我们在 Camel 中存在错误处理,请回滚邮件。 | true | 布尔值 |
sendEmptyMessageWhenIdle (consumer) | 如果轮询使用者没有轮询任何文件,您可以启用此选项来发送空消息(无正文)。 | false | 布尔值 |
skipFailedMessage (consumer) | 如果邮件使用者无法检索给定的邮件邮件,此选项允许跳过邮件并继续检索下一个邮件。默认行为是消费者抛出异常,并且批处理中的邮件无法由 Camel 路由。 | false | 布尔值 |
unseen (consumer) | 是否只通过不可预测的邮件限制。 | true | 布尔值 |
exceptionHandler (consumer (advanced)) | 要让使用者使用自定义例外处理程序:请注意,如果启用了 bridgeErrorHandler 选项,则此选项不使用。默认情况下,消费者将处理异常,其记录在 WARN 或 ERROR 级别中,并忽略。 | ExceptionHandler | |
exchangePattern (consumer (advanced)) | 在消费者创建交换时设置交换模式。 Enum 值:
| ExchangePattern | |
fetchSize (consumer (advanced)) | 设置轮询期间要消耗的最大消息数。如果载体文件夹包含很多消息,这可用于避免过载邮件服务器。默认值 -1 表示没有获取大小,所有信息都会被消耗。将值设为 0 是一个特殊的地方,Camel 根本不消耗任何消息。 | -1 | int |
folderName (consumer (advanced)) | 要轮询的文件夹。 | INBOX | 字符串 |
mailUidGenerator (consumer (advanced)) | 可插拔邮件生成器,允许使用自定义逻辑生成邮件邮件的 UUID。 | MailUidGenerator | |
mapMailMessage (consumer (advanced)) | 指定 Camel 是否应该将收到的邮件映射到 Camel body/headers/attachments。如果设置为 true,邮件邮件的正文将映射到 Camel IN 消息的正文,邮件标头将映射到 IN 标头,并附加至 Camel IN attachment 消息。如果此选项设为 false,则 IN 消息包含原始 javax.mail.Message。您可以通过调用 exchange.getIn ().getBody (javax.mail.Message.class)来检索此原始消息。 | true | 布尔值 |
pollStrategy (consumer (advanced)) | 可插拔 org.apache.camel.PollingConsumerPollingStrategy 允许您提供自定义实施来控制在轮询操作期间通常会发生错误处理,然后再创建交换并在 Camel 中路由。 | PollingConsumerPollStrategy | |
postProcessAction (consumer (advanced)) | 指的是 mailBoxPostProcessAction,用于在正常处理结束时对交易执行后处理任务。 | MailBoxPostProcessAction | |
bcc (producer) | 设置 BCC 电子邮件地址。使用逗号分隔多个电子邮件地址。 | 字符串 | |
CC (producer) | 设置 CC 电子邮件地址。使用逗号分隔多个电子邮件地址。 | 字符串 | |
from (producer) | 来自电子邮件地址。 | camel@localhost | 字符串 |
lazyStartProducer (producer) | 生成者是否应懒惰启动 (在第一个消息中)。通过懒惰启动,您可以使用此选项来允许 CamelContext 和路由在生成者启动期间启动,并导致路由启动失败。通过懒惰启动,启动失败可以在路由信息时通过 Camel 的路由错误处理程序进行处理。请注意,在处理第一个消息时,创建并启动生成者可能需要稍等时间,并延长处理的总处理时间。 | false | 布尔值 |
replyTo (producer) | Reply-To receivers (响应邮件的接收器)。使用逗号分隔多个电子邮件地址。 | 字符串 | |
subject (producer) | 正在发送的消息的主题。注: 在标头中设置主题优先于这个选项。 | 字符串 | |
to (producer) | 设置 To email address。使用逗号分隔多个电子邮件地址。 | 字符串 | |
javaMailSender (producer (advanced)) | 使用自定义 org.apache.camel.component.mail.JavaMailSender 来发送电子邮件。 | JavaMailSender | |
additionalJavaMailProperties (advanced) | 设置额外的 java 邮件属性,这将附加/覆盖基于所有其他选项设置的任何默认属性。如果您需要添加一些特殊选项,但希望保留其他特殊选项,这非常有用。 | Properties | |
alternativeBodyHeader (advanced) | 指定包含替代电子邮件正文的 IN 消息标头的密钥。例如,如果您以文本/html 格式发送电子邮件,并希望为非 HTML 电子邮件客户端提供替代邮件正文,请将此密钥的替代邮件正文设置为标头。 | CamelMailAlternativeBody | 字符串 |
attachmentsContentTransferEncodingResolver (advanced) | 要使用自定义将ContentTransferEncodingResolver 解决用于附件的 content-type-encoding。 | AttachmentsContentTransferEncodingResolver | |
authenticator (advanced) | 用于登录的验证器。如果设置,则忽略密码和用户名。可用于可过期的令牌,因此必须动态读取。 | MailAuthenticator | |
绑定 (高级) | 设置用于从 Camel 消息转换到邮件邮件的绑定。 | MailBinding | |
connectionTimeout (advanced) | 连接超时(毫秒)。 | 30000 | int |
contentType (advanced) | 邮件消息内容类型。将 text/html 用于 HTML 邮件。 | text/plain | 字符串 |
contentTypeResolver (advanced) | 用于确定文件附加的 Content-Type 的解析器。 | ContentTypeResolver | |
debugMode (advanced) | 在底层邮件框架中启用调试模式。SUN 邮件框架默认将调试信息记录到 System.out。 | false | 布尔值 |
HeaderFilterStrategy (advanced) | 使用自定义 org.apache.camel.spi.HeaderFilterStrategy 来过滤标头。 | HeaderFilterStrategy | |
ignoreUnsupportedCharset (advanced) | 选项使 Camel 在发送邮件时忽略本地 JVM 中不支持的 charset。如果 charset 不支持,则 charset=XXX (其中 XXX 代表不受支持的 charset)已从 content-type 中删除,它依赖于平台默认。 | false | 布尔值 |
ignoreUriScheme (advanced) | 选项使 Camel 在发送邮件时忽略本地 JVM 中不支持的 charset。如果 charset 不支持,则 charset=XXX (其中 XXX 代表不受支持的 charset)已从 content-type 中删除,它依赖于平台默认。 | false | 布尔值 |
javaMailProperties (advanced) | 设置 java 邮件选项。将清除任何默认属性,并且仅使用为此方法提供的属性。 | Properties | |
Session (advanced) | 指定 camel 应用于所有邮件交互的邮件会话。在由某些其他资源(如 IaaS 容器)创建和管理邮件会话的情况下很有用。使用自定义邮件会话时,将使用邮件会话中的主机名和端口(如果在会话中配置)。 | 会话 | |
useInlineAttachments (advanced) | 是否使用内联或附加。 | false | 布尔值 |
idempotentRepository (filter) | 可插拔存储库 org.apache.camel.spi.IdempotentRepository,它允许集群从同一站使用,并使存储库协调邮件是否对消费者处理有效。默认情况下不使用存储库。 | IdempotentRepository | |
idempotentRepositoryRemoveOnCommit (filter) | 使用幂等存储库时,当成功处理邮件并提交后,消息 ID 会从幂等存储库(默认)或保留在存储库中。默认情况下,它假定消息 id 是唯一的,且没有保留在存储库中的值,因为邮件消息将标记为 see/moved 或 removed,以防止再次消耗它。因此,将消息 id 存储在幂等存储库中具有较少的值。但是,此选项允许存储消息 ID,因为您可能具有的任何原因。 | true | 布尔值 |
searchTerm (filter) | 引用 javax.mail.search.SearchTerm,它允许根据搜索标准(如主题、正文、来自等)过滤邮件。 | SearchTerm | |
backoffErrorThreshold (scheduler) | 在 backoffMultipler 应该 kick-in 之前发生的后续错误轮询(因为某些错误)的数量。 | int | |
backoffIdleThreshold (scheduler) | 在 backoffMultipler 应该 kick-in 之前应该发生的后续空闲轮询数量。 | int | |
backoffMultiplier (scheduler) | 如果一行中有很多后续空闲/errors,则让调度的轮询消费者避退。然后,倍数是在下一次实际尝试再次发生前跳过的轮询数量。当使用这个选项时,还必须配置 backoffIdleThreshold 和/或 backoffErrorThreshold。 | int | |
delay (scheduler) | 下一次轮询前的时间(毫秒)。 | 60000 | long |
greedy (scheduler) | 如果启用了 greedy,如果上一个运行轮询 1 或更多消息,则 ScheduledPollConsumer 将立即运行。 | false | 布尔值 |
initialDelay (scheduler) | 第一次轮询开始前的毫秒。 | 1000 | long |
repeatCount (scheduler) | 指定触发的最大数量。因此,如果您将其设置为 1,调度程序将只触发一次。如果您将其设置为 5,它将只触发五次。值为零或负数表示会永久触发。 | 0 | long |
runLoggingLevel (scheduler) | 消费者在轮询时记录 start/complete log 行。这个选项允许您为其配置日志级别。 Enum 值:
| TRACE | LoggingLevel |
scheduledExecutorService (scheduler) | 允许配置用于消费者的自定义/共享线程池。默认情况下,每个使用者都有自己的单线程线程池。 | ScheduledExecutorService | |
scheduler (scheduler) | 要使用 camel-spring 或 camel-quartz 组件的 cron 调度程序。使用值 spring 或 quartz 用于内置在调度程序中。 | none | 对象 |
schedulerProperties (scheduler) | 在使用自定义调度程序或任何基于 Spring 的调度程序时配置附加属性。 | Map | |
startScheduler (scheduler) | 调度程序是否应自动启动。 | true | 布尔值 |
timeUnit (scheduler) | initialDelay 和 delay 选项的时间单位。 Enum 值:
| MILLISECONDS | TimeUnit |
useFixedDelay (scheduler) | 控制是否使用固定延迟或固定率。详情请参阅 JDK 中的 ScheduledExecutorService。 | true | 布尔值 |
密码 (安全) | 登录的密码。另请参阅 setAuthenticator (MailAuthenticator)。 | 字符串 | |
sslContextParameters (security) | 使用 SSLContext 参数配置安全性: | SSLContextParameters | |
用户名 (安全) | 用于登录的用户名。另请参阅 setAuthenticator (MailAuthenticator)。 | 字符串 | |
sortTerm (sort) | 排序消息的顺序。只支持 IMAP。在使用 POP3 或 IMAP 服务器没有 SORT 功能时,模拟到某种程度。 | SortTerm[] |
38.4.3. 端点示例
通常,您可以使用登录凭证指定 URI,如下所示(示例为 SMTP):
smtp://[username@]host[:port][?password=somepwd]
另外,也可以将用户名和密码指定为查询选项:
smtp://host[:port]?password=somepwd&username=someuser
例如:
smtp://mycompany.mailserver:30?password=tiger&username=scott
38.4.4. 组件别名名称
- IMAP
- IMAPs
- POP3s
- SMTP
- SMTPs
38.4.5. 默认端口
支持默认端口号。如果省略端口号,Camel 会根据协议决定要使用的端口号。
协议 | 默认端口号 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|