PC SOFT

WINDEVWEBDEV AND WINDEV MOBILE
ONLINE HELP

Home | Sign in | English UK
  • Retrieving messages
  • Asynchronous message retrieval (IMAP)
  • Memory consumption
  • Managing the progress bar
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReports and QueriesUser code (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Browser code
WINDEV Mobile
AndroidAndroid Widget iPhone/iPadApple WatchUniversal Windows 10 AppWindows Mobile
Others
Stored procedures
Retrieves all the emails found on an email server.
Versions 17 and later
iPhone/iPad This function is now available for iPhone/iPad applications.
New in version 17
iPhone/iPad This function is now available for iPhone/iPad applications.
iPhone/iPad This function is now available for iPhone/iPad applications.
Versions 21 and later
Universal Windows 10 App This function is now available in Universal Windows 10 App mode.
New in version 21
Universal Windows 10 App This function is now available in Universal Windows 10 App mode.
Universal Windows 10 App This function is now available in Universal Windows 10 App mode.
Versions 22 and later
Android Widget This function is now available in Android Widget mode.
Android This function is now available for Android applications.
New in version 22
Android Widget This function is now available in Android Widget mode.
Android This function is now available for Android applications.
Android Widget This function is now available in Android Widget mode.
Android This function is now available for Android applications.
Example
// Retrieve all unread emails from the in-box.
IMAPSession is emailIMAPSession
arrUnreadEmails is array of Emails
 
// Start the session
EmailStartSession(IMAPSession)
 
// Retrieve all unread emails
arrUnreadEmails = EmailGetAll(IMAPSession, ertNotRead)
 
// Display the information for each email
FOR EACH MyEmail OF arrUnreadEmails
LooperAddLine(LOOP_EMAIL, MyEmail..Sender, ...
MyEmail..Message, MyEmail..Subject)
END
Syntax
<Result> = EmailGetAll(<Connection> [, <Read options>])
<Result>: Array of Email variables
Emails found in the in-box (the elements effectively retrieved depend on the parameters).
<Connection>: Character string or emailXXSession variable
Connection to the messaging server.
This parameter can be:
<Read options>: Optional Integer constant
The possible values are:
ertAsynchronousThe messages are retrieved in asynchronous mode. The function immediately returns an array of Email variables containing as many elements as necessary. The effective retrieval of data is performed "upon request" when accessing the array elements.
Note: In this mode, the progress bars and the callbacks defined by EmailProgressBar are ignored.
ertFullThe messages are entirely read from the server (header, message body and attachments).
ertHeader
(default value)
Only the headers are read. The effective retrieval of other data (message body and attachments) is performed "upon request" when accessing the array elements.
ertNotReadOnly the messages flagged as "not read" on the server are retrieved.
Note: This value is not available for a POP3. connection.
Remarks

Retrieving messages

To retrieve all messages as well as their attachments, we recommend that you use the ertFull constant to reduce the number of calls to the server.
However, if you only need to retrieve certain emails completely, it is better to use the ertHeader constant (default value) and allow the automatic retrieval of the message body only if necessary (i.e. when accessing the ..Message property of the Email variable).
Notes:
  • If a property of an email is modified before the message body or the attachments are retrieved, the retrieval of the message body and attachments is canceled.
  • Retrieving Outlook emails: ..ContentType is not available and ..ContentID is filled optionally.

Asynchronous message retrieval (IMAP)

In order not to be blocking, the emails are asynchronously retrieved with the constant ertAsynchronous in a secondary thread. The array returned by EmailGetAll must be browsed in its entirety before any call to another EmailXXX function that needs an exchange with the IMAP server.
For example, do not write the following code:
arrUnreadEmails = EmailGetAll(IMAPSession, ertAsynchronous)
FOR EACH mail OF arrUnreadEmails
IF mail.Subject [~] "warning" THEN
EmailChangeStatus(IMAPSession, mail, emailStatusNotRead)
END
END
Indeed, it is necessary to manage the change of status after browsing through all the emails.
For example:
nSubscript is int
arrSubscriptEmailChangeStatus is array of int
 
arrUnreadEmails = EmailGetAll(IMAPSession, ertAsynchronous)
FOR EACH mail OF arrUnreadEmails
nSubscript++
IF mail.Subject [~] "warning" THEN
Add(arrSubscriptEmailChangeStatus, nSubscript)
END
END
 
FOR EACH n OF arrSubscriptEmailChangeStatus
EmailChangeStatus(IMAPSession, arrUnreadEmails[n], emailStatusNotRead)
END

Memory consumption

The retrieval of emails is performed in memory. If the in-box contains several messages or large attachments, the reading can consume a lot of memory.
WINDEVAndroidAndroid Widget iPhone/iPadWindows MobileUniversal Windows 10 App

Managing the progress bar

To know the retrieval progress status, a progress bar or a procedure must be implemented by EmailProgressBar.
Two procedure syntaxes are supported:
  • Procedure receiving two parameters: the total size and the current progress.
  • Procedure receiving four parameters: the total size, the current progress, the subscript of the message currently processed and the total number of messages.
Related Examples:
WD Mail Complete examples (WINDEV): WD Mail
[ + ] This application is an email client developed in WINDEV. It is based on the Email objects.
This email client is used to retrieve and send emails by using the POP, IMAP and SMTP protocols.
You have the ability to apply filters to the incoming emails.

The application can also be used to manage several email accounts. The writing of an email is based on the HTML edit control.
Component : wd250com.dll
Minimum version required
  • Version 15
This page is also available for…
Comments
Click [Add] to post a comment