프로젝트 소개
sendsmtp는 외부 의존성이 전혀 없는 순수 Python으로 구현된 소형 명령줄 SMTP 클라이언트입니다. UTF-8 text/plain 메일 메시지를 작성하여 SMTP 서버에 전달하므로, 스크립트 알림, 빌드 보고서, 또는 쉘에서 명령어 출력을 이메일로 파이핑하는 용도로 유용합니다.
설치 및 요구 사항
이 패키지는 pip(python3 -m pip install --user --upgrade sendsmtp)를 통해 설치하며, Python 3.11 이상이 필요합니다.
기본 사용법
이 명령어는 HOST(SMTP 서버의 호스트 이름 또는 IP), FROM(SMTP 엔벨로프 송신자와 From 헤더 모두로 사용됨), TO(단일 주소 또는 콤마 주변에 공백이 없는 콤마로 구분된 여러 주소)의 세 가지 위치 인자를 받습니다. 전형적인 실행 방식은 -m으로 본문을 인라인으로 전달하고 -s로 제목을 지정하며, 서버가 메시지를 수락하면 성공을 보고합니다.
메시지 본문 소스
본문은 세 가지 경로로 제공될 수 있습니다. -m/--message 옵션은 인라인으로 본문을 제공합니다. -i/--input 옵션은 파일 경로에서 본문을 읽어오며 --message보다 우선합니다; 해당 경로가 존재하는 파일이 아니면 이 옵션은 무시되고 본문은 --message 또는 표준 입력(stdin)으로 대체됩니다. 두 옵션 모두 주어지지 않으면, 본문은 표준 입력에서 읽어옵니다. 파이프된 입력은 EOF까지 읽히며, 대화형 터미널은 EOF만 포함된 줄이 나올 때까지 줄을 읽는 프롬프트를 트리거합니다.
제목 처리
--subject/-s는 제목을 명시적으로 설정합니다. 이 옵션이 생략되고 본문이 Subject: 줄로 시작하는 경우, 해당 줄은 본문에서 제거되고 대신 제목으로 사용됩니다.
연결 보안 및 포트
이 클라이언트는 세 가지 모드를 지원합니다. 일반 SMTP는 기본적으로 포트 25를 사용합니다. --starttls는 일반 텍스트로 연결한 후 STARTTLS 확장을 사용하여 연결을 업그레이드하며, 기본적으로 포트 587을 사용합니다. -t/--tls는 첫 바이트부터 암시적 TLS(SMTPS)를 사용하며, 기본적으로 포트 465를 사용합니다. 두 TLS 옵션은 상호 배타적이며, -p/--port는 모든 모드에서 기본 포트를 재정의합니다.
인증
-u/--username은 SMTP AUTH를 활성화합니다. 이 옵션이 없으면 AUTH 시도가 이루어지지 않습니다. --password 없이 사용자 이름만 제공되면, 비밀번호가 에코 없이 대화형으로 프롬프트됩니다. 문서에서는 명령줄이 다른 프로세스에 노출될 수 있고 쉘 기록에 남기 때문에 이것이 더 바람직하다고 명시합니다. 인증 실패 시 실행이 중단되며 메시지는 전송되지 않습니다.
TO 이외의 수신자
-c/--cc는 CC 헤더에 표시되고 메시지를 받는 참조(CC) 수신자를 추가합니다. -b/--bcc는 메시지를 받지만 어떤 헤더에도 나열되지 않는 숨은 참조(BCC) 수신자를 추가합니다. 둘 다 콤마로 구분된 주소 목록을 허용합니다.
진단
-v/--verbose는 SMTP 대화를 표준 오류(stderr)에 출력하고, 연결 및 인증 단계를 보고하며, 메시지가 전달된 주소 목록을 나열하고, 실패 시 한 줄짜리 오류 대신 전체 스택 추적을 보여줍니다. 이 옵션이 없으면 실패 시 한 줄의 오류 메시지만 생성됩니다.
메시지 헤더 및 종료 코드
생성된 메시지에는 From, To, Subject, CC(--cc 사용 시에만), 그리고 X-Mailer: sendsmtp 헤더가 포함됩니다. 종료 코드 0은 서버가 모든 수신자에 대해 메시지를 수락했음을 의미하고, 1은 오류 또는 최소한의 거부된 수신자가 있음을 나타내며, 130은 Ctrl-C에 의한 인터럽트를 신호합니다.
라이선스
이 프로젝트는 MIT 라이선스 하에 배포됩니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.