%Net.SMTP
class %Net.SMTP extends %Library.RegisteredObject
Send a SMTP mail messageThe Charset property of each %Net.MailMessagePart determines the charset for text MIME parts. The charset property is ignored unless ContentType=text/... Charset sets the Character Set for the content-type header. IMPORTANT: Charset must be set before any data is written to the TextData stream associated with this %Net.MailMessagePart. The Charset may also be initialized when the message is created by ##Class(%Net.MailMessagePart).%New(charset) or ##Class(%Net.MailMessage).%New(charset). For Unicode locale the default Charset for ##Class(%Net.SMTP).%New() is utf-8 and for 8-bit locale it is the default Cache charset.
  #include %occOptions
  #include %occStatus
  
  testmailsend3 ;
  ;  Replace information marked with [[ ]]
  
  new attached,err,m,nestedm,s,status
  set s=##class(%Net.SMTP).%New()
  set s.smtpserver=[["SMTP server name"]]
  set s.timezone=[["-0400"]]  may remove this line to get Universal Time
  set m=##class(%Net.MailMessage).%New()
  set m.From=[["test@company.com"]]
  // Either address with name or just email address supported.
  do m.To.Insert([["receiver@another.com"]])
  do m.To.Insert([["Joe Smith <jsmith@another.com>"]])
  write !,"s.port="_s.port
  write !,"s.localhost="_s.localhost
  set m.Subject="Sent by Cache' mail"
  set m.Charset="iso-8859-1"
  set status=m.TextData.Write("This is the main body.")
  if $$$ISERR(status) do $system.OBJ.DisplayError(status) quit
  set status=m.TextData.Write($char(13,10))
  if $$$ISERR(status) do $system.OBJ.DisplayError(status) quit
  set status=m.TextData.Write("This is the second line.")
  if $$$ISERR(status) do $system.OBJ.DisplayError(status) quit
  set status=m.TextData.Write($char(13,10))
  if $$$ISERR(status) do $system.OBJ.DisplayError(status) quit
  set status=m.AttachFile("c:\winnt","notepad.exe")
  if $$$ISERR(status) do $system.OBJ.DisplayError(status) quit
  // Attach a text file with charset=iso-8859-1
  set status=m.AttachFile("d:\temp","test.txt",0,"iso-8859-1")
  if $$$ISERR(status) do $system.OBJ.DisplayError(status) quit
  set nestedm=m.AttachNewMessage()
  // Attach a binary file
  set status=nestedm.AttachFile("c:\cachesys\bin","test.bin")
  if $$$ISERR(status) do $system.OBJ.DisplayError(status) quit
  write !,"m.Parts.Count()="_m.Parts.Count()
  write !,"m.Parts.GetAt(3).Parts.GetAt(1).FileName="_m.Parts.GetAt(3).Parts.GetAt(1).FileName
  write !,"m.Parts.GetAt(3).Parts.Count()="_m.Parts.GetAt(3).Parts.Count()
  set status=s.Send(m)
  if $$$ISERR(status) do $system.OBJ.DisplayError(status)
  quit
  
  
Property Inventory
- AllowHeaderEncoding
 - AuthFrom
 - ContinueAfterBadSend
 - Debug
 - Error
 - FailedSend
 - SSLCheckServerIdentity
 - SSLConfiguration
 - ShowBcc
 - UseSTARTTLS
 - authenticator
 - bufcount
 - localhost
 - port
 - smtpserver
 - timezone
 
Method Inventory
Parameters
Properties
  #include %occOptions
  #include %occStatus
  
  authtestmailsend ;
  ;  Replace information marked with [[ ]]
  
  new auth,m,s,status
  set s=##class(%Net.SMTP).%New()
  set auth=##class(%Net.Authenticator).%New() ; use default authentication list
  set auth.UserName=[["myUser"]]
  set auth.Password=[["myPassword"]]
  set s.authenticator=auth
  set s.smtpserver=[["SMTP server name"]]
  set s.timezone=[["-0400"]]  may remove this line to get Universal Time
  set m=##class(%Net.MailMessage).%New()
  set m.From=[["test@company.com"]]
  do m.To.Insert([["receiver@another.com"]])
  do m.To.Insert([["Joe Smith <jsmith@another.com>"]])
  set m.Subject="Sent by Cache' mail"
  set m.Charset="iso-8859-1"
  do m.TextData.Write("This message has been sent using an SMTP server with Authentication.")
  set status=s.Send(m)
  if $$$ISERR(status) do $system.OBJ.DisplayError(status)
  quit
  
  
Methods
"xtext" is formally defined as follows:
xtext = *( xchar / hexchar )
xchar = any ASCII CHAR between "!" (33) and "~" (126) inclusive,
except for "+" and "=".
;"hexchar"s are intended to encode octets that cannot appear
;as ASCII characters within an esmtp-value.
hexchar = ASCII "+" immediately followed by two upper case hexadecimal digits
Returns a %Status to indicate success or failure.
The send() supports the following small subset of permissible message header fields. Set the corresponding MailMessage properties before invoking send.
- Date - set from msg.Date; will be set to the current date and time if not specified
 - From - set from msg.From
 - Subject - set from msg.Subject
 - To - set from msg.To by converting to "," separated list
 - Cc - optionally set from msg.Cc by converting to "," separated list
 - Bcc - optionally set from msg.Bcc by converting to "," separated list
 - Sender - optionally set from msg.Sender
 - Reply-To - optionally set from msg.ReplyTo
 
The "MAIL FROM:" SMTP command uses the Sender field if specified, otherwise the From field.
The "RCPT TO:" SMTP command uses the To and Cc lists joined by commas.
simple e-mail address must be passed to MAIL and RCPT.
Therefore if the address is of the form name <email>,
the value passed to the SMTP command is just email.
Inherited Members
Inherited Methods
- %AddToSaveSet()
 - %ClassIsLatestVersion()
 - %ClassName()
 - %ConstructClone()
 - %DispatchClassMethod()
 - %DispatchGetModified()
 - %DispatchGetProperty()
 - %DispatchMethod()
 - %DispatchSetModified()
 - %DispatchSetMultidimProperty()
 - %DispatchSetProperty()
 - %Extends()
 - %GetParameter()
 - %IsA()
 - %IsModified()
 - %New()
 - %NormalizeObject()
 - %ObjectModified()
 - %OriginalNamespace()
 - %PackageName()
 - %RemoveFromSaveSet()
 - %SerializeObject()
 - %SetModified()
 - %ValidateObject()