Unicode C
Unicode C
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 Unicode C Downloads
#include <C_CkMailManW.h>
#include <C_CkEmailW.h>
#include <C_CkBinDataW.h>
#include <C_CkStringTableW.h>
#include <C_CkStringBuilderW.h>
void ChilkatSample(void)
{
BOOL success;
HCkMailManW mailman;
HCkEmailW email;
HCkBinDataW bdMime;
HCkStringTableW distList;
HCkStringBuilderW sbRecipients;
int i;
int szDistList;
int j;
success = FALSE;
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
mailman = CkMailManW_Create();
CkMailManW_putSmtpHost(mailman,L"smtp.mymailserver.com");
CkMailManW_putSmtpPort(mailman,465);
CkMailManW_putSmtpSsl(mailman,TRUE);
CkMailManW_putSmtpUsername(mailman,L"myUsername");
CkMailManW_putSmtpPassword(mailman,L"myPassword");
// Create a new email object
email = CkEmailW_Create();
CkEmailW_putSubject(email,L"This is a test");
CkEmailW_putBody(email,L"This is a test");
CkEmailW_putFrom(email,L"Senders Name <sender@example.com>");
CkEmailW_AddTo(email,L"Subscribers",L"subscribers@example.com");
bdMime = CkBinDataW_Create();
CkMailManW_RenderToMimeBd(mailman,email,bdMime);
// Load a file containing one email address per line.
distList = CkStringTableW_Create();
success = CkStringTableW_AppendFromFile(distList,1000,L"utf-8",L"qa_data/distList.txt");
if (success == FALSE) {
wprintf(L"%s\n",CkStringTableW_lastErrorText(distList));
CkMailManW_Dispose(mailman);
CkEmailW_Dispose(email);
CkBinDataW_Dispose(bdMime);
CkStringTableW_Dispose(distList);
return;
}
sbRecipients = CkStringBuilderW_Create();
i = 0;
szDistList = CkStringTableW_getCount(distList);
j = 0;
while (i < szDistList) {
// Build a list of comma-separated recipients.
if (j > 0) {
CkStringBuilderW_Append(sbRecipients,L",");
}
CkStringBuilderW_Append(sbRecipients,CkStringTableW_stringAt(distList,i));
i = i + 1;
j = j + 1;
// If we have 20 recipients, or we have the final recipient in the final chunk, then send.
if ((j == 20) || (i == szDistList)) {
success = CkMailManW_SendMimeBd(mailman,L"sender@example.com",CkStringBuilderW_getAsString(sbRecipients),bdMime);
if (success != TRUE) {
wprintf(L"%s\n",CkMailManW_lastErrorText(mailman));
CkMailManW_Dispose(mailman);
CkEmailW_Dispose(email);
CkBinDataW_Dispose(bdMime);
CkStringTableW_Dispose(distList);
CkStringBuilderW_Dispose(sbRecipients);
return;
}
j = 0;
CkStringBuilderW_Clear(sbRecipients);
}
}
success = CkMailManW_CloseSmtpConnection(mailman);
if (success != TRUE) {
wprintf(L"Connection to SMTP server not closed cleanly.\n");
}
wprintf(L"Email sent to distirbution list.\n");
CkMailManW_Dispose(mailman);
CkEmailW_Dispose(email);
CkBinDataW_Dispose(bdMime);
CkStringTableW_Dispose(distList);
CkStringBuilderW_Dispose(sbRecipients);
}