これは、CocketsライブラリのSMTPクライアントの簡単な例です。この例は、SMTPサーバーに接続され、メイン文字を送信してから、接続を閉じます。

「c c
#include <arpa/inet.h>
#include <netinet/in.h>
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <unistd.h>

#define smtp_server "smtp.example.com"
#define smtp_port 25
#define buffer_size 1024

bool send_command（intskfd、const char *command、consted_response）;
bool read_response（intskfd、char *buffer、const char *spedd_rasponse）;

int main（）{
    intskfd;
    struct sockaddr_in server_addr;
    char buffer [buffer_size];

    //ソケットを作成します
    if（（sockfd = socket（af_inet、sock_stream、0））<0）{
        Perror（ "ソケット作成に失敗した"）;
        exit（exit_failure）;
    }

    //サーバーアドレスを設定します
    memset（＆server_addr、0、sizeof（server_addr））;
    server_addr.sin_family = af_inet;
    server_addr.sin_port = htons（smtp_port）;
    if_pton（af_inet、smtp_server、＆server_addr.sin_addr）<= 0）{
        Perror（ "無効なアドレス"）;
        exit（exit_failure）;
    }

    // SMTPサーバーに接続します
    if（connect（sockfd、（struct sockaddr *）＆server_addr、sizeof（server_addr））<0）{0）
        Perror（ "接続失敗"）;
        exit（exit_failure）;
    }

    //サーバーの応答を読み取ります
    if（！read_response（sockfd、buffer、 "220"））{
        fprintf（stderr、 "server \ nから挨拶を受けられなかった"）;
        exit（exit_failure）;
    }

    // heloコマンドを送信します
    if（！send_command（sokkfd、 "helo client.example.com \ r \ n"、 "250"））{
        fprintf（stderr、 "helo command \ nを送信できなかった"）;
        exit（exit_failure）;
    }

    //コマンドからメールを送信します
    if（！send_command（sokkfd、 "mail from：<sender@example.com> \ r \ n"、 "250"））{
        fprintf（stderr、 "コマンド\ nからメールを送信できなかった"）;
        exit（exit_failure）;
    }

    // rcptをコマンドに送信します
    if（！send_command（sokkfd、 "rcpt to：<reciontient@example.com> \ r \ n"、 "250"））{
        fprintf（stderr、 "rcptをコマンド\ n"に送信できなかった "）;
        exit（exit_failure）;
    }

    //データコマンドを送信します
    if（！send_command（sockfd、 "data \ r \ n"、 "354"））{
        fprintf（stderr、 "データコマンド\ nを送信できなかった"）;
        exit（exit_failure）;
    }

    //電子メールコンテンツを送信します
    const char *email_body =
        「件名：電子メールをテスト\ r \ n」
        「\ r \ n」
        「こんにちは、\ r \ n」
        「\ r \ n」
        「これは、Cとソケットを使用して送信されたテストメールです。\ r \ n」
        「\ r \ n」
        「よろしく、\ r \ n」
        「あなたの名前\ r \ n」
        "。\ r \ n";

    if（！send_command（sokkfd、email_body、 "250"））{
        fprintf（stderr、 "電子メールコンテンツの送信に失敗しました\ n"）;
        exit（exit_failure）;
    }

    // quitコマンドを送信します
    if（！send_command（sockfd、 "quit \ r \ n"、 "221"））{
        fprintf（stderr、 "quit command \ n"）;
        exit（exit_failure）;
    }

    //ソケットを閉じます
    close（sockfd）;
    printf（ "電子メールが正常に\ n"を送信しました "）;
    0を返します。
}

bool send_command（intskfd、const char *command、consted_response）{
    send（sockfd、command、strlen（command）、0）;
    char buffer [buffer_size];
    return read_response（sockfd、buffer、expection_reponse）;
}

bool read_response（intskfd、char *buffer、const char *spedd_rasponse）{
    memset（buffer、0、buffer_size）;
    ssize_t n = recv（sockfd、buffer、buffer_size -1、0）;
    if（n <= 0）{
        Perror（ "受信失敗"）;
        exit（exit_failure）;
    }
    バッファー[n] = '\ 0';
    printf（ "サーバー応答：％s"、バッファー）;
    return strncmp（buffer、expection_reponse、strlen（expection_response））== 0;
}
`` `

「smtp_server」を** domain **または** ipアドレス** your ** smtp server **に置き換え、**および** rcptから** rcptから対応するメールアドレスに**メールを更新します。また、必要に応じて、手紙のトピックとテキストを更新することを忘れないでください。

この例は、通常のテキストの形で接続を使用しており、認証や暗号化をサポートしていないことに注意してください。実際のアプリケーションの場合、安全な化合物と認証をサポートする「libcurl」またはlibesmtp`などのライブラリを使用します。
Вот простой пример SMTP-клиента на языке C с использованием библиотеки sockets. Этот пример подключается к SMTP-серверу, отправляет основное письмо, а затем закрывает соединение:

