Type | {{#dataTypeArticle objectTypeId}}{{objectTypeId}}{{/dataTypeArticle}} |
Datastore Type | {{#dataTypeArticle datastoreTypeId}}{{datastoreTypeId}}{{/dataTypeArticle}} |
Supports | {{#article "security/authorities"}}authorities{{/article}}, {{#article "security/permissions"}}permissions{{/article}}, {{#article "transfer"}}transfer{{/article}} |
Configuration
The following table presents you the configuration properties.
Property | Type | Default | Read-Only | Description |
---|---|---|---|---|
to | text | The email addresses of the recipients (comma-delimited) | ||
body | text | The body of the email. | ||
from | text | The email address of the sender. | ||
subject | text | The subject of the email. | ||
cc | text | The email addresses to be carbon-copied (CC) (comma-delimited) | ||
bcc | text | The email addresses to be blind carbon-copied (BCC) (comma-delimited) | ||
replyTo | text | The reply-to email address. | ||
sent | boolean | Whether the email was sent. | ||
sentBy | text | Who sent the email. | ||
sentOn | timestamp | When the email was sent. |
In addition, the email service optionally allows you to dispatch emails to Domain Users or Domain Groups. Domain Users have their own email
fields which will determine the address to which the email is sent.
If you send to a Domain Group, all direct members of the group will receive the email.
Property | Type | Default | Read-Only | Description |
---|---|---|---|---|
toDomainId | text | If you wish to send this email to a specific domain principal, this points to the principal's domain. | ||
toPrincipalId | text | If you wish to send this email to a specific domain principal, this points to the principal. |
Emails can also utilize the contents of a Repository Node to load its body. This allows you to store and collaborate upon email templates within a Branch.
Property | Type | Default | Read-Only | Description |
---|---|---|---|---|
bodyRepositoryId | text | The _doc ID of the repository. |
||
bodyBranchId | text | The _doc ID of the branch. |
||
bodyNodeId | text | The _doc ID of the node. |
||
bodyAttachmentId | text | The name of the attachment (example: default ) |
Create an Email
fit. You can then send it at some point in the future.
Here is a simple example where we create a basic email:
// assume we have an application
var application = ...;
// create an email
application.createEmail({
"to": "axl@gnr.com",
"body": "Welcome to the Jungle!",
"from": "slash@gnr.com"
});
Update an Email
// assume we have an application
var application = ...;
// create an email
application.createEmail({
"to": "axl@gnr.com",
"body": "Welcome to the Jungle!",
"from": "slash@gnr.com"
}).then(function() {
this.set("title", "My First Email");
this.update();
});
Delete an Email
it will not cause the email to be unsent (that much should be obvious).
email.del();
Read an Email
// assume we have an application
var application = ...;
// email id
var emailId = "4b5b685c980c10f98beb";
application.readEmail(emailId).then(function() {
console.log("Found an email with id: " + this.getId());
});
List Emails
The following code hands back the full list.
// assume we have an application
var application = ...;
application.listEmails();
You can then iterate over the list to pick at what you'd like.
// assume we have an application
var application = ...;
application.listEmails().each(function() {
console.log("Email: " + this.getId());
});
Retrieving the full list is potentially an expensive operation, depending how many items you have. The more your retrieve, the more data goes over the wire and so forth. Thus, you might wish to paginate your call and retrieve a subset of the total list at a time.
Here is an example that retrieves in pages of size 10. It starts on the second page (by skipping to starting index 20). It also sorts by the title
field in a descending sequence.
// assume we have an application
var application = ...;
application.listEmails({
"limit": 10,
"skip": 20,
"sort": { "title": -1 }
}).each(function() {
console.log("Found an email with ID: " + this.getId());
});
You don't have to have all of the pagination parameters (limit
, skip
and sort
). You might only want to include one or two. It's up to you.
Query Emails
Here is a query that looks for Emails which are disabled.
// assume we have an application
var application = ...;
application.queryEmails({
"from": "dizzy@gnr.com"
});
Here is that same query followed by an iteration over the result map.
// assume we have an application
var application = ...;
application.queryEmails({
"from": "dizzy@gnr.com"
}).each(function(id) {
console.log("Found an Email: " + id + " with body: " + this.get("body"));
});
Finally, you can mix queries with pagination to reduce data over the wire and speed up performance. Here is that same query with some pagination thrown in. We limit to pages of size 10 and sort by title
.
// assume we have an application
var application = ...;
application.queryEmails({
"from": "dizzy@gnr.com"
},{
"limit": 10,
"skip": 20,
"sort": {
"title": -1
}
}).each(function(id) {
console.log("Found an Email: " + id + " with body: " + this.get("body"));
});
Send an Email
// assume we have an application
var application = ...;
// assume we have an email provider
var emailProvider = ...;
// create an email
application.createEmail({
"to": "axl@gnr.com",
"body": "Welcome to the Jungle!",
"from": "slash@gnr.com"
}).then(function() {
// send the email using the email provider
this.send(emailProvider);
});