This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch raw
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 3329263637f1fbbcec744e3cc381b75ee66342ec
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Wed Jul 26 07:34:18 2023 +0200

    CAMEL-18326: camel-google-mail - Add raw option to mail-stream.
---
 .../catalog/components/google-mail-stream.json     | 66 +++++++++++-----------
 .../GoogleMailStreamComponentConfigurer.java       |  3 +
 .../stream/GoogleMailStreamEndpointConfigurer.java |  3 +
 .../stream/GoogleMailStreamEndpointUriFactory.java |  3 +-
 .../google/mail/stream/google-mail-stream.json     | 66 +++++++++++-----------
 .../mail/stream/GoogleMailStreamConfiguration.java | 14 +++++
 .../mail/stream/GoogleMailStreamConsumer.java      | 14 +++--
 .../GoogleMailStreamEndpointBuilderFactory.java    | 35 ++++++++++++
 8 files changed, 134 insertions(+), 70 deletions(-)

diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-mail-stream.json
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-mail-stream.json
index 0c550570cc6..0f64cafe527 100644
--- 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-mail-stream.json
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-mail-stream.json
@@ -30,14 +30,15 @@
     "markAsRead": { "index": 5, "kind": "property", "displayName": "Mark As 
Read", "group": "consumer", "label": "", "required": false, "type": "boolean", 
"javaType": "boolean", "deprecated": false, "autowired": false, "secret": 
false, "defaultValue": true, "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "Mark the message as read 
once it has been consumed" },
     "maxResults": { "index": 6, "kind": "property", "displayName": "Max 
Results", "group": "consumer", "label": "", "required": false, "type": 
"integer", "javaType": "long", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 10, "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "Max results to be 
returned" },
     "query": { "index": 7, "kind": "property", "displayName": "Query", 
"group": "consumer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": "is:unread", "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "The query to execute on 
gmail box" },
-    "scopes": { "index": 8, "kind": "property", "displayName": "Scopes", 
"group": "consumer", "label": "", "required": false, "type": "array", 
"javaType": "java.util.List<java.lang.String>", "deprecated": false, 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "GMail scopes" },
-    "autowiredEnabled": { "index": 9, "kind": "property", "displayName": 
"Autowired Enabled", "group": "advanced", "label": "advanced", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Whether autowiring is enabled. This is used for automatic autowiring options 
(the option must be marked as autowired) by looking up in the registry to find 
if there is a single instance of matching t [...]
-    "clientFactory": { "index": 10, "kind": "property", "displayName": "Client 
Factory", "group": "advanced", "label": "advanced", "required": false, "type": 
"object", "javaType": 
"org.apache.camel.component.google.mail.GoogleMailClientFactory", "deprecated": 
false, "autowired": false, "secret": false, "description": "The client Factory" 
},
-    "configuration": { "index": 11, "kind": "property", "displayName": 
"Configuration", "group": "advanced", "label": "advanced", "required": false, 
"type": "object", "javaType": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"deprecated": false, "autowired": false, "secret": false, "description": "The 
configuration" },
-    "accessToken": { "index": 12, "kind": "property", "displayName": "Access 
Token", "group": "security", "label": "security", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": true, "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "OAuth 2 access token. 
This typically expires after an hour so refreshToken is recom [...]
-    "clientSecret": { "index": 13, "kind": "property", "displayName": "Client 
Secret", "group": "security", "label": "security", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": true, "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "Client secret of the 
mail application" },
-    "refreshToken": { "index": 14, "kind": "property", "displayName": "Refresh 
Token", "group": "security", "label": "security", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": true, "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "OAuth 2 refresh token. 
Using this, the Google Calendar component can obtain a new [...]
-    "serviceAccountKey": { "index": 15, "kind": "property", "displayName": 
"Service Account Key", "group": "security", "label": "security", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "Sets .json file with 
credentials for Service account" }
+    "raw": { "index": 8, "kind": "property", "displayName": "Raw", "group": 
"consumer", "label": "", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "Whether to store the 
entire email message in an RFC 2822 formatted and base64url encoded stri [...]
+    "scopes": { "index": 9, "kind": "property", "displayName": "Scopes", 
"group": "consumer", "label": "", "required": false, "type": "array", 
"javaType": "java.util.List<java.lang.String>", "deprecated": false, 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "GMail scopes" },
+    "autowiredEnabled": { "index": 10, "kind": "property", "displayName": 
"Autowired Enabled", "group": "advanced", "label": "advanced", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Whether autowiring is enabled. This is used for automatic autowiring options 
(the option must be marked as autowired) by looking up in the registry to find 
if there is a single instance of matching  [...]
+    "clientFactory": { "index": 11, "kind": "property", "displayName": "Client 
Factory", "group": "advanced", "label": "advanced", "required": false, "type": 
"object", "javaType": 
"org.apache.camel.component.google.mail.GoogleMailClientFactory", "deprecated": 
false, "autowired": false, "secret": false, "description": "The client Factory" 
},
+    "configuration": { "index": 12, "kind": "property", "displayName": 
"Configuration", "group": "advanced", "label": "advanced", "required": false, 
"type": "object", "javaType": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"deprecated": false, "autowired": false, "secret": false, "description": "The 
configuration" },
+    "accessToken": { "index": 13, "kind": "property", "displayName": "Access 
Token", "group": "security", "label": "security", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": true, "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "OAuth 2 access token. 
This typically expires after an hour so refreshToken is recom [...]
+    "clientSecret": { "index": 14, "kind": "property", "displayName": "Client 
Secret", "group": "security", "label": "security", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": true, "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "Client secret of the 
mail application" },
+    "refreshToken": { "index": 15, "kind": "property", "displayName": "Refresh 
Token", "group": "security", "label": "security", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": true, "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "OAuth 2 refresh token. 
Using this, the Google Calendar component can obtain a new [...]
+    "serviceAccountKey": { "index": 16, "kind": "property", "displayName": 
"Service Account Key", "group": "security", "label": "security", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "Sets .json file with 
credentials for Service account" }
   },
   "headers": {
     "CamelGoogleMailStreamTo": { "index": 0, "kind": "header", "displayName": 
"", "group": "consumer", "label": "", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The recipient of the message", "constantName": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConstants#MAIL_TO"
 },
@@ -56,29 +57,30 @@
     "markAsRead": { "index": 5, "kind": "parameter", "displayName": "Mark As 
Read", "group": "consumer", "label": "", "required": false, "type": "boolean", 
"javaType": "boolean", "deprecated": false, "autowired": false, "secret": 
false, "defaultValue": true, "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "Mark the message as read 
once it has been consumed" },
     "maxResults": { "index": 6, "kind": "parameter", "displayName": "Max 
Results", "group": "consumer", "label": "", "required": false, "type": 
"integer", "javaType": "long", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 10, "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "Max results to be 
returned" },
     "query": { "index": 7, "kind": "parameter", "displayName": "Query", 
"group": "consumer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": "is:unread", "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "The query to execute on 
gmail box" },
-    "scopes": { "index": 8, "kind": "parameter", "displayName": "Scopes", 
"group": "consumer", "label": "", "required": false, "type": "array", 
"javaType": "java.util.List<java.lang.String>", "deprecated": false, 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "GMail scopes" },
-    "sendEmptyMessageWhenIdle": { "index": 9, "kind": "parameter", 
"displayName": "Send Empty Message When Idle", "group": "consumer", "label": 
"consumer", "required": false, "type": "boolean", "javaType": "boolean", 
"deprecated": false, "autowired": false, "secret": false, "defaultValue": 
false, "description": "If the polling consumer did not poll any files, you can 
enable this option to send an empty message (no body) instead." },
-    "bridgeErrorHandler": { "index": 10, "kind": "parameter", "displayName": 
"Bridge Error Handler", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "description": "Allows for bridging the consumer to the 
Camel routing Error Handler, which mean any exceptions occurred while the 
consumer is trying to pickup incoming messages, or the li [...]
-    "exceptionHandler": { "index": 11, "kind": "parameter", "displayName": 
"Exception Handler", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "object", "javaType": 
"org.apache.camel.spi.ExceptionHandler", "optionalPrefix": "consumer.", 
"deprecated": false, "autowired": false, "secret": false, "description": "To 
let the consumer use a custom ExceptionHandler. Notice if the option 
bridgeErrorHandler is enabled then this option is not in use. By de [...]
-    "exchangePattern": { "index": 12, "kind": "parameter", "displayName": 
"Exchange Pattern", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "object", "javaType": 
"org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut" ], 
"deprecated": false, "autowired": false, "secret": false, "description": "Sets 
the exchange pattern when the consumer creates an exchange." },
-    "pollStrategy": { "index": 13, "kind": "parameter", "displayName": "Poll 
Strategy", "group": "consumer (advanced)", "label": "consumer,advanced", 
"required": false, "type": "object", "javaType": 
"org.apache.camel.spi.PollingConsumerPollStrategy", "deprecated": false, 
"autowired": false, "secret": false, "description": "A pluggable 
org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your 
custom implementation to control error handling usually occurred during the po 
[...]
-    "backoffErrorThreshold": { "index": 14, "kind": "parameter", 
"displayName": "Backoff Error Threshold", "group": "scheduler", "label": 
"consumer,scheduler", "required": false, "type": "integer", "javaType": "int", 
"deprecated": false, "autowired": false, "secret": false, "description": "The 
number of subsequent error polls (failed due some error) that should happen 
before the backoffMultipler should kick-in." },
-    "backoffIdleThreshold": { "index": 15, "kind": "parameter", "displayName": 
"Backoff Idle Threshold", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "integer", "javaType": "int", "deprecated": false, 
"autowired": false, "secret": false, "description": "The number of subsequent 
idle polls that should happen before the backoffMultipler should kick-in." },
-    "backoffMultiplier": { "index": 16, "kind": "parameter", "displayName": 
"Backoff Multiplier", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "integer", "javaType": "int", "deprecated": false, 
"autowired": false, "secret": false, "description": "To let the scheduled 
polling consumer backoff if there has been a number of subsequent idles\/errors 
in a row. The multiplier is then the number of polls that will be skipped 
before the next actual attempt is h [...]
-    "delay": { "index": 17, "kind": "parameter", "displayName": "Delay", 
"group": "scheduler", "label": "consumer,scheduler", "required": false, "type": 
"integer", "javaType": "long", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 500, "description": "Milliseconds before the 
next poll." },
-    "greedy": { "index": 18, "kind": "parameter", "displayName": "Greedy", 
"group": "scheduler", "label": "consumer,scheduler", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "description": "If greedy is enabled, 
then the ScheduledPollConsumer will run immediately again, if the previous run 
polled 1 or more messages." },
-    "initialDelay": { "index": 19, "kind": "parameter", "displayName": 
"Initial Delay", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "integer", "javaType": "long", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": 1000, "description": 
"Milliseconds before the first poll starts." },
-    "repeatCount": { "index": 20, "kind": "parameter", "displayName": "Repeat 
Count", "group": "scheduler", "label": "consumer,scheduler", "required": false, 
"type": "integer", "javaType": "long", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 0, "description": "Specifies a maximum limit 
of number of fires. So if you set it to 1, the scheduler will only fire once. 
If you set it to 5, it will only fire five times. A value of zero or negative 
means fire forever." },
-    "runLoggingLevel": { "index": 21, "kind": "parameter", "displayName": "Run 
Logging Level", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "object", "javaType": 
"org.apache.camel.LoggingLevel", "enum": [ "TRACE", "DEBUG", "INFO", "WARN", 
"ERROR", "OFF" ], "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": "TRACE", "description": "The consumer logs a start\/complete 
log line when it polls. This option allows you to configure the l [...]
-    "scheduledExecutorService": { "index": 22, "kind": "parameter", 
"displayName": "Scheduled Executor Service", "group": "scheduler", "label": 
"consumer,scheduler", "required": false, "type": "object", "javaType": 
"java.util.concurrent.ScheduledExecutorService", "deprecated": false, 
"autowired": false, "secret": false, "description": "Allows for configuring a 
custom\/shared thread pool to use for the consumer. By default each consumer 
has its own single threaded thread pool." },
-    "scheduler": { "index": 23, "kind": "parameter", "displayName": 
"Scheduler", "group": "scheduler", "label": "consumer,scheduler", "required": 
false, "type": "object", "javaType": "java.lang.Object", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": "none", "description": "To 
use a cron scheduler from either camel-spring or camel-quartz component. Use 
value spring or quartz for built in scheduler" },
-    "schedulerProperties": { "index": 24, "kind": "parameter", "displayName": 
"Scheduler Properties", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "object", "javaType": 
"java.util.Map<java.lang.String, java.lang.Object>", "prefix": "scheduler.", 
"multiValue": true, "deprecated": false, "autowired": false, "secret": false, 
"description": "To configure additional properties when using a custom 
scheduler or any of the Quartz, Spring based scheduler." },
-    "startScheduler": { "index": 25, "kind": "parameter", "displayName": 
"Start Scheduler", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "boolean", "javaType": "boolean", "deprecated": 
false, "autowired": false, "secret": false, "defaultValue": true, 
"description": "Whether the scheduler should be auto started." },
-    "timeUnit": { "index": 26, "kind": "parameter", "displayName": "Time 
Unit", "group": "scheduler", "label": "consumer,scheduler", "required": false, 
"type": "object", "javaType": "java.util.concurrent.TimeUnit", "enum": [ 
"NANOSECONDS", "MICROSECONDS", "MILLISECONDS", "SECONDS", "MINUTES", "HOURS", 
"DAYS" ], "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": "MILLISECONDS", "description": "Time unit for initialDelay and 
delay options." },
-    "useFixedDelay": { "index": 27, "kind": "parameter", "displayName": "Use 
Fixed Delay", "group": "scheduler", "label": "consumer,scheduler", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in 
JDK for details." },
-    "accessToken": { "index": 28, "kind": "parameter", "displayName": "Access 
Token", "group": "security", "label": "security", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": true, "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "OAuth 2 access token. 
This typically expires after an hour so refreshToken is reco [...]
-    "clientSecret": { "index": 29, "kind": "parameter", "displayName": "Client 
Secret", "group": "security", "label": "security", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": true, "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "Client secret of the 
mail application" },
-    "refreshToken": { "index": 30, "kind": "parameter", "displayName": 
"Refresh Token", "group": "security", "label": "security", "required": false, 
"type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": true, "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "OAuth 2 refresh token. 
Using this, the Google Calendar component can obtain a ne [...]
-    "serviceAccountKey": { "index": 31, "kind": "parameter", "displayName": 
"Service Account Key", "group": "security", "label": "security", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "Sets .json file with 
credentials for Service account" }
+    "raw": { "index": 8, "kind": "parameter", "displayName": "Raw", "group": 
"consumer", "label": "", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "Whether to store the 
entire email message in an RFC 2822 formatted and base64url encoded str [...]
+    "scopes": { "index": 9, "kind": "parameter", "displayName": "Scopes", 
"group": "consumer", "label": "", "required": false, "type": "array", 
"javaType": "java.util.List<java.lang.String>", "deprecated": false, 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "GMail scopes" },
+    "sendEmptyMessageWhenIdle": { "index": 10, "kind": "parameter", 
"displayName": "Send Empty Message When Idle", "group": "consumer", "label": 
"consumer", "required": false, "type": "boolean", "javaType": "boolean", 
"deprecated": false, "autowired": false, "secret": false, "defaultValue": 
false, "description": "If the polling consumer did not poll any files, you can 
enable this option to send an empty message (no body) instead." },
+    "bridgeErrorHandler": { "index": 11, "kind": "parameter", "displayName": 
"Bridge Error Handler", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "description": "Allows for bridging the consumer to the 
Camel routing Error Handler, which mean any exceptions occurred while the 
consumer is trying to pickup incoming messages, or the li [...]
+    "exceptionHandler": { "index": 12, "kind": "parameter", "displayName": 
"Exception Handler", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "object", "javaType": 
"org.apache.camel.spi.ExceptionHandler", "optionalPrefix": "consumer.", 
"deprecated": false, "autowired": false, "secret": false, "description": "To 
let the consumer use a custom ExceptionHandler. Notice if the option 
bridgeErrorHandler is enabled then this option is not in use. By de [...]
+    "exchangePattern": { "index": 13, "kind": "parameter", "displayName": 
"Exchange Pattern", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "object", "javaType": 
"org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut" ], 
"deprecated": false, "autowired": false, "secret": false, "description": "Sets 
the exchange pattern when the consumer creates an exchange." },
+    "pollStrategy": { "index": 14, "kind": "parameter", "displayName": "Poll 
Strategy", "group": "consumer (advanced)", "label": "consumer,advanced", 
"required": false, "type": "object", "javaType": 
"org.apache.camel.spi.PollingConsumerPollStrategy", "deprecated": false, 
"autowired": false, "secret": false, "description": "A pluggable 
org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your 
custom implementation to control error handling usually occurred during the po 
[...]
+    "backoffErrorThreshold": { "index": 15, "kind": "parameter", 
"displayName": "Backoff Error Threshold", "group": "scheduler", "label": 
"consumer,scheduler", "required": false, "type": "integer", "javaType": "int", 
"deprecated": false, "autowired": false, "secret": false, "description": "The 
number of subsequent error polls (failed due some error) that should happen 
before the backoffMultipler should kick-in." },
+    "backoffIdleThreshold": { "index": 16, "kind": "parameter", "displayName": 
"Backoff Idle Threshold", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "integer", "javaType": "int", "deprecated": false, 
"autowired": false, "secret": false, "description": "The number of subsequent 
idle polls that should happen before the backoffMultipler should kick-in." },
+    "backoffMultiplier": { "index": 17, "kind": "parameter", "displayName": 
"Backoff Multiplier", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "integer", "javaType": "int", "deprecated": false, 
"autowired": false, "secret": false, "description": "To let the scheduled 
polling consumer backoff if there has been a number of subsequent idles\/errors 
in a row. The multiplier is then the number of polls that will be skipped 
before the next actual attempt is h [...]
+    "delay": { "index": 18, "kind": "parameter", "displayName": "Delay", 
"group": "scheduler", "label": "consumer,scheduler", "required": false, "type": 
"integer", "javaType": "long", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 500, "description": "Milliseconds before the 
next poll." },
+    "greedy": { "index": 19, "kind": "parameter", "displayName": "Greedy", 
"group": "scheduler", "label": "consumer,scheduler", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "description": "If greedy is enabled, 
then the ScheduledPollConsumer will run immediately again, if the previous run 
polled 1 or more messages." },
+    "initialDelay": { "index": 20, "kind": "parameter", "displayName": 
"Initial Delay", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "integer", "javaType": "long", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": 1000, "description": 
"Milliseconds before the first poll starts." },
+    "repeatCount": { "index": 21, "kind": "parameter", "displayName": "Repeat 
Count", "group": "scheduler", "label": "consumer,scheduler", "required": false, 
"type": "integer", "javaType": "long", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 0, "description": "Specifies a maximum limit 
of number of fires. So if you set it to 1, the scheduler will only fire once. 
If you set it to 5, it will only fire five times. A value of zero or negative 
means fire forever." },
+    "runLoggingLevel": { "index": 22, "kind": "parameter", "displayName": "Run 
Logging Level", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "object", "javaType": 
"org.apache.camel.LoggingLevel", "enum": [ "TRACE", "DEBUG", "INFO", "WARN", 
"ERROR", "OFF" ], "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": "TRACE", "description": "The consumer logs a start\/complete 
log line when it polls. This option allows you to configure the l [...]
+    "scheduledExecutorService": { "index": 23, "kind": "parameter", 
"displayName": "Scheduled Executor Service", "group": "scheduler", "label": 
"consumer,scheduler", "required": false, "type": "object", "javaType": 
"java.util.concurrent.ScheduledExecutorService", "deprecated": false, 
"autowired": false, "secret": false, "description": "Allows for configuring a 
custom\/shared thread pool to use for the consumer. By default each consumer 
has its own single threaded thread pool." },
+    "scheduler": { "index": 24, "kind": "parameter", "displayName": 
"Scheduler", "group": "scheduler", "label": "consumer,scheduler", "required": 
false, "type": "object", "javaType": "java.lang.Object", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": "none", "description": "To 
use a cron scheduler from either camel-spring or camel-quartz component. Use 
value spring or quartz for built in scheduler" },
+    "schedulerProperties": { "index": 25, "kind": "parameter", "displayName": 
"Scheduler Properties", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "object", "javaType": 
"java.util.Map<java.lang.String, java.lang.Object>", "prefix": "scheduler.", 
"multiValue": true, "deprecated": false, "autowired": false, "secret": false, 
"description": "To configure additional properties when using a custom 
scheduler or any of the Quartz, Spring based scheduler." },
+    "startScheduler": { "index": 26, "kind": "parameter", "displayName": 
"Start Scheduler", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "boolean", "javaType": "boolean", "deprecated": 
false, "autowired": false, "secret": false, "defaultValue": true, 
"description": "Whether the scheduler should be auto started." },
+    "timeUnit": { "index": 27, "kind": "parameter", "displayName": "Time 
Unit", "group": "scheduler", "label": "consumer,scheduler", "required": false, 
"type": "object", "javaType": "java.util.concurrent.TimeUnit", "enum": [ 
"NANOSECONDS", "MICROSECONDS", "MILLISECONDS", "SECONDS", "MINUTES", "HOURS", 
"DAYS" ], "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": "MILLISECONDS", "description": "Time unit for initialDelay and 
delay options." },
+    "useFixedDelay": { "index": 28, "kind": "parameter", "displayName": "Use 
Fixed Delay", "group": "scheduler", "label": "consumer,scheduler", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in 
JDK for details." },
+    "accessToken": { "index": 29, "kind": "parameter", "displayName": "Access 
Token", "group": "security", "label": "security", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": true, "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "OAuth 2 access token. 
This typically expires after an hour so refreshToken is reco [...]
+    "clientSecret": { "index": 30, "kind": "parameter", "displayName": "Client 
Secret", "group": "security", "label": "security", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": true, "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "Client secret of the 
mail application" },
+    "refreshToken": { "index": 31, "kind": "parameter", "displayName": 
"Refresh Token", "group": "security", "label": "security", "required": false, 
"type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": true, "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "OAuth 2 refresh token. 
Using this, the Google Calendar component can obtain a ne [...]
+    "serviceAccountKey": { "index": 32, "kind": "parameter", "displayName": 
"Service Account Key", "group": "security", "label": "security", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "Sets .json file with 
credentials for Service account" }
   }
 }
diff --git 
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/stream/GoogleMailStreamComponentConfigurer.java
 
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/stream/GoogleMailStreamComponentConfigurer.java
index d8bda0b35d7..e69fcffa568 100644
--- 
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/stream/GoogleMailStreamComponentConfigurer.java
+++ 
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/stream/GoogleMailStreamComponentConfigurer.java
@@ -50,6 +50,7 @@ public class GoogleMailStreamComponentConfigurer extends 
PropertyConfigurerSuppo
         case "maxresults":
         case "maxResults": 
getOrCreateConfiguration(target).setMaxResults(property(camelContext, 
long.class, value)); return true;
         case "query": 
getOrCreateConfiguration(target).setQuery(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "raw": 
getOrCreateConfiguration(target).setRaw(property(camelContext, boolean.class, 
value)); return true;
         case "refreshtoken":
         case "refreshToken": 
getOrCreateConfiguration(target).setRefreshToken(property(camelContext, 
java.lang.String.class, value)); return true;
         case "scopes": 
getOrCreateConfiguration(target).setScopes(property(camelContext, 
java.util.List.class, value)); return true;
@@ -84,6 +85,7 @@ public class GoogleMailStreamComponentConfigurer extends 
PropertyConfigurerSuppo
         case "maxresults":
         case "maxResults": return long.class;
         case "query": return java.lang.String.class;
+        case "raw": return boolean.class;
         case "refreshtoken":
         case "refreshToken": return java.lang.String.class;
         case "scopes": return java.util.List.class;
@@ -119,6 +121,7 @@ public class GoogleMailStreamComponentConfigurer extends 
PropertyConfigurerSuppo
         case "maxresults":
         case "maxResults": return 
getOrCreateConfiguration(target).getMaxResults();
         case "query": return getOrCreateConfiguration(target).getQuery();
+        case "raw": return getOrCreateConfiguration(target).isRaw();
         case "refreshtoken":
         case "refreshToken": return 
getOrCreateConfiguration(target).getRefreshToken();
         case "scopes": return getOrCreateConfiguration(target).getScopes();
diff --git 
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/stream/GoogleMailStreamEndpointConfigurer.java
 
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/stream/GoogleMailStreamEndpointConfigurer.java
index d7670d382b4..6cb6c53eb97 100644
--- 
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/stream/GoogleMailStreamEndpointConfigurer.java
+++ 
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/stream/GoogleMailStreamEndpointConfigurer.java
@@ -54,6 +54,7 @@ public class GoogleMailStreamEndpointConfigurer extends 
PropertyConfigurerSuppor
         case "pollstrategy":
         case "pollStrategy": target.setPollStrategy(property(camelContext, 
org.apache.camel.spi.PollingConsumerPollStrategy.class, value)); return true;
         case "query": 
target.getConfiguration().setQuery(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "raw": target.getConfiguration().setRaw(property(camelContext, 
boolean.class, value)); return true;
         case "refreshtoken":
         case "refreshToken": 
target.getConfiguration().setRefreshToken(property(camelContext, 
java.lang.String.class, value)); return true;
         case "repeatcount":
@@ -116,6 +117,7 @@ public class GoogleMailStreamEndpointConfigurer extends 
PropertyConfigurerSuppor
         case "pollstrategy":
         case "pollStrategy": return 
org.apache.camel.spi.PollingConsumerPollStrategy.class;
         case "query": return java.lang.String.class;
+        case "raw": return boolean.class;
         case "refreshtoken":
         case "refreshToken": return java.lang.String.class;
         case "repeatcount":
@@ -179,6 +181,7 @@ public class GoogleMailStreamEndpointConfigurer extends 
PropertyConfigurerSuppor
         case "pollstrategy":
         case "pollStrategy": return target.getPollStrategy();
         case "query": return target.getConfiguration().getQuery();
+        case "raw": return target.getConfiguration().isRaw();
         case "refreshtoken":
         case "refreshToken": return 
target.getConfiguration().getRefreshToken();
         case "repeatcount":
diff --git 
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/stream/GoogleMailStreamEndpointUriFactory.java
 
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/stream/GoogleMailStreamEndpointUriFactory.java
index ad66390538e..22ce31a5e84 100644
--- 
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/stream/GoogleMailStreamEndpointUriFactory.java
+++ 
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/stream/GoogleMailStreamEndpointUriFactory.java
@@ -21,7 +21,7 @@ public class GoogleMailStreamEndpointUriFactory extends 
org.apache.camel.support
     private static final Set<String> SECRET_PROPERTY_NAMES;
     private static final Set<String> MULTI_VALUE_PREFIXES;
     static {
-        Set<String> props = new HashSet<>(32);
+        Set<String> props = new HashSet<>(33);
         props.add("accessToken");
         props.add("applicationName");
         props.add("backoffErrorThreshold");
@@ -42,6 +42,7 @@ public class GoogleMailStreamEndpointUriFactory extends 
org.apache.camel.support
         props.add("maxResults");
         props.add("pollStrategy");
         props.add("query");
+        props.add("raw");
         props.add("refreshToken");
         props.add("repeatCount");
         props.add("runLoggingLevel");
diff --git 
a/components/camel-google/camel-google-mail/src/generated/resources/org/apache/camel/component/google/mail/stream/google-mail-stream.json
 
b/components/camel-google/camel-google-mail/src/generated/resources/org/apache/camel/component/google/mail/stream/google-mail-stream.json
index 0c550570cc6..0f64cafe527 100644
--- 
a/components/camel-google/camel-google-mail/src/generated/resources/org/apache/camel/component/google/mail/stream/google-mail-stream.json
+++ 
b/components/camel-google/camel-google-mail/src/generated/resources/org/apache/camel/component/google/mail/stream/google-mail-stream.json
@@ -30,14 +30,15 @@
     "markAsRead": { "index": 5, "kind": "property", "displayName": "Mark As 
Read", "group": "consumer", "label": "", "required": false, "type": "boolean", 
"javaType": "boolean", "deprecated": false, "autowired": false, "secret": 
false, "defaultValue": true, "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "Mark the message as read 
once it has been consumed" },
     "maxResults": { "index": 6, "kind": "property", "displayName": "Max 
Results", "group": "consumer", "label": "", "required": false, "type": 
"integer", "javaType": "long", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 10, "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "Max results to be 
returned" },
     "query": { "index": 7, "kind": "property", "displayName": "Query", 
"group": "consumer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": "is:unread", "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "The query to execute on 
gmail box" },
-    "scopes": { "index": 8, "kind": "property", "displayName": "Scopes", 
"group": "consumer", "label": "", "required": false, "type": "array", 
"javaType": "java.util.List<java.lang.String>", "deprecated": false, 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "GMail scopes" },
-    "autowiredEnabled": { "index": 9, "kind": "property", "displayName": 
"Autowired Enabled", "group": "advanced", "label": "advanced", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Whether autowiring is enabled. This is used for automatic autowiring options 
(the option must be marked as autowired) by looking up in the registry to find 
if there is a single instance of matching t [...]
-    "clientFactory": { "index": 10, "kind": "property", "displayName": "Client 
Factory", "group": "advanced", "label": "advanced", "required": false, "type": 
"object", "javaType": 
"org.apache.camel.component.google.mail.GoogleMailClientFactory", "deprecated": 
false, "autowired": false, "secret": false, "description": "The client Factory" 
},
-    "configuration": { "index": 11, "kind": "property", "displayName": 
"Configuration", "group": "advanced", "label": "advanced", "required": false, 
"type": "object", "javaType": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"deprecated": false, "autowired": false, "secret": false, "description": "The 
configuration" },
-    "accessToken": { "index": 12, "kind": "property", "displayName": "Access 
Token", "group": "security", "label": "security", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": true, "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "OAuth 2 access token. 
This typically expires after an hour so refreshToken is recom [...]
-    "clientSecret": { "index": 13, "kind": "property", "displayName": "Client 
Secret", "group": "security", "label": "security", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": true, "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "Client secret of the 
mail application" },
-    "refreshToken": { "index": 14, "kind": "property", "displayName": "Refresh 
Token", "group": "security", "label": "security", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": true, "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "OAuth 2 refresh token. 
Using this, the Google Calendar component can obtain a new [...]
-    "serviceAccountKey": { "index": 15, "kind": "property", "displayName": 
"Service Account Key", "group": "security", "label": "security", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "Sets .json file with 
credentials for Service account" }
+    "raw": { "index": 8, "kind": "property", "displayName": "Raw", "group": 
"consumer", "label": "", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "Whether to store the 
entire email message in an RFC 2822 formatted and base64url encoded stri [...]
+    "scopes": { "index": 9, "kind": "property", "displayName": "Scopes", 
"group": "consumer", "label": "", "required": false, "type": "array", 
"javaType": "java.util.List<java.lang.String>", "deprecated": false, 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "GMail scopes" },
+    "autowiredEnabled": { "index": 10, "kind": "property", "displayName": 
"Autowired Enabled", "group": "advanced", "label": "advanced", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Whether autowiring is enabled. This is used for automatic autowiring options 
(the option must be marked as autowired) by looking up in the registry to find 
if there is a single instance of matching  [...]
+    "clientFactory": { "index": 11, "kind": "property", "displayName": "Client 
Factory", "group": "advanced", "label": "advanced", "required": false, "type": 
"object", "javaType": 
"org.apache.camel.component.google.mail.GoogleMailClientFactory", "deprecated": 
false, "autowired": false, "secret": false, "description": "The client Factory" 
},
+    "configuration": { "index": 12, "kind": "property", "displayName": 
"Configuration", "group": "advanced", "label": "advanced", "required": false, 
"type": "object", "javaType": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"deprecated": false, "autowired": false, "secret": false, "description": "The 
configuration" },
+    "accessToken": { "index": 13, "kind": "property", "displayName": "Access 
Token", "group": "security", "label": "security", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": true, "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "OAuth 2 access token. 
This typically expires after an hour so refreshToken is recom [...]
+    "clientSecret": { "index": 14, "kind": "property", "displayName": "Client 
Secret", "group": "security", "label": "security", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": true, "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "Client secret of the 
mail application" },
+    "refreshToken": { "index": 15, "kind": "property", "displayName": "Refresh 
Token", "group": "security", "label": "security", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": true, "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "OAuth 2 refresh token. 
Using this, the Google Calendar component can obtain a new [...]
+    "serviceAccountKey": { "index": 16, "kind": "property", "displayName": 
"Service Account Key", "group": "security", "label": "security", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "Sets .json file with 
credentials for Service account" }
   },
   "headers": {
     "CamelGoogleMailStreamTo": { "index": 0, "kind": "header", "displayName": 
"", "group": "consumer", "label": "", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The recipient of the message", "constantName": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConstants#MAIL_TO"
 },
@@ -56,29 +57,30 @@
     "markAsRead": { "index": 5, "kind": "parameter", "displayName": "Mark As 
Read", "group": "consumer", "label": "", "required": false, "type": "boolean", 
"javaType": "boolean", "deprecated": false, "autowired": false, "secret": 
false, "defaultValue": true, "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "Mark the message as read 
once it has been consumed" },
     "maxResults": { "index": 6, "kind": "parameter", "displayName": "Max 
Results", "group": "consumer", "label": "", "required": false, "type": 
"integer", "javaType": "long", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 10, "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "Max results to be 
returned" },
     "query": { "index": 7, "kind": "parameter", "displayName": "Query", 
"group": "consumer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": "is:unread", "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "The query to execute on 
gmail box" },
-    "scopes": { "index": 8, "kind": "parameter", "displayName": "Scopes", 
"group": "consumer", "label": "", "required": false, "type": "array", 
"javaType": "java.util.List<java.lang.String>", "deprecated": false, 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "GMail scopes" },
-    "sendEmptyMessageWhenIdle": { "index": 9, "kind": "parameter", 
"displayName": "Send Empty Message When Idle", "group": "consumer", "label": 
"consumer", "required": false, "type": "boolean", "javaType": "boolean", 
"deprecated": false, "autowired": false, "secret": false, "defaultValue": 
false, "description": "If the polling consumer did not poll any files, you can 
enable this option to send an empty message (no body) instead." },
-    "bridgeErrorHandler": { "index": 10, "kind": "parameter", "displayName": 
"Bridge Error Handler", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "description": "Allows for bridging the consumer to the 
Camel routing Error Handler, which mean any exceptions occurred while the 
consumer is trying to pickup incoming messages, or the li [...]
-    "exceptionHandler": { "index": 11, "kind": "parameter", "displayName": 
"Exception Handler", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "object", "javaType": 
"org.apache.camel.spi.ExceptionHandler", "optionalPrefix": "consumer.", 
"deprecated": false, "autowired": false, "secret": false, "description": "To 
let the consumer use a custom ExceptionHandler. Notice if the option 
bridgeErrorHandler is enabled then this option is not in use. By de [...]
-    "exchangePattern": { "index": 12, "kind": "parameter", "displayName": 
"Exchange Pattern", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "object", "javaType": 
"org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut" ], 
"deprecated": false, "autowired": false, "secret": false, "description": "Sets 
the exchange pattern when the consumer creates an exchange." },
-    "pollStrategy": { "index": 13, "kind": "parameter", "displayName": "Poll 
Strategy", "group": "consumer (advanced)", "label": "consumer,advanced", 
"required": false, "type": "object", "javaType": 
"org.apache.camel.spi.PollingConsumerPollStrategy", "deprecated": false, 
"autowired": false, "secret": false, "description": "A pluggable 
org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your 
custom implementation to control error handling usually occurred during the po 
[...]
-    "backoffErrorThreshold": { "index": 14, "kind": "parameter", 
"displayName": "Backoff Error Threshold", "group": "scheduler", "label": 
"consumer,scheduler", "required": false, "type": "integer", "javaType": "int", 
"deprecated": false, "autowired": false, "secret": false, "description": "The 
number of subsequent error polls (failed due some error) that should happen 
before the backoffMultipler should kick-in." },
-    "backoffIdleThreshold": { "index": 15, "kind": "parameter", "displayName": 
"Backoff Idle Threshold", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "integer", "javaType": "int", "deprecated": false, 
"autowired": false, "secret": false, "description": "The number of subsequent 
idle polls that should happen before the backoffMultipler should kick-in." },
-    "backoffMultiplier": { "index": 16, "kind": "parameter", "displayName": 
"Backoff Multiplier", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "integer", "javaType": "int", "deprecated": false, 
"autowired": false, "secret": false, "description": "To let the scheduled 
polling consumer backoff if there has been a number of subsequent idles\/errors 
in a row. The multiplier is then the number of polls that will be skipped 
before the next actual attempt is h [...]
-    "delay": { "index": 17, "kind": "parameter", "displayName": "Delay", 
"group": "scheduler", "label": "consumer,scheduler", "required": false, "type": 
"integer", "javaType": "long", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 500, "description": "Milliseconds before the 
next poll." },
-    "greedy": { "index": 18, "kind": "parameter", "displayName": "Greedy", 
"group": "scheduler", "label": "consumer,scheduler", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "description": "If greedy is enabled, 
then the ScheduledPollConsumer will run immediately again, if the previous run 
polled 1 or more messages." },
-    "initialDelay": { "index": 19, "kind": "parameter", "displayName": 
"Initial Delay", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "integer", "javaType": "long", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": 1000, "description": 
"Milliseconds before the first poll starts." },
-    "repeatCount": { "index": 20, "kind": "parameter", "displayName": "Repeat 
Count", "group": "scheduler", "label": "consumer,scheduler", "required": false, 
"type": "integer", "javaType": "long", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 0, "description": "Specifies a maximum limit 
of number of fires. So if you set it to 1, the scheduler will only fire once. 
If you set it to 5, it will only fire five times. A value of zero or negative 
means fire forever." },
-    "runLoggingLevel": { "index": 21, "kind": "parameter", "displayName": "Run 
Logging Level", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "object", "javaType": 
"org.apache.camel.LoggingLevel", "enum": [ "TRACE", "DEBUG", "INFO", "WARN", 
"ERROR", "OFF" ], "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": "TRACE", "description": "The consumer logs a start\/complete 
log line when it polls. This option allows you to configure the l [...]
-    "scheduledExecutorService": { "index": 22, "kind": "parameter", 
"displayName": "Scheduled Executor Service", "group": "scheduler", "label": 
"consumer,scheduler", "required": false, "type": "object", "javaType": 
"java.util.concurrent.ScheduledExecutorService", "deprecated": false, 
"autowired": false, "secret": false, "description": "Allows for configuring a 
custom\/shared thread pool to use for the consumer. By default each consumer 
has its own single threaded thread pool." },
-    "scheduler": { "index": 23, "kind": "parameter", "displayName": 
"Scheduler", "group": "scheduler", "label": "consumer,scheduler", "required": 
false, "type": "object", "javaType": "java.lang.Object", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": "none", "description": "To 
use a cron scheduler from either camel-spring or camel-quartz component. Use 
value spring or quartz for built in scheduler" },
-    "schedulerProperties": { "index": 24, "kind": "parameter", "displayName": 
"Scheduler Properties", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "object", "javaType": 
"java.util.Map<java.lang.String, java.lang.Object>", "prefix": "scheduler.", 
"multiValue": true, "deprecated": false, "autowired": false, "secret": false, 
"description": "To configure additional properties when using a custom 
scheduler or any of the Quartz, Spring based scheduler." },
-    "startScheduler": { "index": 25, "kind": "parameter", "displayName": 
"Start Scheduler", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "boolean", "javaType": "boolean", "deprecated": 
false, "autowired": false, "secret": false, "defaultValue": true, 
"description": "Whether the scheduler should be auto started." },
-    "timeUnit": { "index": 26, "kind": "parameter", "displayName": "Time 
Unit", "group": "scheduler", "label": "consumer,scheduler", "required": false, 
"type": "object", "javaType": "java.util.concurrent.TimeUnit", "enum": [ 
"NANOSECONDS", "MICROSECONDS", "MILLISECONDS", "SECONDS", "MINUTES", "HOURS", 
"DAYS" ], "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": "MILLISECONDS", "description": "Time unit for initialDelay and 
delay options." },
-    "useFixedDelay": { "index": 27, "kind": "parameter", "displayName": "Use 
Fixed Delay", "group": "scheduler", "label": "consumer,scheduler", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in 
JDK for details." },
-    "accessToken": { "index": 28, "kind": "parameter", "displayName": "Access 
Token", "group": "security", "label": "security", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": true, "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "OAuth 2 access token. 
This typically expires after an hour so refreshToken is reco [...]
-    "clientSecret": { "index": 29, "kind": "parameter", "displayName": "Client 
Secret", "group": "security", "label": "security", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": true, "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "Client secret of the 
mail application" },
-    "refreshToken": { "index": 30, "kind": "parameter", "displayName": 
"Refresh Token", "group": "security", "label": "security", "required": false, 
"type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": true, "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "OAuth 2 refresh token. 
Using this, the Google Calendar component can obtain a ne [...]
-    "serviceAccountKey": { "index": 31, "kind": "parameter", "displayName": 
"Service Account Key", "group": "security", "label": "security", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "Sets .json file with 
credentials for Service account" }
+    "raw": { "index": 8, "kind": "parameter", "displayName": "Raw", "group": 
"consumer", "label": "", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "Whether to store the 
entire email message in an RFC 2822 formatted and base64url encoded str [...]
+    "scopes": { "index": 9, "kind": "parameter", "displayName": "Scopes", 
"group": "consumer", "label": "", "required": false, "type": "array", 
"javaType": "java.util.List<java.lang.String>", "deprecated": false, 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "GMail scopes" },
+    "sendEmptyMessageWhenIdle": { "index": 10, "kind": "parameter", 
"displayName": "Send Empty Message When Idle", "group": "consumer", "label": 
"consumer", "required": false, "type": "boolean", "javaType": "boolean", 
"deprecated": false, "autowired": false, "secret": false, "defaultValue": 
false, "description": "If the polling consumer did not poll any files, you can 
enable this option to send an empty message (no body) instead." },
+    "bridgeErrorHandler": { "index": 11, "kind": "parameter", "displayName": 
"Bridge Error Handler", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "description": "Allows for bridging the consumer to the 
Camel routing Error Handler, which mean any exceptions occurred while the 
consumer is trying to pickup incoming messages, or the li [...]
+    "exceptionHandler": { "index": 12, "kind": "parameter", "displayName": 
"Exception Handler", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "object", "javaType": 
"org.apache.camel.spi.ExceptionHandler", "optionalPrefix": "consumer.", 
"deprecated": false, "autowired": false, "secret": false, "description": "To 
let the consumer use a custom ExceptionHandler. Notice if the option 
bridgeErrorHandler is enabled then this option is not in use. By de [...]
+    "exchangePattern": { "index": 13, "kind": "parameter", "displayName": 
"Exchange Pattern", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "object", "javaType": 
"org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut" ], 
"deprecated": false, "autowired": false, "secret": false, "description": "Sets 
the exchange pattern when the consumer creates an exchange." },
+    "pollStrategy": { "index": 14, "kind": "parameter", "displayName": "Poll 
Strategy", "group": "consumer (advanced)", "label": "consumer,advanced", 
"required": false, "type": "object", "javaType": 
"org.apache.camel.spi.PollingConsumerPollStrategy", "deprecated": false, 
"autowired": false, "secret": false, "description": "A pluggable 
org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your 
custom implementation to control error handling usually occurred during the po 
[...]
+    "backoffErrorThreshold": { "index": 15, "kind": "parameter", 
"displayName": "Backoff Error Threshold", "group": "scheduler", "label": 
"consumer,scheduler", "required": false, "type": "integer", "javaType": "int", 
"deprecated": false, "autowired": false, "secret": false, "description": "The 
number of subsequent error polls (failed due some error) that should happen 
before the backoffMultipler should kick-in." },
+    "backoffIdleThreshold": { "index": 16, "kind": "parameter", "displayName": 
"Backoff Idle Threshold", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "integer", "javaType": "int", "deprecated": false, 
"autowired": false, "secret": false, "description": "The number of subsequent 
idle polls that should happen before the backoffMultipler should kick-in." },
+    "backoffMultiplier": { "index": 17, "kind": "parameter", "displayName": 
"Backoff Multiplier", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "integer", "javaType": "int", "deprecated": false, 
"autowired": false, "secret": false, "description": "To let the scheduled 
polling consumer backoff if there has been a number of subsequent idles\/errors 
in a row. The multiplier is then the number of polls that will be skipped 
before the next actual attempt is h [...]
+    "delay": { "index": 18, "kind": "parameter", "displayName": "Delay", 
"group": "scheduler", "label": "consumer,scheduler", "required": false, "type": 
"integer", "javaType": "long", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 500, "description": "Milliseconds before the 
next poll." },
+    "greedy": { "index": 19, "kind": "parameter", "displayName": "Greedy", 
"group": "scheduler", "label": "consumer,scheduler", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "description": "If greedy is enabled, 
then the ScheduledPollConsumer will run immediately again, if the previous run 
polled 1 or more messages." },
+    "initialDelay": { "index": 20, "kind": "parameter", "displayName": 
"Initial Delay", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "integer", "javaType": "long", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": 1000, "description": 
"Milliseconds before the first poll starts." },
+    "repeatCount": { "index": 21, "kind": "parameter", "displayName": "Repeat 
Count", "group": "scheduler", "label": "consumer,scheduler", "required": false, 
"type": "integer", "javaType": "long", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 0, "description": "Specifies a maximum limit 
of number of fires. So if you set it to 1, the scheduler will only fire once. 
If you set it to 5, it will only fire five times. A value of zero or negative 
means fire forever." },
+    "runLoggingLevel": { "index": 22, "kind": "parameter", "displayName": "Run 
Logging Level", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "object", "javaType": 
"org.apache.camel.LoggingLevel", "enum": [ "TRACE", "DEBUG", "INFO", "WARN", 
"ERROR", "OFF" ], "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": "TRACE", "description": "The consumer logs a start\/complete 
log line when it polls. This option allows you to configure the l [...]
+    "scheduledExecutorService": { "index": 23, "kind": "parameter", 
"displayName": "Scheduled Executor Service", "group": "scheduler", "label": 
"consumer,scheduler", "required": false, "type": "object", "javaType": 
"java.util.concurrent.ScheduledExecutorService", "deprecated": false, 
"autowired": false, "secret": false, "description": "Allows for configuring a 
custom\/shared thread pool to use for the consumer. By default each consumer 
has its own single threaded thread pool." },
+    "scheduler": { "index": 24, "kind": "parameter", "displayName": 
"Scheduler", "group": "scheduler", "label": "consumer,scheduler", "required": 
false, "type": "object", "javaType": "java.lang.Object", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": "none", "description": "To 
use a cron scheduler from either camel-spring or camel-quartz component. Use 
value spring or quartz for built in scheduler" },
+    "schedulerProperties": { "index": 25, "kind": "parameter", "displayName": 
"Scheduler Properties", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "object", "javaType": 
"java.util.Map<java.lang.String, java.lang.Object>", "prefix": "scheduler.", 
"multiValue": true, "deprecated": false, "autowired": false, "secret": false, 
"description": "To configure additional properties when using a custom 
scheduler or any of the Quartz, Spring based scheduler." },
+    "startScheduler": { "index": 26, "kind": "parameter", "displayName": 
"Start Scheduler", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "boolean", "javaType": "boolean", "deprecated": 
false, "autowired": false, "secret": false, "defaultValue": true, 
"description": "Whether the scheduler should be auto started." },
+    "timeUnit": { "index": 27, "kind": "parameter", "displayName": "Time 
Unit", "group": "scheduler", "label": "consumer,scheduler", "required": false, 
"type": "object", "javaType": "java.util.concurrent.TimeUnit", "enum": [ 
"NANOSECONDS", "MICROSECONDS", "MILLISECONDS", "SECONDS", "MINUTES", "HOURS", 
"DAYS" ], "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": "MILLISECONDS", "description": "Time unit for initialDelay and 
delay options." },
+    "useFixedDelay": { "index": 28, "kind": "parameter", "displayName": "Use 
Fixed Delay", "group": "scheduler", "label": "consumer,scheduler", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in 
JDK for details." },
+    "accessToken": { "index": 29, "kind": "parameter", "displayName": "Access 
Token", "group": "security", "label": "security", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": true, "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "OAuth 2 access token. 
This typically expires after an hour so refreshToken is reco [...]
+    "clientSecret": { "index": 30, "kind": "parameter", "displayName": "Client 
Secret", "group": "security", "label": "security", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": true, "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "Client secret of the 
mail application" },
+    "refreshToken": { "index": 31, "kind": "parameter", "displayName": 
"Refresh Token", "group": "security", "label": "security", "required": false, 
"type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": true, "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "OAuth 2 refresh token. 
Using this, the Google Calendar component can obtain a ne [...]
+    "serviceAccountKey": { "index": 32, "kind": "parameter", "displayName": 
"Service Account Key", "group": "security", "label": "security", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.google.mail.stream.GoogleMailStreamConfiguration", 
"configurationField": "configuration", "description": "Sets .json file with 
credentials for Service account" }
   }
 }
diff --git 
a/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/stream/GoogleMailStreamConfiguration.java
 
b/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/stream/GoogleMailStreamConfiguration.java
index 1617215856d..e721ccc41a5 100644
--- 
a/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/stream/GoogleMailStreamConfiguration.java
+++ 
b/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/stream/GoogleMailStreamConfiguration.java
@@ -41,6 +41,8 @@ public class GoogleMailStreamConfiguration implements 
Cloneable {
     @UriParam(label = "security", secret = true)
     private String refreshToken;
     @UriParam
+    private boolean raw;
+    @UriParam
     private String applicationName;
     @UriParam(defaultValue = "is:unread")
     private String query = "is:unread";
@@ -103,6 +105,18 @@ public class GoogleMailStreamConfiguration implements 
Cloneable {
         this.refreshToken = refreshToken;
     }
 
+    public boolean isRaw() {
+        return raw;
+    }
+
+    /**
+     * Whether to store the entire email message in an RFC 2822 formatted and 
base64url encoded string (in JSon format),
+     * in the Camel message body.
+     */
+    public void setRaw(boolean raw) {
+        this.raw = raw;
+    }
+
     public String getApplicationName() {
         return applicationName;
     }
diff --git 
a/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/stream/GoogleMailStreamConsumer.java
 
b/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/stream/GoogleMailStreamConsumer.java
index d65e4ea86be..285c8f37ca1 100644
--- 
a/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/stream/GoogleMailStreamConsumer.java
+++ 
b/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/stream/GoogleMailStreamConsumer.java
@@ -181,11 +181,15 @@ public class GoogleMailStreamConsumer extends 
ScheduledBatchPollingConsumer {
         exchange.setPattern(pattern);
         org.apache.camel.Message message = exchange.getIn();
         exchange.getIn().setHeader(GoogleMailStreamConstants.MAIL_ID, 
mail.getId());
-        List<MessagePart> parts = mail.getPayload().getParts();
-        if (parts != null && parts.get(0).getBody().getData() != null) {
-            byte[] bodyBytes = 
Base64.decodeBase64(parts.get(0).getBody().getData().trim());
-            String body = new String(bodyBytes, StandardCharsets.UTF_8);
-            message.setBody(body);
+        if (getConfiguration().isRaw()) {
+            message.setBody(mail.getRaw());
+        } else {
+            List<MessagePart> parts = mail.getPayload().getParts();
+            if (parts != null && parts.get(0).getBody().getData() != null) {
+                byte[] bodyBytes = 
Base64.decodeBase64(parts.get(0).getBody().getData().trim());
+                String body = new String(bodyBytes, StandardCharsets.UTF_8);
+                message.setBody(body);
+            }
         }
         configureHeaders(message, mail.getPayload().getHeaders());
         return exchange;
diff --git 
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/GoogleMailStreamEndpointBuilderFactory.java
 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/GoogleMailStreamEndpointBuilderFactory.java
index 0f906bc82b0..95be7b9b436 100644
--- 
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/GoogleMailStreamEndpointBuilderFactory.java
+++ 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/GoogleMailStreamEndpointBuilderFactory.java
@@ -177,6 +177,41 @@ public interface GoogleMailStreamEndpointBuilderFactory {
             doSetProperty("query", query);
             return this;
         }
+        /**
+         * Whether to store the entire email message in an RFC 2822 formatted
+         * and base64url encoded string (in JSon format), in the Camel message
+         * body.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: consumer
+         * 
+         * @param raw the value to set
+         * @return the dsl builder
+         */
+        default GoogleMailStreamEndpointBuilder raw(boolean raw) {
+            doSetProperty("raw", raw);
+            return this;
+        }
+        /**
+         * Whether to store the entire email message in an RFC 2822 formatted
+         * and base64url encoded string (in JSon format), in the Camel message
+         * body.
+         * 
+         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
+         * type.
+         * 
+         * Default: false
+         * Group: consumer
+         * 
+         * @param raw the value to set
+         * @return the dsl builder
+         */
+        default GoogleMailStreamEndpointBuilder raw(String raw) {
+            doSetProperty("raw", raw);
+            return this;
+        }
         /**
          * GMail scopes.
          * 

Reply via email to