```c
#include <arpa/inet.h>
#include <netinet/in.h>
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <unistd.h>

#define SMTP_SERVER "smtp.example.com"
#define SMTP_PORT 25
#define BUFFER_SIZE 1024

bool send_command(int sockfd, const char *command, const char *expected_response);
bool read_response(int sockfd, char *buffer, const char *expected_response);

int main() {
    int sockfd;
    struct sockaddr_in server_addr;
    char buffer[BUFFER_SIZE];

    // Create a socket
    if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
        perror("Socket creation failed");
        exit(EXIT_FAILURE);
    }

    // Set up server address
    memset(&server_addr, 0, sizeof(server_addr));
    server_addr.sin_family = AF_INET;
    server_addr.sin_port = htons(SMTP_PORT);
    if (inet_pton(AF_INET, SMTP_SERVER, &server_addr.sin_addr) <= 0) {
        perror("Invalid address");
        exit(EXIT_FAILURE);
    }

    // Connect to the SMTP server
    if (connect(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) {
        perror("Connection failed");
        exit(EXIT_FAILURE);
    }

    // Read server response
    if (!read_response(sockfd, buffer, "220")) {
        fprintf(stderr, "Failed to receive greeting from server\n");
        exit(EXIT_FAILURE);
    }

    // Send HELO command
    if (!send_command(sockfd, "HELO client.example.com\r\n", "250")) {
        fprintf(stderr, "Failed to send HELO command\n");
        exit(EXIT_FAILURE);
    }

    // Send MAIL FROM command
    if (!send_command(sockfd, "MAIL FROM:<sender@example.com>\r\n", "250")) {
        fprintf(stderr, "Failed to send MAIL FROM command\n");
        exit(EXIT_FAILURE);
    }

    // Send RCPT TO command
    if (!send_command(sockfd, "RCPT TO:<recipient@example.com>\r\n", "250")) {
        fprintf(stderr, "Failed to send RCPT TO command\n");
        exit(EXIT_FAILURE);
    }

    // Send DATA command
    if (!send_command(sockfd, "DATA\r\n", "354")) {
        fprintf(stderr, "Failed to send DATA command\n");
        exit(EXIT_FAILURE);
    }

    // Send email content
    const char *email_body =
        "Subject: Test Email\r\n"
        "\r\n"
        "Hello,\r\n"
        "\r\n"
        "This is a test email sent using C and sockets.\r\n"
        "\r\n"
        "Best Regards,\r\n"
        "Your Name\r\n"
        ".\r\n";

    if (!send_command(sockfd, email_body, "250")) {
        fprintf(stderr, "Failed to send email content\n");
        exit(EXIT_FAILURE);
    }

    // Send QUIT command
    if (!send_command(sockfd, "QUIT\r\n", "221")) {
        fprintf(stderr, "Failed to send QUIT command\n");
        exit(EXIT_FAILURE);
    }

    // Close the socket
    close(sockfd);
    printf("Email sent successfully\n");
    return 0;
}

bool send_command(int sockfd, const char *command, const char *expected_response) {
    send(sockfd, command, strlen(command), 0);
    char buffer[BUFFER_SIZE];
    return read_response(sockfd, buffer, expected_response);
}

bool read_response(int sockfd, char *buffer, const char *expected_response) {
    memset(buffer, 0, BUFFER_SIZE);
    ssize_t n = recv(sockfd, buffer, BUFFER_SIZE - 1, 0);
    if (n <= 0) {
        perror("Receive failed");
        exit(EXIT_FAILURE);
    }
    buffer[n] = '\0';
    printf("Server response: %s", buffer);
    return strncmp(buffer, expected_response, strlen(expected_response)) == 0;
}
```

Замените `SMTP_SERVER` на **домен** или **IP-адрес** вашего **SMTP-сервера** и обновите адреса **MAIL FROM** и **RCPT TO** на соответствующие адреса электронной почты. Также не забудьте обновить тему и текст письма, если это необходимо.

Обратите внимание, что данный пример использует соединение в виде обычного текста и не поддерживает аутентификацию или шифрование. Для реальных приложений используйте библиотеки типа `libcurl` или `libesmtp`, которые поддерживают безопасные соединения и аутентификацию.