DataFlex
DataFlex
Send Email to Distribution List
See more SMTP Examples
Sends the same email to a list of 1000 email addresses in 50 sends where each email has 20 recipients.Note: Chilkat is not intended nor designed for mass emailing. A solution such as this might be used for a corporate emailing to employees, or an emailing to newsletter subscribers.
Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoMailman
Variant vEmail
Handle hoEmail
Variant vBdMime
Handle hoBdMime
Handle hoDistList
Handle hoSbRecipients
Integer i
Integer iSzDistList
Integer j
String sTemp1
Move False To iSuccess
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
Get Create (RefClass(cComChilkatMailMan)) To hoMailman
If (Not(IsComObjectCreated(hoMailman))) Begin
Send CreateComObject of hoMailman
End
Set ComSmtpHost Of hoMailman To "smtp.mymailserver.com"
Set ComSmtpPort Of hoMailman To 465
Set ComSmtpSsl Of hoMailman To True
Set ComSmtpUsername Of hoMailman To "myUsername"
Set ComSmtpPassword Of hoMailman To "myPassword"
// Create a new email object
Get Create (RefClass(cComChilkatEmail)) To hoEmail
If (Not(IsComObjectCreated(hoEmail))) Begin
Send CreateComObject of hoEmail
End
Set ComSubject Of hoEmail To "This is a test"
Set ComBody Of hoEmail To "This is a test"
Set ComFrom Of hoEmail To "Senders Name <sender@example.com>"
Get ComAddTo Of hoEmail "Subscribers" "subscribers@example.com" To iSuccess
Get Create (RefClass(cComChilkatBinData)) To hoBdMime
If (Not(IsComObjectCreated(hoBdMime))) Begin
Send CreateComObject of hoBdMime
End
Get pvComObject of hoEmail to vEmail
Get pvComObject of hoBdMime to vBdMime
Get ComRenderToMimeBd Of hoMailman vEmail vBdMime To iSuccess
// Load a file containing one email address per line.
Get Create (RefClass(cComChilkatStringTable)) To hoDistList
If (Not(IsComObjectCreated(hoDistList))) Begin
Send CreateComObject of hoDistList
End
Get ComAppendFromFile Of hoDistList 1000 "utf-8" "qa_data/distList.txt" To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoDistList To sTemp1
Showln sTemp1
Procedure_Return
End
Get Create (RefClass(cComChilkatStringBuilder)) To hoSbRecipients
If (Not(IsComObjectCreated(hoSbRecipients))) Begin
Send CreateComObject of hoSbRecipients
End
Move 0 To i
Get ComCount Of hoDistList To iSzDistList
Move 0 To j
While (i < iSzDistList)
// Build a list of comma-separated recipients.
If (j > 0) Begin
Get ComAppend Of hoSbRecipients "," To iSuccess
End
Get ComStringAt Of hoDistList i To sTemp1
Get ComAppend Of hoSbRecipients sTemp1 To iSuccess
Move (i + 1) To i
Move (j + 1) To j
// If we have 20 recipients, or we have the final recipient in the final chunk, then send.
If ((j = 20) Or (i = iSzDistList)) Begin
Get ComGetAsString Of hoSbRecipients To sTemp1
Get pvComObject of hoBdMime to vBdMime
Get ComSendMimeBd Of hoMailman "sender@example.com" sTemp1 vBdMime To iSuccess
If (iSuccess <> True) Begin
Get ComLastErrorText Of hoMailman To sTemp1
Showln sTemp1
Procedure_Return
End
Move 0 To j
Send ComClear To hoSbRecipients
End
Loop
Get ComCloseSmtpConnection Of hoMailman To iSuccess
If (iSuccess <> True) Begin
Showln "Connection to SMTP server not closed cleanly."
End
Showln "Email sent to distirbution list."
End_Procedure