i am opening a socket to send an email, it has worked before.
when in the xojo editor it freezes, when running standalone i get an unknown exception.
please advise
// set up the socket
MailSocket.Address = Server.Text
MailSocket.Port = Val(Port.text)
MailSocket.ConnectionType = SMTPSecureSocket.TLSv1
MailSocket.SMTPConnectionMode = SMTPSecureSocket.ModeSSLTLS
MailSocket.Secure = True
MailSocket.Username = UserName.Text
MailSocket.Password = Password.Text
// look up DB info
Dim cusName, cusAddress As String
Dim MesBody As String
// LoadCusID(ToEmail.Text, cusName, cusAddress)
cusName = MainWin.CusName.Text
cusAddress = MainWin.CusAddress.Text
// populate the email message
mail.FromAddress = FromEmail.Text
mail.Subject = Subject.Text
MesBody = Replace(Message.Text, "{NAME}", "Customer")
MesBody = Replace(MesBody, "{SERVICE_ADDRESS}", cusAddress)
mail.BodyPlainText = MesBody
//mail.BodyHTML = htmlFld.Text
mail.Headers.AppendHeader("X-Mailer","Demo SMTP Cullins Service")
// add recipients
mail.AddRecipient(ToEmail.Text)
// send the email
MailSocket.Messages.Append(mail)
// MailProgress.Visible = True
MailSocket.SendMail
InvoiceEmailWin.Close
DerkJ
(DerkJ)
January 29, 2022, 8:24am
2
Where is your Mail = New EmailMessage ?
If you let the MailSocket get destroyed at method end, the email may not yet be sent since that is asynchronous.
how might i avoid distroying the MailSocket ?
You should declare it as a more global variable than at present. If you just declare it as:
Var MailSocket as SMTPSocket
in your method, it will vanish when the method exits (as do all such locally-declared variables).
Where is this code running?
Hi Tim
the var mail is a global
the mailSocket is also declared as global
MailSocket isn’t “global”. It is public. And seems located embedded in a Window that apparently you abruptly close after a SendMail() that is still going on.
I am creating a new MailSSLSocket so it can be Global.
which interface shall i choose when setting up ? Please see photo …
Please advise
I don’t choose any because I always create sockets in code:
Var mysock as TCPSocket
...
mysock = new TCPSocket
then I set its parameters.
No need.
Just create a property that won’t go away without your request, of type SMTPSecureSocket, and use it as is. If sub-classing, also no need interfaces, just implement your own events as you wish and it’s done.
ahh works
except i dont know how to create events ?
as example how can i know the mail was sent, then close the window ?
meaby you can put error trap if not error the mesagge was send and you can close your windows