Class wwSmtp

The wwSMTP class allows sending emails from Visual FoxPro applications through standard SMTP/ESMTP mail servers. In order to use this class you will need to have an SMTP mail server address from your or your users ISP or a company server.

Two modes: Classic or wwSmpt (.NET)

The wwSmtp class comes in two flavors:

  • .NET Mail Mode (nMailMode = 0)
    Uses .NET and wwDotNetBridge to send emails. The .NET component provides additional features such as SSL/TSL encrypted content, embedded rich content resources like images and the ability to send multiple emails on a single mail connection. The .NET interface uses the native SmtpClient in .NET to abstract mail sending operations which are exposed through wwDotNetBridge.

  • Classic wwIPStuff Mode (nMailMode = 2)
    Uses classic wwIPStuff behavior using a plain Win32 dll that doesn't need to be registered nor require any special runtimes. Only supports SendMail and SendMailAsync methods - the Connect/SendMessage/Close methods that allow for single connection multi-recipient sends are not available. This is the default behavior.

nMailMode can be set via property:

loSmtp = CREATEOBJECT("wwSmtp")
loSmtp.nMailMode = 0 && .NET mode

or via Init parameter:

loSmtp = CREATEOBJECT("wwSmtp",0)
Custom
  wwSmtp

Remarks

Running wwSmtp off a Network

If you're running wwSmtp in .NET mode and from a network location please take a look at .NET security configuration required that might affect operation of the wwSmtp class.

Dependencies:
  • wwDotnetBridge.prg
  • wwUtils.prg
  • wwApi.prg
  • wwCollections.prg
For .NET mode
  • wwDotNetBridge.dll
  • wwIpStuff.dll
For Classic Mode
  • wwIPStuff.dll

Class Members

MemberDescription

AddAlternateView

o.AddAlternateView(loAlternateView)

AddAttachment

Adds one or more file attachments to the mail message.

*** Content type is optional and only used  when using the .NET object
loSmtp.AddAttachment("c:\images\sailbig.jpg","image/jpeg")
loSmtp.AddAttachment("c:\images\sailbig.jpg","image/jpeg")

o.AddAttachment(lcFileName, lcContentType)

AddHeader

o.AddHeader(lcHeader, lcValue)

ClearAttachments

Clears any attachments previously added with AddAttachment().

o.ClearAttachments()

Close

Closes an SMTP connection opened with Connect

o.Close()

Connect

wwSmtp :: Connect

o.Connect()

Dispose

Cleans up this object instance by removing the .NET SMTP reference and wwDotNetBridge instance. Can be called explicitly, but is also called internally off the object's Destroy() event.

o.Dispose()

SendMail

o.SendMail()

SendMailAsync

o.SendMailAsync()

SendMessage

o.SendMessage(lcRecipient, lcCC, lcBcc)

cAlternateContentType

Content type of alternate text sent. Defaults to text/plain for plain text.

cAlternateText

Allows you to specify an alterate message format. Commonly used to send a plain text message in addition to an HTML message for clients that don't support HTML.

cAttachment

One or more attachments, in a comma delimited list. Files need to be specified as fully qualified files including paths.

cBccList

List of Blind CCs. Comma delimited

cCCList

List of CC's. Comma delimited

cContentType

The content type of the message to send. Defaults to text/plain.

cErrorMsg

An error message if the SendMail, SendMailAsync, SendMessage request fails.

cMailServer

Specifies the mail server's IP Address or domain name. A port name can be appended with a colon and portnumber (smtp.mydomain.com:587).

cMessage

The body for the message to send.

cPassword

Most mail server's these days require authentication and this property specifies the password.

cPriority

The priority of the message to send.

cRecipient

One ore more recipients. Multiple recipients should be comma or semi-colon delimited.

cReplyTo

The Reply-To address that is used when the user clicks on Reply in the mail client. By default this value is not provided and the reply to button simply replies to the sender.

cSenderEmail

The sender's email address that displays in the mail client's sender information.

cSenderName

The display name of the sender that displays in the mail client's Sender display. Optional.

cSubject

The title or subject header for the message to send. This message should be provided in plain text (ie. no formatting or HTML markup for HTML messages).

cUserAgent

The user agent (x-mailer header) that is sent with the email request. Defaults to West Wind Smtp X.0 where X is the major version number.

cUsername

Username used for authentication. Most mail server's these days require authentication and this property specifies the user name.

To use the logged on user's Windows User Credentials, you can use a special value of LOCALACCOUNT with no password (v6.21+).

lError

True if a method call fails

lReturnReceipt

Determines if a return receipt is requested (Return-Receipt-To)

lUseSsl

nMailMode

Determines what underlying technology is used to send emails

nServerPort

The port on which to send email. Can also be overridden in the cMailServer string by appending a : and port number.

nTimeout

The timeout in seconds before mail sending is considered to have failed.

oSmtp

An instance of the Westwind.wwSmtp .NET component.

Example

DO wwSmtp && load libraries

LOCAL loSMTP as wwSmtp
loSmtp=CREATEOBJECT("wwSmtp")
loSmtp.nMailMode = 0  && wwIPStuff mode (Win32 - default)   0 - .NET wwSmtp

loSmtp.cMailServer="mail.yourmailserver.net"
loSmtp.cSenderEmail="rstrahl@mydomain.com"
loSmtp.cSenderName="Mr. Testa"

*** Optional Username
* loSmtp.cUsername = "ricks"
* loSmtp.cPassword = "seeKrit"

*** Optional SSL Messages (only in .NET mode (nMailMode = 0))
* loSmtp.lUseSsl = .T.

loSmtp.cRecipient="somebody@sweat.com,another@bust.com"
loSmtp.cCCList="rstrahl@east-wind.com,looser@nobody.com"
loSmtp.cBCCList="fred@flintstone.com"
loSmtp.cSubject="wwSmtp Test Message"

*** Optionally specify content type - text/plain is default
loSmtp.cContentType = "text/html"  
loSmtp.cMessage="Who said this had to be <b>difficult</b>?"

*** Optionally provide an alternate content type or plain text fallback
loSmtp.cAlternateContentType = "text/plain"
loSmtp.cAlternateText = "Plain text can go here."

*** Optionally send file attachments
loSmtp.AddAttachment("c:\temp\somefile.pdf")
oSmtp.AddAttachment("c:\temp\sailbig.jpg")

llResult = loSmtp.SendMail()

IF !llResult
   Wait window loSmtp.cErrorMsg
ENDIF

Requirements

Assembly: wwsmtp.prg

See also:

Sending SMTP Email | Sending Messages with Html and Text body | wwSMTP::SendMail

© West Wind Technologies, 2023 • Updated: 10/15/22
Comment or report problem with topic