%Net.SMTP
class %Net.SMTP extends %Library.RegisteredObject
For information on using this class, see Sending and Receiving Email.
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.
#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 InterSystems IRIS 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:\irissys\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
- IPVersion
- IgnoreFailedAuth
- SSLCheckServerIdentity
- SSLConfiguration
- ShowBcc
- UseSTARTTLS
- authenticator
- bufcount
- localhost
- port
- smtpserver
- timezone
Method Inventory
Parameters
Properties
0 - Try to connect with IPV4 first if failed then try it again with IPV6.
4 - Connect to SMTP server with IPV4 address.
6 - Connect to SMTP server with IPV6 address.
All other values are treated as 0.
#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 InterSystems IRIS 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()