제가 직접 Google Drive에 문서를 생성해 드리는 도구는 현재 연결되어 있지 않아, 곧바로 복사해서 사용하실 수 있도록 보고서 원문 전체를 출력해 드립니다. 말씀하신 조건대로 코드 누락 없이, 시스템 모니터링 환경 등에 곧바로 이식하여 사용하기 편하도록 작성했습니다. Brevo 메일 연동 기술 보고서 이 보고서는 서버 및 에이전트 환경에서 Brevo(구 Sendinblue)를 활용하여 메일 발송을 자동화하는 두 가지 핵심 방법(SMTP 릴레이, REST API)을 상세히 설명합니다. 1. 사전 준비 (API Key 및 SMTP 자격 증명 발급) Brevo 계정에 로그인한 뒤 우측 상단 프로필 메뉴에서 [SMTP & API] 탭으로 이동합니다. API Keys 탭에서 Generate a new API key를 클릭하여 고유 키를 발급받습니다. (API 연동 시 사용) SMTP 탭에서 SMTP 서버 주소, 포트(587), 로그인 아이디, 마스터 비밀번호를 확인합니다. (SMTP 연동 시 사용) 2. 방법 A: SMTP 릴레이를 이용한 연동 가장 표준적인 메일 전송 프로토콜을 사용하는 방법입니다. 시스템의 기존 메일 데몬(Postfix, Sendmail 등)이나 스크립트에서 설정하기 용이합니다. SMTP 서버: smtp-relay.brevo.com 포트: 587 (TLS) 또는 465 (SSL) 아이디: Brevo 가입 이메일 비밀번호: 발급받은 SMTP 마스터 비밀번호 3. 방법 B: REST API를 이용한 연동 (권장) 외부 패키지 의존성 없이 시스템 에이전트 등에서 직접 HTTP 요청을 날려 메일을 발송하는 방법입니다. [터미널 curl 전체 소스] 터미널 환경에서 스크립트로 발송할 때 사용하는 전체 명령어입니다. Bash curl --request POST \ --url https://api.brevo.com/v3/smtp/email \ --header 'accept: application/json' \ --header 'api-key: YOUR_API_KEY_HERE' \ --header 'content-type: application/json' \ --data '{ "sender": { "name": "System Agent", "email": "no-reply@yourdomain.com" }, "to": [ { "email": "admin@yourdomain.com", "name": "Admin" } ], "subject": "System Alert: Notification", "htmlContent": "AlertAgent status update." }' [C언어 (libcurl) 전체 소스] 시스템 레벨 에이전트에 직접 임베딩할 수 있는 C언어 전체 소스 코드입니다. 어떠한 누락도 없이 컴파일 가능한 원형 그대로 제공합니다. C # include # include # include # include int send_brevo_email ( const char * api_key) { CURL *curl; CURLcode res; struct curl_slist *headers = NULL ; // 전송할 JSON 페이로드 구성 const char *json_payload = "{" " \"sender\": {\"name\": \"Agent\", \"email\": \"alert@domain.com\"}," " \"to\": [{\"email\": \"admin@domain.com\", \"name\": \"Admin\"}]," " \"subject\": \"Agent Report\"," " \"htmlContent\": \"서버 상태 정상 보고입니다.\"" "}" ; curl_global_init(CURL_GLOBAL_ALL); curl = curl_easy_init(); if (curl) { // Brevo API 엔드포인트 설정 curl_easy_setopt(curl, CURLOPT_URL, "https://api.brevo.com/v3/smtp/email" ); // HTTP 헤더 설정 char auth_header[ 256 ]; snprintf (auth_header, sizeof (auth_header), "api-key: %s" , api_key); headers = curl_slist_append(headers, "accept: application/json" ); headers = curl_slist_append(headers, "content-type: application/json" ); headers = curl_slist_append(headers, auth_header); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); // POST 데이터 설정 curl_easy_setopt(curl, CURLOPT_POSTFIELDS, json_payload); // API 호출 실행 res = curl_easy_perform(curl); // 에러 처리 if (res != CURLE_OK) { fprintf ( stderr , "curl_easy_perform() failed: %s\n" , curl_easy_strerror(res)); } else { printf ( "\nBrevo 메일 발송 성공.\n" ); } // 메모리 해제 curl_slist_free_all(headers); curl_easy_cleanup(curl); } curl_global_cleanup(); return (res == CURLE_OK) ? 0 : 1 ; } int main ( void ) { // 본인의 Brevo API Key를 입력하세요. const char * my_api_key = "YOUR_BREVO_API_KEY" ; printf ( "Brevo 메일 전송을 시도합니다...\n" ); send_brevo_email(my_api_key); return 0 ; } 컴파일 명령어: gcc brevo_mail.c -o brevo_mail -lcurl 4. 발송 신뢰도 향상 (Domain Authentication) 메일이 스팸으로 분류되는 것을 막으려면 발신자 도메인의 DNS 설정에 Brevo가 제공하는 TXT 레코드(SPF, DKIM, DMARC)를 반드시 추가하여 도메인 인증을 마쳐야 합니다.