C send mail without authentication

The classic "send mail without authentication" question!

In C, you can send an email without authentication using the sendmail command or the libcurl library. Here are some examples:

Using sendmail command:

#include <stdio.h>
#include <stdlib.h>

int main() {
    FILE *fp = popen("sendmail -t -i -f [email protected] -c 'Subject: Test email' 'Hello, world!'","w");
    if (fp == NULL) {
        perror("popen");
        return 1;
    }
    fclose(fp);
    return 0;
}

This code uses the popen function to execute the sendmail command with the -t option, which tells sendmail to read the email message from standard input. The -i option tells sendmail to ignore the From header, and the -f option specifies the sender's email address. The -c option specifies the subject, and the final string is the email body.

Using libcurl library:

#include <curl/curl.h>
#include <stdio.h>

int main() {
    CURL *curl;
    CURLcode res;

    curl_global_init(CURL_GLOBAL_DEFAULT);
    curl = curl_easy_init();
    if(curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "smtp://your_smtp_server:port");
        curl_easy_setopt(curl, CURLOPT_MAIL_FROM, "[email protected]");
        curl_easy_setopt(curl, CURLOPT_MAIL_RCPT, "[email protected]");
        curl_easy_setopt(curl, CURLOPT_READDATA, "Hello, world!");
        curl_easy_setopt(curl, CURLOPT_READFUNCTION, NULL);
        res = curl_easy_perform(curl);
        if(res!= CURLE_OK) {
            fprintf(stderr, "cURL error: %s\n", curl_easy_strerror(res));
        }
        curl_easy_cleanup(curl);
    }
    curl_global_cleanup();
    return 0;
}

This code uses the libcurl library to send an email without authentication. You'll need to replace your_smtp_server and port with your actual SMTP server and port. The CURLOPT_MAIL_FROM and CURLOPT_MAIL_RCPT options specify the sender's and recipient's email addresses, respectively. The CURLOPT_READDATA option specifies the email body.

Please note that sending email without authentication is generally not recommended, as it can lead to spam and security issues. It's always a good idea to use authentication (e.g., using STARTTLS or AUTH) to ensure the integrity and security of your email communications.