Как я могу послать электронное письмо в C?

Я просто задаюсь вопросом, как я могу послать электронное письмо с помощью C? Я Погуглил его немного, но ничто не мог найти надлежащим.

5
задан Grace Note 18 May 2010 в 13:33
поделиться

4 ответа

В Unix-подобных системах вы можете использовать system и sendmail следующим образом:

#include <stdio.h>
#include <string.h>

int main() {

        char cmd[100];  // to hold the command.
        char to[] = "sample@example.com"; // email id of the recepient.
        char body[] = "SO rocks";    // email body.
        char tempFile[100];     // name of tempfile.

        strcpy(tempFile,tempnam("/tmp","sendmail")); // generate temp file name.

        FILE *fp = fopen(tempFile,"w"); // open it for writing.
        fprintf(fp,"%s\n",body);        // write body to it.
        fclose(fp);             // close it.

        sprintf(cmd,"sendmail %s < %s",to,tempFile); // prepare command.
        system(cmd);     // execute it.

        return 0;
}

Я знаю, что это уродливо, и есть несколько более эффективных способов сделай это ... но это работает :)

6
ответ дан 18 December 2019 в 09:06
поделиться

Наиболее очевидные варианты:

  1. Использование system() для вызова существующего инструмента командной строки для отправки почты. Не очень переносимо (требуется внешний инструмент с заданным синтаксисом вызова и т.д.), но очень легко реализуемо.
  2. Использовать некоторую библиотеку.
  3. Реализовать SMTP самостоятельно и напрямую обращаться к почтовому серверу. Много работы.
3
ответ дан 18 December 2019 в 09:06
поделиться

Вы также можете использовать команду mail.

Внутри программы C с помощью команды mail и системной функции вы можете отправлять почту пользователю.

 system("mail -s subject  address < filename")

  Example
 system ("mail -s test hello@gmail.com < filename")

Примечание: файл должен существовать. Если вы хотите ввести содержимое, yiu может ввести содержимое внутри файла, а затем отправить этот файл получателю.

2
ответ дан 18 December 2019 в 09:06
поделиться

Запустите sendmail и передайте сообщение электронной почты на стандартный ввод (в unix-подобных системах) или используйте клиентскую библиотеку SMTP. для подключения к почтовому серверу SMTP.

1
ответ дан 18 December 2019 в 09:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: