Sample Application

Initialization

µC/SMTPc requires no initialization. 

Note that µC/TCP-IP must be initialized without error. Also, µC/DNSc must be initialize to resolve SMTP Server host name. 

Sending an e-mail

#include <Source/smtp-c.h>

#define SERVER_DOMAIN_NAME   "smtp.foo.bar"						/* See note #1 */

#define MAILBOX_FROM_NAME    "John Doe"							/* See note #2 */
#define MAILBOX_FROM_ADDR    "john.doe@foo.bar"
#define MAILBOX_TO_NAME      "Jane Doe"
#define MAILBOX_TO_ADDR      "jane.doe@foo.bar"

#define USERNAME             "john.doe"							/* See note #3 */
#define PASSWORD             "123"

#define MSG_SUBJECT          "Test"
#define MSG                  "This is a test message"

CPU_BOOLEAN  AppMailSend (void)
{
    CPU_CHAR                *p_server_addr;
    SMTPc_MBOX               from_mbox;
    SMTPc_MBOX               to_mbox;
    SMTPc_MSG                mail;
    SMTPc_ERR                err;
    CPU_INT16U               port;
    NET_APP_SOCK_SECURE_CFG *p_secure_cfg;
 
    p_server_addr = SERVER_DOMAIN_NAME;
                                                                /* ------------- INITIALIZE THE MAIL OBJ -------------- */
    SMTPc_SetMsg (&mail, &err);									/* See note #4 */
    if (err != SMTPc_ERR_NONE) {
        return (DEF_FAIL);
    }
                                                                /* ---------------- SET MAIL ENVELOP ------------------ */
																/* See note #5*/
    mail.From = &from_mbox;                                     /* Set the FROM mailbox of the e-mail.                  */
    SMTPc_SetMbox(mail.From, MAILBOX_FROM_NAME, MAILBOX_FROM_ADDR, &err);
    if (err != SMTPc_ERR_NONE) {
        return (DEF_FAIL);
    }
    mail.ToArray[0] = &to_mbox;                                 /* Set the TO mailbox of the e-mail.                    */
    SMTPc_SetMbox(mail.ToArray[0], MAILBOX_TO_NAME, MAILBOX_TO_ADDR, &err);
    if (err != SMTPc_ERR_NONE) {
        return (DEF_FAIL);
    }
                                                                /* ----------------- SET MAIL CONTENT ----------------- */                                         
    mail.Subject           = MSG_SUBJECT;                       /* Set the message subject and body.                    */
    mail.ContentBodyMsg    = MSG;
    mail.ContentBodyMsgLen = sizeof(MSG);
                                                                /* ---------------- SET CONN SECURITY ----------------- */															
    port                   = SMTPc_CFG_IPPORT;					/* See note #6 */
    p_secure_cfg           = DEF_NULL;
                                                                /* -------------------- SEND MAIL --------------------- */
    SMTPc_SendMail( p_server_addr,							    /* See note #7 */
                    port,
                    USERNAME,
                    PASSWORD,
                    p_secure_cfg,
                   &mail,
                   &err);
    if (err != SMTPc_ERR_NONE) {
        return (DEF_FAIL);
    }
    return (DEF_OK);
}
  1. The SMTP server can represented as an IPv4/IPv6 address or a domain name. If a domain name is used, enable and initialize µC/DNSc properly.
     
  2. Mailbox represent the address and name of a sender (FROM) or recipient (TO,CC and BCC). Multiple recipients can be set for an email.
     
  3. µC/SMTPc allow the user to authenticate to a SMTPc server with credential if needed. 
     
  4. SMTPc_SetMsg() function must be called to initialized the SMTPc_MSG object.
     

  5. In order to set a mailbox in the email, SMTPc_MBOX instance must be passed to the SMTPc_MSG object. 
     

  6. The connection to the SMTP server can be either secure or not. In this example, the connection is non-secure and uses the legacy port 25. If a secure connection is required, p_secure_cfg must be configured. For more information, refer to the µC/TCP-IP SSL Module.
     
  7. SMTP_SendMail() function will process each step to send the email. It will connect to SMTP the server, prepare and send the email and disconnect from the SMTP server.