- SMTP protocol
- Session and user name
- Authenticated SMTP
- Managing emails in asynchronous mode
- Gmail: What to do if a connection to Gmail (SMTP, IMAP, POP3) fails with a certificate error?
In french: EmailOuvreSessionSMTP
Starts a session for sending emails with the SMTP protocol. You will only have the ability to send emails.
- In most cases, the SMTP server to use is the SMTP server of Internet provider (and not the one of email account). For example, if you have Internet access via Orange and a Free email account, you must use the SMTP server of Orange (and not the one of Free).
- To start a session for receiving and reading emails, use EmailStartPOP3Session.
- You also have the ability to use an emailSMTPSession variable.
// Send an email via a non-secure SMTP server
EmailSetTimeOut(10) //10 seconds for the timeout
// Caution: you must use the SMTP server of the Internet provider
let sSMTPServers = "smtp.orange.fr"
IF EmailStartSMTPSession(sUserName, sPassword, sSMTPServer) = True THEN
// Procedure used to initialize the email structure
// Sends the email
IF EmailSendMessage(sUserName) = False THEN
Error("Unable to establish connection", ErrorInfo(), ...
"In case of timeout, check the parameters of " + ...
"""Firewall"" on the port used (25)")
<Result> = EmailStartSMTPSession(<Username> [, <Password>] , <Address of SMTP server> [, <Number of SMTP port> [, <Asynchronous mode> [, <Option>]]])
- True if the session was started,
- False otherwise. The ErrorOccurred variable is set to True if an error occurred.
To get the details of the error, use ErrorInfo with the errMessage constant.
<Username>: Character string (with quotes)
Identifies the email session in the functions for email management (used by EmailSendMessage to send emails for example).
<Password>: Optional character string (with quotes)
User password. This password is given by the service provider or by the network administrator. This password is used to start an authenticated SMTP session.
<Address of SMTP server>: Character string (with quotes)
DNS name or IP address of email server (outgoing protocol). This IP address is supplied by the service provider or by the network administrator.
Caution: You must use the SMTP server of the provider of Internet connection. This SMTP server may have no link with the SMTP server associated with the email account.
<Number of SMTP port>: Optional integer
Identifies the port used for the SMTP protocol (25 by default).
<Asynchronous mode>: Optional constant or boolean
|emailAsynchronous (or True)||The emails sent during the session started by EmailStartSMTPSession must be transmitted in asynchronous mode.|
|emailSynchronous (or False)|
|The emails sent during the session started by EmailStartSMTPSession must be transmitted in synchronous mode.|
<Option>: Optional Integer constant
Options of SMTP session. The possible values are:
|Start the SMTP session.|
Versions 15 and lateremailOptionSecuredTLS New in version 15emailOptionSecuredTLSemailOptionSecuredTLS |Start the SMTP session secured by the TLS protocol.
Versions 20 and laterOptionSSL New in version 20OptionSSLOptionSSL |Start the SMTP session secured by the SSL protocol. This type of session is used by the Orange, Free and Gmail servers for example.
- The different parameters passed to EmailStartSMTPSession are supplied by the Internet Service Provider or by the network administrator. An Internet connection is required to manage the emails. Several cases may occur:
- The user uses a modem to connect to Internet: NetOpenRemoteAccess is used to establish the connection to Internet.
- The user uses a direct connection to Internet (cable or ADSL): no specific operation is required.
- The SMTP protocol can only be used to send emails. A WLanguage error occurs if you try to read emails without starting a POP3 session (EmailStartPOP3Session). To start a POP3 session and an SMTP session at the same time, use EmailStartSession.
Session and user name
After starting an SMTP session, you can start a POP3 session (EmailStartPOP3Session
) with the same username.
<Password> is used to start an authenticated SMTP session. The supported authentication mechanisms are SMTP Login and Plain.
If the server recognizes one of these two authentication mechanisms and if the authentication fails, the connection fails as well.
If the server does not recognize one of these two authentication mechanisms and if the authentication fails, EmailStartSMTPSession tries to connect without authentication.
Managing emails in asynchronous mode
The email functions are locking functions by default. Which means that no other code can be run during their execution. The program will resume only when the current Email functions have been run.
WEBDEV gives you the ability to manage the emails in asynchronous mode. This mode allows your sites to send emails without locking the execution of other processes.
To use the asynchronous mode, you must:
- Uncheck "Disable the email spooler" in the WEBDEV administrator ("Advanced" tab).
- Enable the asynchronous mode when starting the SMTP session (with EmailStartSMTPSession or EmailStartSession).
- All outgoing emails will be transmitted to a "spooler". Emails are queued up before being sent.
Executing Email functions does no longer block the rest of the program. EmailStatus
is used to determine the status of an email.
Remark: If the WEBDEV administrator is closed, the email spooler is cleared: pending emails are not sent and are removed from the spooler.
If there are pending emails, and the "Disable the email spooler" option is checked, the emails will not be lost: the administrator continues to send them, but the spooler will not accept any new emails.
: The asynchronous mode can only be used when opening a session on an SMTP server (function EmailStartSMTPSession
for sending emails, or function EmailStartSession
). The asynchronous mode is ignored in all other cases.
Gmail: What to do if a connection to Gmail (SMTP, IMAP, POP3) fails with a certificate error?
Since August 2017, a new certificate was deployed by Google: Google Internet Authority G3. Unfortunately, the Windows API for checking certificates does not validate this certificate.
Therefore, starting a POP3, IMAP or SMTP session may fail with the error "The certificate string was not issued by a trusted authority".
To validate the certificate, all you have to do is modify the management mode of emails. The WLanguage EmailConfigure
function allows you to change this mode and to no longer use the Windows API that locks this certificate. The following code must be added before starting the session via EmailStartSMTPSession
// Enable the multi-platform implementation
Remark: From version 23 Update 1, the call to EmailConfigure
is not required anymore: WLanguage is automatically using the management mode of emails adapted to the session.
Mobile (WINDEV Mobile): Pocket Managing Contacts
This page is also available for…
s_Usuario is string="email@example.com"
s_senha is string="nossasenha"
s_smtp is string="smtp.gmail.com"
s_porta is string="587"
s_email is string="firstname.lastname@example.org"
s_Email_destinatario is string="email@example.com"
s_assunto is string="Teste 0834"
s_mensagem is string="Mensagem do Email"
s_email_copia is string="firstname.lastname@example.org"
bN_email_sessao is boolean=EmailStartSMTPSession( ...
IF bN_email_sessao=True THEN
minha_mensagem is an Email
ERRO CERTIFICACAO ARRUMADO
// ESSA CONFIGURACAO ACIMA ARRUMA ERRO CERTIFICACAO
n_email_sessao is boolean=EmailStartSMTPSession(EDT_USUARIO,EDT_SENHA,EDT_SERVIDOR_SMTP,EDT_porta,False,emailOptionSecuredTLS)
IF n_email_sessao=True THEN
_minha_mensagem is an Email // est un Email
_minha_mensagem..Subject = EDT_ASSUNTO
_minha_mensagem..Message = EDT_MENSAGEM
_minha_mensagem..SenderAddress = EDT_EmailSender
_minha_mensagem..ReturnReceipt = True
IF EmailSendMessage(EDT_USUARIO, _minha_mensagem) = False THEN
Info("Erro Mandar Mesnagem:"+CR+ErrorInfo())
// blog com video e exemplo