Changes for page Mail Sender API
Last modified by Admin on 2024/03/29 01:18
Change comment:
Rollback to version 50.4
Summary
-
Objects (164 modified, 0 added, 0 removed)
- ExtensionCode.ExtensionClass[0]
- ExtensionCode.ExtensionDependencyClass[84]
- ExtensionCode.ExtensionDependencyClass[85]
- ExtensionCode.ExtensionDependencyClass[86]
- ExtensionCode.ExtensionDependencyClass[87]
- ExtensionCode.ExtensionDependencyClass[88]
- ExtensionCode.ExtensionDependencyClass[89]
- ExtensionCode.ExtensionDependencyClass[90]
- ExtensionCode.ExtensionDependencyClass[91]
- ExtensionCode.ExtensionDependencyClass[92]
- ExtensionCode.ExtensionDependencyClass[93]
- ExtensionCode.ExtensionDependencyClass[94]
- ExtensionCode.ExtensionDependencyClass[95]
- ExtensionCode.ExtensionDependencyClass[96]
- ExtensionCode.ExtensionDependencyClass[97]
- ExtensionCode.ExtensionDependencyClass[98]
- ExtensionCode.ExtensionDependencyClass[99]
- ExtensionCode.ExtensionDependencyClass[100]
- ExtensionCode.ExtensionDependencyClass[101]
- ExtensionCode.ExtensionDependencyClass[102]
- ExtensionCode.ExtensionDependencyClass[103]
- ExtensionCode.ExtensionDependencyClass[104]
- ExtensionCode.ExtensionDependencyClass[105]
- ExtensionCode.ExtensionDependencyClass[106]
- ExtensionCode.ExtensionDependencyClass[107]
- ExtensionCode.ExtensionDependencyClass[108]
- ExtensionCode.ExtensionDependencyClass[109]
- ExtensionCode.ExtensionDependencyClass[110]
- ExtensionCode.ExtensionDependencyClass[111]
- ExtensionCode.ExtensionDependencyClass[112]
- ExtensionCode.ExtensionDependencyClass[113]
- ExtensionCode.ExtensionDependencyClass[114]
- ExtensionCode.ExtensionDependencyClass[115]
- ExtensionCode.ExtensionDependencyClass[116]
- ExtensionCode.ExtensionDependencyClass[117]
- ExtensionCode.ExtensionDependencyClass[118]
- ExtensionCode.ExtensionDependencyClass[119]
- ExtensionCode.ExtensionDependencyClass[120]
- ExtensionCode.ExtensionDependencyClass[121]
- ExtensionCode.ExtensionDependencyClass[122]
- ExtensionCode.ExtensionDependencyClass[123]
- ExtensionCode.ExtensionDependencyClass[124]
- ExtensionCode.ExtensionDependencyClass[125]
- ExtensionCode.ExtensionDependencyClass[126]
- ExtensionCode.ExtensionDependencyClass[127]
- ExtensionCode.ExtensionDependencyClass[128]
- ExtensionCode.ExtensionDependencyClass[129]
- ExtensionCode.ExtensionDependencyClass[130]
- ExtensionCode.ExtensionDependencyClass[131]
- ExtensionCode.ExtensionDependencyClass[132]
- ExtensionCode.ExtensionDependencyClass[133]
- ExtensionCode.ExtensionDependencyClass[134]
- ExtensionCode.ExtensionDependencyClass[135]
- ExtensionCode.ExtensionDependencyClass[136]
- ExtensionCode.ExtensionDependencyClass[137]
- ExtensionCode.ExtensionDependencyClass[138]
- ExtensionCode.ExtensionDependencyClass[139]
- ExtensionCode.ExtensionDependencyClass[140]
- ExtensionCode.ExtensionDependencyClass[141]
- ExtensionCode.ExtensionDependencyClass[142]
- ExtensionCode.ExtensionDependencyClass[143]
- ExtensionCode.ExtensionDependencyClass[144]
- ExtensionCode.ExtensionDependencyClass[145]
- ExtensionCode.ExtensionDependencyClass[146]
- ExtensionCode.ExtensionDependencyClass[147]
- ExtensionCode.ExtensionDependencyClass[148]
- ExtensionCode.ExtensionDependencyClass[149]
- ExtensionCode.ExtensionDependencyClass[150]
- ExtensionCode.ExtensionDependencyClass[151]
- ExtensionCode.ExtensionDependencyClass[152]
- ExtensionCode.ExtensionDependencyClass[153]
- ExtensionCode.ExtensionDependencyClass[154]
- ExtensionCode.ExtensionDependencyClass[155]
- ExtensionCode.ExtensionDependencyClass[156]
- ExtensionCode.ExtensionDependencyClass[157]
- ExtensionCode.ExtensionDependencyClass[158]
- ExtensionCode.ExtensionDependencyClass[159]
- ExtensionCode.ExtensionDependencyClass[160]
- ExtensionCode.ExtensionDependencyClass[161]
- ExtensionCode.ExtensionDependencyClass[162]
- ExtensionCode.ExtensionDependencyClass[163]
- ExtensionCode.ExtensionDependencyClass[164]
- ExtensionCode.ExtensionDependencyClass[165]
- ExtensionCode.ExtensionDependencyClass[166]
- ExtensionCode.ExtensionDependencyClass[167]
- ExtensionCode.ExtensionDependencyClass[168]
- ExtensionCode.ExtensionDependencyClass[169]
- ExtensionCode.ExtensionDependencyClass[170]
- ExtensionCode.ExtensionDependencyClass[171]
- ExtensionCode.ExtensionDependencyClass[172]
- ExtensionCode.ExtensionDependencyClass[173]
- ExtensionCode.ExtensionDependencyClass[174]
- ExtensionCode.ExtensionDependencyClass[175]
- ExtensionCode.ExtensionDependencyClass[176]
- ExtensionCode.ExtensionDependencyClass[177]
- ExtensionCode.ExtensionDependencyClass[178]
- ExtensionCode.ExtensionDependencyClass[179]
- ExtensionCode.ExtensionDependencyClass[180]
- ExtensionCode.ExtensionDependencyClass[181]
- ExtensionCode.ExtensionDependencyClass[182]
- ExtensionCode.ExtensionDependencyClass[183]
- ExtensionCode.ExtensionDependencyClass[184]
- ExtensionCode.ExtensionDependencyClass[185]
- ExtensionCode.ExtensionDependencyClass[186]
- ExtensionCode.ExtensionDependencyClass[187]
- ExtensionCode.ExtensionDependencyClass[188]
- ExtensionCode.ExtensionDependencyClass[189]
- ExtensionCode.ExtensionDependencyClass[190]
- ExtensionCode.ExtensionDependencyClass[191]
- ExtensionCode.ExtensionDependencyClass[192]
- ExtensionCode.ExtensionDependencyClass[193]
- ExtensionCode.ExtensionDependencyClass[194]
- ExtensionCode.ExtensionDependencyClass[195]
- ExtensionCode.ExtensionDependencyClass[196]
- ExtensionCode.ExtensionDependencyClass[197]
- ExtensionCode.ExtensionDependencyClass[198]
- ExtensionCode.ExtensionDependencyClass[199]
- ExtensionCode.ExtensionDependencyClass[200]
- ExtensionCode.ExtensionDependencyClass[201]
- ExtensionCode.ExtensionDependencyClass[202]
- ExtensionCode.ExtensionDependencyClass[203]
- ExtensionCode.ExtensionDependencyClass[204]
- ExtensionCode.ExtensionDependencyClass[205]
- ExtensionCode.ExtensionDependencyClass[206]
- ExtensionCode.ExtensionDependencyClass[207]
- ExtensionCode.ExtensionDependencyClass[208]
- ExtensionCode.ExtensionDependencyClass[209]
- ExtensionCode.ExtensionDependencyClass[210]
- ExtensionCode.ExtensionDependencyClass[211]
- ExtensionCode.ExtensionDependencyClass[212]
- ExtensionCode.ExtensionDependencyClass[213]
- ExtensionCode.ExtensionDependencyClass[214]
- ExtensionCode.ExtensionDependencyClass[215]
- ExtensionCode.ExtensionDependencyClass[216]
- ExtensionCode.ExtensionDependencyClass[217]
- ExtensionCode.ExtensionDependencyClass[218]
- ExtensionCode.ExtensionDependencyClass[219]
- ExtensionCode.ExtensionDependencyClass[220]
- ExtensionCode.ExtensionDependencyClass[221]
- ExtensionCode.ExtensionDependencyClass[222]
- ExtensionCode.ExtensionDependencyClass[223]
- ExtensionCode.ExtensionDependencyClass[224]
- ExtensionCode.ExtensionDependencyClass[225]
- ExtensionCode.ExtensionDependencyClass[226]
- ExtensionCode.ExtensionDependencyClass[227]
- ExtensionCode.ExtensionDependencyClass[228]
- ExtensionCode.ExtensionDependencyClass[229]
- ExtensionCode.ExtensionDependencyClass[230]
- ExtensionCode.ExtensionDependencyClass[231]
- ExtensionCode.ExtensionDependencyClass[232]
- ExtensionCode.ExtensionDependencyClass[233]
- ExtensionCode.ExtensionDependencyClass[234]
- ExtensionCode.ExtensionDependencyClass[235]
- ExtensionCode.ExtensionDependencyClass[236]
- ExtensionCode.ExtensionDependencyClass[237]
- ExtensionCode.ExtensionDependencyClass[238]
- ExtensionCode.ExtensionDependencyClass[239]
- ExtensionCode.ExtensionDependencyClass[240]
- ExtensionCode.ExtensionDependencyClass[241]
- ExtensionCode.ExtensionDependencyClass[242]
- ExtensionCode.ExtensionDependencyClass[243]
- ExtensionCode.ExtensionDependencyClass[244]
- ExtensionCode.ExtensionDependencyClass[245]
- ExtensionCode.ExtensionDependencyClass[246]
Details
- ExtensionCode.ExtensionClass[0]
-
- Description
-
... ... @@ -23,7 +23,7 @@ 23 23 24 24 == Create a Message == 25 25 26 -{{code language=" velocity"}}26 +{{code language="none"}} 27 27 // Message creation, internally creates a JavaMail MimeMessage 28 28 // Note that "from" is optional and if not specified, taken from Mail configuration, in the following order: 29 29 // - first a ##from## xproperty is looked for in a ##XWiki.SendMailConfigClass## xobject in the ##XWiki.MailConfig## page in the current wiki ... ... @@ -43,14 +43,217 @@ 43 43 {{/info}} 44 44 45 45 * Add Simple text:((( 46 -{{code language=" velocity"}}46 +{{code language="none"}} 47 47 $message.addPart("text/plain", "text message") 48 48 {{/code}} 49 49 ))) 50 50 * Add simple text to message with a mail header:((( 51 -{{code }} 51 +{{code language="none"}} 52 +$message.addPart("text", "text message", {"headers" : { "Content-Transfer-Encoding" : "quoted-printable"}}) 53 +{{/code}} 52 52 ))) 55 +* Add simple HTML to message:((( 56 +{{code language="none"}} 57 +$message.addPart("text/html", "html message") 58 +{{/code}} 59 +))) 60 +* Add HTML + alternate text to message:((( 61 +{{code language="none"}} 62 +$message.addPart("text/html", "html message", {"alternate" : "text message"}) 63 +{{/code}} 64 +))) 65 +* Add HTML + alternate text + embedded images + some attachments to message (Note: ##$attachments## is of type ##List<Attachment>## here).((( 66 +{{code language="none"}} 67 +$message.addPart("text/html", "html message", {"alternate" : "text message", "attachments" : $attachments}) 68 +{{/code}} 69 +))) 70 +* Add HTML + alternate text from a Template Document containing a ##XWiki.Mail## object. Any ##$var1## Velocity variable is replaced with ##value1##.((( 71 +{{code language="none"}} 72 +$message.addPart("xwiki/template", $documentReference, {"velocityVariables" : { "var1" : "value1" }}) 73 +{{/code}} 74 +))) 75 +* Same as previous addPart() example but also add internationalization support by retrieving the ##XWiki.Mail## Object which has a ##language## property equals to((( 76 +fr##{{code language="none"}}$message.addPart("xwiki/template", $documentReference, {"language" : "fr", "velocityVariables" : { "var1" : "value1" }}){{/code}}## 77 +))) 78 +* Add HTML + alternate text + embedded images + some attachments, from a Template Document containing a ##XWiki.Mail## object. Any ##$var1## Velocity variable is replaced with ##value1##. (Note: ##$attachments## is of type ##List<Attachment>## here).((( 79 +{{code language="none"}} 80 +$message.addPart("xwiki/template", $documentReference, {"velocityVariables" : { "var1" : "value1" }, "attachments" : $attachments}) 81 +{{/code}} 82 +))) 83 +* Same as previous addPart() example but includes all attachments found in the Mail Template document instead of controlling precisely which attachments to send. Note that if you also pass ##"attachments" : $attachments## it'll not include by default the attachments found in the template.((( 84 +{{code language="none"}} 85 +$message.addPart("xwiki/template", $documentReference, {"includeTemplateAttachments" : true, "velocityVariables" : { "var1" : "value1" }) 86 +{{/code}} 87 +))) 53 53 89 +Note: ##addPart()## returns a ##BodyPart## object which can be used to set/get headers. 90 + 91 +== Send the Messages == 92 + 93 +* Send a single Message, synchronously (it'll block till the mail is sent or it fails), storing the result in memory:((( 94 +{{code language="none"}} 95 +#set ($mailResult = $services.mailsender.send($message)) 96 +{{/code}} 97 +))) 98 +* Send N messages, synchronously, storing the result in memory:((( 99 +{{code language="none"}} 100 +#set ($mailResult = $services.mailsender.send([$message1, $message2, ...])) 101 + 102 +// Equivalent to: 103 +#set ($mailResult = $services.mailsender.send([$message1, $message2, ...], 'memory')) 104 +{{/code}} 105 +))) 106 +* Send N message, asynchronously, storing the result in memory:((( 107 +{{code language="none"}} 108 +#set ($mailResult = $services.mailsender.sendAsynchronously([$message1, $message2, ...], 'memory')) 109 +{{/code}} 110 +))) 111 +* Send N messages, asynchronously, storing the results in the database. It can then be retrieved later on. The [[Mail Application]] has an Admin screen which lists the statuses of all mails sent like this. Note that this very useful especially when sending large volume of emails, to see which mails have succeeded and which mails have failed to be sent.((( 112 +{{code language="none"}} 113 +#set ($mailResult = $services.mailsender.sendAsynchronously([$message1, $message2, ...], 'database')) 114 +{{/code}} 115 +))) 116 + 117 +== Set the Type == 118 + 119 +Sets the type of email that is being sent. This allows (for example) to filter these emails in the [[Mail Sender Status Admin UI>>Mail Application]] (when using a Database Mail Listener). Example of types: "Watchlist", "Reset Password", "Send Page by Mail", etc. 120 + 121 +{{code language="none"}} 122 +$message.setType("Some type") 123 +{{/code}} 124 + 125 +== Check Message Statuses == 126 + 127 +When mails are sent asynchronously it's possible to check the status of the sending process by calling: 128 + 129 +((( 130 +{{info}}XWiki 7.1+{{/info}}: 131 + 132 +{{code language="none"}} 133 +// Returns true when the process is over for the batch (when all mails have been sent or have failed to be sent) 134 +$mailResult.statusResult.isProcessed() 135 + 136 +// Wait 10 seconds till the mails are sent (the passed timeout is expressed in milliseconds) 137 +// Note: Use "$mailResult.waitTillProcessed(10000L)" with XWiki < 7.1 138 +$mailResult.statusResult.waitTillProcessed(10000L) 139 +{{/code}} 140 + 141 +{{info}}XWiki < 7.1{{/info}}: 142 + 143 +{{code language="none"}} 144 +// Returns true when the process is over for the batch (when all mails have been sent or have failed to be sent) 145 +$mailResult.isProcessed() 146 + 147 +// Wait 10 seconds till the mails are sent (the passed timeout is expressed in milliseconds) 148 +// Note: Use "$mailResult.waitTillProcessed(10000L)" with XWiki < 7.1 149 +$mailResult.statusResult.waitTillProcessed(10000L) 150 +{{/code}} 151 +))) 152 + 153 +== Check for Errors == 154 + 155 +* Checking for errors that can occur before the mails have been processed:((( 156 +{{code language="none"}} 157 +#if ($services.mailsender.lastError) 158 + {{error}}$exceptiontool.getStackTrace($services.mailsender.lastError){{/error}} 159 +#end 160 +{{/code}} 161 + 162 +This can happen for example under the following conditions: 163 + 164 +* If an error happened when creating the message(s) (when using the ##$services.mailsender.createMessage(...)## APIs) 165 +* If there isn't enough permission to send mail (for example if the page containing the sending script doesn't have Programming Rights) 166 +* If the Mail Listener referenced by the second parameter of ##$services.mailsender.send(messages, mailListenerHint)## doesn't exist 167 +))) 168 + 169 +* Checking for mails sent successfully:((( 170 +{{code language="none"}} 171 +#set ($mailStatuses = $mailResult.statusResult.getByState('SENT')) 172 +#foreach ($mailStatus in $mailStatuses) 173 + * Mail ($mailStatus.messageId) - Date Sent: $mailStatus.date 174 +#end 175 +{{/code}} 176 +))) 177 +* Checking for all mail statuses:((( 178 +{{code language="none"}} 179 +#set ($mailStatuses = $mailResult.statusResult.getAll()) 180 +#foreach ($mailStatus in $mailStatuses) 181 + * Mail ($mailStatus.messageId) - Date Sent: $mailStatus.date State: $mailStatus.state - Error: $mailStatus.errorSummary 182 +#end 183 +{{/code}} 184 + 185 +{{info}}XWiki <7.1{{/info}}: 186 + 187 +* Checking for mails that have failed to be sent:((( 188 +{{code language="none"}} 189 +#set ($mailStatuses = $mailResult.statusResult.getByState('FAILED')) 190 +#foreach ($mailStatus in $mailStatuses) 191 + 192 + {{error}} 193 + $mailStatus.errorSummary 194 + $mailStatus.errorDescription 195 + {{/error}} 196 + 197 +#end 198 +{{/code}} 199 +))) 200 + 201 +{{info}}XWiki 7.1+{{/info}}: 202 + 203 +* Checking for mails that have failed to be sent:((( 204 +{{code language="none"}} 205 +#set ($mailStatuses = $mailResult.statusResult.getByState('SEND_ERROR')) 206 +#foreach ($mailStatus in $mailStatuses) 207 + 208 + {{error}} 209 + $mailStatus.errorSummary 210 + $mailStatus.errorDescription 211 + {{/error}} 212 + 213 +#end 214 +{{/code}} 215 +))) 216 + 217 +* Checking for mails that have failed to be prepared:((( 218 +{{code language="none"}} 219 +#set ($mailStatuses = $mailResult.statusResult.getByState('PREPARE_ERROR')) 220 +#foreach ($mailStatus in $mailStatuses) 221 + 222 + {{error}} 223 + $mailStatus.errorSummary 224 + $mailStatus.errorDescription 225 + {{/error}} 226 + 227 +#end 228 +{{/code}} 229 +))) 230 + 231 +* Checking for all mail statuses in error:((( 232 +{{code language="none"}} 233 +#set ($mailStatuses = $mailResult.statusResult.getAllErrors()) 234 +#foreach ($mailStatus in $mailStatuses) 235 + * Mail ($mailStatus.messageId) - Date Sent: $mailStatus.date State: $mailStatus.state - Error: $mailStatus.errorSummary 236 +#end 237 +{{/code}} 238 +))) 239 + 240 +{{warning}} 241 +Checking statuses using ##getAll()##, ##getAllErrors()## or ##getByState()## is not scalable and should be used only when a small number of mails are sent at once. If you're sending a large number of mails, you should always use the ##database## Mail Listener and you should retrieve results using the Storage Script Service (see below). 242 +{{/warning}} 243 + 244 +== Accessing Configuration == 245 + 246 +Access the Mail Sending configuration. In this example we define a default from email address if no from is defined on the configuration: 247 + 248 +((( 249 +{{code language="none"}} 250 +#set ($from = $services.mailsender.configuration.fromAddress) 251 +#if ("$!from" == '') 252 + #set ($from = "no-reply@${request.serverName}") 253 +#end 254 +{{/code}} 255 +))) 256 + 54 54 == MimeBodyPartFactory Implementations == 55 55 56 56 When adding a body part using the ##addPart(mimeType, source, ...)## script API, the following logic is used: ... ... @@ -62,7 +62,7 @@ 62 62 The following implementations are available: 63 63 64 64 * ##default##: Creates a text Message Body Part. 65 -* ##text/html##: Creates an HTML BodyPart that supports a text alternative and a list of attachments that will be added to the mail as standard attachments and also as embedded images if they are referenced in the passed HTML using the format {{code language=" html"}}<img src="cid:(attachment name)"/>{{/code}}.268 +* ##text/html##: Creates an HTML BodyPart that supports a text alternative and a list of attachments that will be added to the mail as standard attachments and also as embedded images if they are referenced in the passed HTML using the format {{code language="none"}}<img src="cid:(attachment name)"/>{{/code}}. 66 66 * ##xwiki/attachment##: Creates an attachment Body Part from an ##Attachment## object. 67 67 * ##xwiki/template##: Creates an Body Part from a Document Reference pointing to a Document containing an ##XWiki.Mail## XObject (the first one found is used). Note that when evaluating Velocity in Mail Templates, the Execution Context used is a clone of the one that was available when the ##send*(...)## method was called. Thus all Velocity bindings that were present are available from your Mail Template (##request##, ##xwiki##, ##services##, Velocity Tools, etc). 68 68 ... ... @@ -71,7 +71,7 @@ 71 71 There are also specialized Message factories that can be used to create pre-filled Message objects. For example it's possible to create a message having its subject automatically computed from a template (i.e. from a wiki page having a ##XWiki.Mail## object), by evaluating its ##subject## xproperty with Velocity (see the example further below for more details) + having a template body part added too. Generic API: 72 72 73 73 ((( 74 -{{code language=" velocity"}}277 +{{code language="none"}} 75 75 #set ($message = $services.mailsender.createMessage(hint, source, parameters)) 76 76 #set ($messages = $services.mailsender.createMessages(hint, source, parameters)) 77 77 {{/code}} ... ... @@ -153,7 +153,7 @@ 153 153 154 154 This example uses a ##memory## Mail Listener. 155 155 156 -{{code language=" velocity"}}359 +{{code language="none"}} 157 157 {{velocity}} 158 158 #set ($message = $services.mailsender.createMessage("[email protected]", "[email protected]", "subject")) 159 159 #set ($discard = $message.addPart("text/plain", "text content")) ... ... @@ -178,7 +178,7 @@ 178 178 179 179 The same example using a ##database## Mail Listener. 180 180 181 -{{code language=" velocity"}}384 +{{code language="none"}} 182 182 {{velocity}} 183 183 #set ($message = $services.mailsender.createMessage("[email protected]", "[email protected]", "subject")) 184 184 #set ($discard = $message.addPart("text/plain", "text content")) ... ... @@ -205,7 +205,7 @@ 205 205 206 206 This example uses a ##memory## Mail Listener. 207 207 208 -{{code language=" velocity"}}411 +{{code language="none"}} 209 209 {{velocity}} 210 210 #set ($message = $services.mailsender.createMessage("[email protected]", "[email protected]", "subject")) 211 211 #set ($discard = $message.addPart("text/plain", "text content")) ... ... @@ -247,7 +247,7 @@ 247 247 248 248 Add HTML + alternate text from a Template Document containing a ##XWiki.Mail## object. Use that template to generate both the mail subject and the mail content. Also pass the current language to support internationalization (the right ##XWiki.Mail## object will be used). Any ##$var1## Velocity variable is replaced with ##value1##. 249 249 250 -{{code language=" velocity"}}453 +{{code language="none"}} 251 251 {{velocity}} 252 252 #set ($templateReference = $services.model.createDocumentReference('', 'Space', 'MailTemplatePage')) 253 253 #set ($mailParameters = {'language' : $xcontext.language, 'velocityVariables' : { 'var1' : 'value1' }}) ... ... @@ -260,7 +260,7 @@ 260 260 261 261 It's also possible to pass "to", "from", "cc" and "bcc" in the parameter list: 262 262 263 -{{code language=" velocity"}}466 +{{code language="none"}} 264 264 {{velocity}} 265 265 #set ($templateReference = $services.model.createDocumentReference('', 'Space', 'MailTemplatePage')) 266 266 #set ($mailParameters = {'from' : '[email protected]', 'to' : '[email protected]', 'language' : $xcontext.language, 'velocityVariables' : { 'var1' : 'value1' }}) ... ... @@ -275,7 +275,7 @@ 275 275 276 276 Note that nested groups are handled (i.e. if the ##XWiki.MyGroup## group contains other groups, all users of those other groups will also receive the template email)! 277 277 278 -{{code language=" velocity"}}481 +{{code language="none"}} 279 279 {{velocity}} 280 280 ## Parameters for the 'template' MimeMessageFactory 281 281 #set ($templateParameters = {'type' : 'Some type', 'language' : $xcontext.language, 'velocityVariables' : { 'var1' : 'value1' }}) ... ... @@ -296,7 +296,7 @@ 296 296 297 297 It's also possible to exclude groups, users and email addresses: 298 298 299 -{{code language=" velocity"}}502 +{{code language="none"}} 300 300 #set ($source = {'groups' : [$groupReference], 'users' : [$user1Reference, $user2Reference], 'emails' : ['[email protected]'], 'excludedUsers' : [], 'excludedEmails' : [], 'excludedGroups' : []}) 301 301 {{/code}} 302 302 ... ... @@ -327,7 +327,7 @@ 327 327 328 328 {{info}}XWiki 7.1{{/info}} The following example is similar to the previous one, except that it use a fixed prepared mime message to send it to multiple users as separate independent message. (ie: all the users in the ##XWiki.MyGroup## group). 329 329 330 -{{code language=" velocity"}}533 +{{code language="none"}} 331 331 {{velocity}} 332 332 ## Create a mime message, the way you like it, adding any part you like, without recipient. 333 333 #set ($message = $services.mailsender.createMessage('[email protected]', null, 'SendMimeMessageToGroup')) ... ... @@ -369,7 +369,7 @@ 369 369 370 370 Starting with XWiki 6.4M2 any document using the Scripting API will need to have Programming Rights by default to be allowed to send emails. This is configurable through the ##xwiki.properties## file: 371 371 372 -{{code language=" velocity"}}575 +{{code language="none"}} 373 373 #-# [Since 6.4M2] 374 374 #-# Defines which authorization checks are done when sending mails using the Mail Sender Script Service. 375 375 #-# Example of valid values: ... ... @@ -403,7 +403,7 @@ 403 403 404 404 You might be tempted to write: 405 405 406 -{{code language=" velocity"}}609 +{{code language="none"}} 407 407 $message.addPart("text/plain", "text message") 408 408 $message.addPart("text/html", "html message")" 409 409 {{/code}} ... ... @@ -410,7 +410,7 @@ 410 410 411 411 However this is not correct. You need to use the HTML Body Part Factory and pass the alternative in the parameters list as in: 412 412 413 -{{code language=" velocity"}}616 +{{code language="none"}} 414 414 $message.addPart("text/html", "html message", {"alternate" : "text message"}) 415 415 {{/code}} 416 416 ... ... @@ -454,5 +454,3 @@ 454 454 {{/jira}} 455 455 ))) 456 456 ))) 457 -{{/code}} 458 -))) - Properties
-
... ... @@ -1,1 +1,5 @@ 1 -maven.groupid=org.xwiki.platform maven.artifactid=xwiki-platform-mail-send-api maven.Model=org.xwiki.platform:xwiki-platform-mail-send-api:jar:9.10.1 xwiki.extension.recommendedVersions.platform=org.xwiki.commons:.*/[9.10.1], org.xwiki.rendering:.*/[9.10.1], org.xwiki.platform:.*/[9.10.1] xwiki.extension.recommendedVersions.commons=org.xwiki.commons:.*/[9.10.1] xwiki.extension.recommendedVersions=org.xwiki.commons:.*/[9.10.1], org.xwiki.rendering:.*/[9.10.1], org.xwiki.platform:.*/[9.10.1] 1 +maven.groupid=org.xwiki.platform maven.artifactid=xwiki-platform-mail-send-api maven.Model=org.xwiki.platform:xwiki-platform-mail-send-api:jar:9.10.1 xwiki.extension.recommendedVersions.platform=org.xwiki.commons:.*/[9.10.1], 2 + org.xwiki.rendering:.*/[9.10.1], 3 + org.xwiki.platform:.*/[9.10.1] xwiki.extension.recommendedVersions.commons=org.xwiki.commons:.*/[9.10.1] xwiki.extension.recommendedVersions=org.xwiki.commons:.*/[9.10.1], 4 + org.xwiki.rendering:.*/[9.10.1], 5 + org.xwiki.platform:.*/[9.10.1] - Recommended
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[84]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[85]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[86]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[87]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[88]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[89]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[90]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[91]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[92]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[93]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[94]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[95]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[96]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[97]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[98]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[99]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[100]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[101]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[102]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[103]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[104]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[105]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[106]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[107]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[108]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[109]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[110]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[111]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[112]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[113]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[114]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[115]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[116]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[117]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[118]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[119]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[120]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[121]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[122]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[123]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[124]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[125]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[126]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[127]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[128]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[129]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[130]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[131]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[132]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[133]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[134]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[135]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[136]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[137]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[138]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[139]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[140]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[141]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[142]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[143]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[144]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[145]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[146]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[147]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[148]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[149]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[150]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[151]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[152]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[153]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[154]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[155]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[156]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[157]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[158]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[159]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[160]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[161]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[162]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[163]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[164]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[165]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[166]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[167]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[168]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[169]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[170]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[171]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[172]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[173]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[174]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[175]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[176]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[177]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[178]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[179]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[180]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[181]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[182]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[183]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[184]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[185]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[186]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[187]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[188]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[189]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[190]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[191]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[192]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[193]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[194]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[195]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[196]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[197]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[198]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[199]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[200]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[201]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[202]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[203]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[204]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[205]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[206]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[207]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[208]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[209]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[210]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[211]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[212]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[213]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[214]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[215]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[216]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[217]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[218]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[219]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[220]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[221]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[222]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[223]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[224]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[225]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[226]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[227]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[228]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[229]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[230]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[231]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[232]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[233]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[234]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[235]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[236]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[237]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[238]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[239]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[240]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[241]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[242]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[243]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[244]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[245]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No
- ExtensionCode.ExtensionDependencyClass[246]
-
- Optional
-
... ... @@ -1,1 +1,0 @@ 1 -No