Sample code for 30+ languages & platforms
Unicode C

Get SpamAssassin Score for an Email

See more Email Object Examples

Uses Postmark’s spam API (a RESTfull interface to the SpamAssassin filter tool) to analyze an email to get a spam score.

Chilkat Unicode C Downloads

Unicode C
#include <C_CkEmailW.h>
#include <C_CkJsonObjectW.h>
#include <C_CkHttpW.h>
#include <C_CkHttpResponseW.h>

void ChilkatSample(void)
    {
    BOOL success;
    HCkEmailW email;
    HCkJsonObjectW json;
    HCkHttpW http;
    HCkHttpResponseW resp;

    success = FALSE;

    // This example requires the Chilkat API to have been previously unlocked.
    // See Global Unlock Sample for sample code.

    // First build an email to check.
    email = CkEmailW_Create();
    CkEmailW_putSubject(email,L"this is a test");
    CkEmailW_putFrom(email,L"support@chilkatsoft.com");
    CkEmailW_AddTo(email,L"John Doe",L"john@example.com");
    CkEmailW_AddPlainTextAlternativeBody(email,L"this is a test");
    CkEmailW_AddHtmlAlternativeBody(email,L"<html><body><b>Hello John!</b><p>This is a test</p></body></html>");
    success = CkEmailW_AddFileAttachment2(email,L"qa_data/jpg/starfish.jpg",L"image/jpeg");

    // Check this email by implementing this curl command:

    // curl -X POST "https://spamcheck.postmarkapp.com/filter"
    // -H "Accept: application/json"
    // -H "Content-Type: application/json"
    // -v
    // -d '{"email":"raw dump of email", "options":"short"}'

    json = CkJsonObjectW_Create();
    CkJsonObjectW_UpdateString(json,L"email",CkEmailW_getMime(email));
    CkJsonObjectW_UpdateString(json,L"options",L"short");

    http = CkHttpW_Create();
    resp = CkHttpResponseW_Create();
    success = CkHttpW_HttpJson(http,L"POST",L"https://spamcheck.postmarkapp.com/filter",json,L"application/json",resp);
    if (success == FALSE) {
        wprintf(L"%s\n",CkHttpW_lastErrorText(http));
        CkEmailW_Dispose(email);
        CkJsonObjectW_Dispose(json);
        CkHttpW_Dispose(http);
        CkHttpResponseW_Dispose(resp);
        return;
    }

    wprintf(L"response status code = %d\n",CkHttpResponseW_getStatusCode(resp));
    wprintf(L"response body: \n");
    wprintf(L"%s\n",CkHttpResponseW_bodyStr(resp));


    CkEmailW_Dispose(email);
    CkJsonObjectW_Dispose(json);
    CkHttpW_Dispose(http);
    CkHttpResponseW_Dispose(resp);

    }