Sample code for 30+ languages & platforms
C

Send an SMTP RSET Command

See more SMTP Examples

Demonstrates the Chilkat MailMan.SmtpReset method, which sends an SMTP RSET command to the server. RSET resets the server-side state of the current mail transaction. This example opens a connection, sends RSET, and closes.

Background: During an SMTP session a message is built up across MAIL FROM and RCPT TO commands. If you need to abandon that partially-specified transaction — say an error occurred midway — RSET clears it without dropping the connection, so the same authenticated session can start a fresh message. It's a lightweight way to recover in-session rather than reconnecting.

Chilkat C Downloads

C
#include <C_CkMailMan.h>

void ChilkatSample(void)
    {
    BOOL success;
    HCkMailMan mailman;

    success = FALSE;

    //  Demonstrates the MailMan.SmtpReset method, which sends an SMTP RSET command to the server.
    //  RSET resets the server-side state of the current mail transaction.

    mailman = CkMailMan_Create();

    //  Configure the SMTP server connection.
    CkMailMan_putSmtpHost(mailman,"smtp.example.com");
    CkMailMan_putSmtpPort(mailman,465);
    CkMailMan_putSmtpSsl(mailman,TRUE);
    CkMailMan_putSmtpUsername(mailman,"user@example.com");
    CkMailMan_putSmtpPassword(mailman,"myPassword");

    //  Open the connection.

    success = CkMailMan_OpenSmtpConnection(mailman);
    if (success == FALSE) {
        printf("%s\n",CkMailMan_lastErrorText(mailman));
        CkMailMan_Dispose(mailman);
        return;
    }

    //  Reset the current SMTP mail transaction.
    success = CkMailMan_SmtpReset(mailman);
    if (success == FALSE) {
        printf("%s\n",CkMailMan_lastErrorText(mailman));
        CkMailMan_Dispose(mailman);
        return;
    }

    success = CkMailMan_CloseSmtpConnection(mailman);
    if (success == FALSE) {
        printf("%s\n",CkMailMan_lastErrorText(mailman));
        CkMailMan_Dispose(mailman);
        return;
    }

    printf("Sent SMTP RSET.\n");


    CkMailMan_Dispose(mailman);

    }