From 4D v20 R4, we are adding a duo of powerful enhancements to the Gmail command set.
The first feature allows you to retrieve several emails simultaneously, and the second one will enable you to manage label emails.
Keep reading for all the details.
Account connection
Before creating an email, we will create an OAuth 2.0 connection object and a Google object.
var $oAuth2 : cs.NetKit.OAuth2Provider
var $google : cs.NetKit.Google
$oAuth2:=cs.NetKit.OAuth2Provider.new($credentials)
$google:=cs.NetKit.Google.new($oAuth2; {mailType: "JMAP"})
Add or remove email labels
Labels are used to categorize emails. They are similar to folders in other email systems. But what’s special about labels is that you can assign several labels to the same email. This label can be a custom or system label like INBOX, SPAM, TRASH, UNREAD, STARRED, or IMPORTANT. For example, an email can be labeled as “Work” and “IMPORTANT” with the .update() function:
$status:=$google.mail.update($mailIds; {addLabelIds: ["Work"; "IMPORTANT"]})
In the same way, you can remove labels from emails with the .update() function. For example, if you want to remove the UNREAD label:
$status:=$google.mail.update($mailIds; {removeLabelIds: ["UNREAD"]})
Download multiple emails
If you have several emails to retrieve, you can do it all at once with the .getMails() function:
$mailIds:=$google.mail.getMailIds({labelIds: ["INBOX","UNREAD"]})
// Gets the email according to the collection of mail ID
$mails:=$google.mail.getMails($mailIds)
The .getMails() can get only 100 emails at once. If you need to get more emails, call this function several times.
In summary, this feature release enriches 4D’s Gmail command set, offering enhanced capabilities such as simultaneous email retrieval and efficient label management.
For detailed implementation, refer to the documentation.