|
|
|
|
|
- Retrieving messages
- Asynchronous message retrieval (IMAP)
- Memory consumption
- Managing the progress bar
EmailGetAll (Function) In french: EmailRécupèreTout Retrieves all the emails found on an email server.
SessionIMAP is emailIMAPSession
tabEmailNonLus is array of Email
EmailStartSession(SessionIMAP)
tabEmailNonLus = EmailGetAll(SessionIMAP, ertNotRead)
FOR EACH MonEmail OF tabEmailNonLus
LooperAddLine(ZR_EMAIL, MonEmail.Expediteur, MonEmail.Message, MonEmail.Sujet)
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: | | ertAsynchronous | The 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. Remarks: - In this mode, the progress bars and the callbacks defined by EmailProgressBar are ignored.
- Older emails are processed first.
| ertFull | The 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. | ertNotRead | Only 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. On the contrary, if only a few emails are to be fully retrieved, it is recommended to use the ertHeader constant (default value) and let the message body be automatically retrieved when necessary (i.e. when the Message property of the Email variable is accessed). Remarks: - 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.
- Outlook email recovery: The ContentType property is not available and the ContentID property is optional.
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. Warning: accessing non-recovered information may result in an error when accessing the array.. For example, do not write the following code: tabEmailNonLus = EmailGetAll(SessionIMAP, ertAsynchronous)
FOR EACH mail OF tabEmailNonLus
IF mail.Sujet [~] "alerte" THEN
EmailChangeStatus(SessionIMAP, mail, emailStatusNotRead)
END
END
Indeed, it is necessary to manage the change of status after browsing through all the emails. For example: nIndice is int
tabIndiceEmailChangeEtat is array of int
tabEmailNonLus = EmailGetAll(SessionIMAP, ertAsynchronous)
FOR EACH mail OF tabEmailNonLus
nIndice++
IF mail.Sujet [~] "alerte" THEN
Add(tabIndiceEmailChangeEtat, nIndice)
END
END
FOR EACH n OF tabIndiceEmailChangeEtat
EmailChangeStatus(SessionIMAP, tabEmailNonLus[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.
Related Examples:
|
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.
|
This page is also available for…
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|