mailcap
— Mailcap 파일 처리¶
소스 코드: Lib/mailcap.py
버전 3.11부터 폐지: The mailcap
module is deprecated
(see PEP 594 for details).
The mimetypes
module provides an alternative.
Mailcap 파일은 메일 리더와 웹 브라우저와 같은 MIME 인식 응용 프로그램이 MIME 형식의 파일에 따라 반응하는 방식을 구성하는 데 사용됩니다. (“mailcap” 이라는 이름은 “mail capability” 라는 구문에서 왔습니다.) 예를 들어, mailcap 파일에는 video/mpeg; xmpeg %s
와 같은 줄이 있을 수 있습니다. 그러면, 사용자가 MIME 유형이 video/mpeg 인 전자 메일 메시지 또는 웹 문서를 만나면, %s
가 파일명(대개 임시 파일에 속한 파일)으로 치환되고 xmpeg 프로그램을 자동으로 시작하여 파일을 볼 수 있습니다.
mailcap 형식은 RFC 1524, “A User Agent Configuration Mechanism For Multimedia Mail Format Information”에 설명되어 있지만, 인터넷 표준은 아닙니다. 그러나, mailcap 파일은 대부분 유닉스 시스템에서 지원됩니다.
-
mailcap.
findmatch
(caps, MIMEtype, key='view', filename='/dev/null', plist=[])¶ 2-튜플을 반환합니다; 첫 번째 요소는 실행될 명령 줄(
os.system()
에 전달될 수 있음)을 포함하는 문자열이고, 두 번째 요소는 지정된 MIME 유형에 대한 mailcap 항목입니다. 일치하는 MIME 유형을 찾을 수 없으면(None, None)
이 반환됩니다.key는 원하는 이름인데, 수행할 활동의 유형을 나타냅니다; 가장 흔히 MIME 형식의 데이터 본문을 보고만 싶으므로 기본값은 ‘view’ 입니다. 주어진 MIME 유형의 새 본문을 만들거나 기존 본문 데이터를 변경하려고 할 때, 다른 가능한 값으로 ‘compose’ 이나 ‘edit’ 가 있습니다. 이 필드의 전체 목록은 RFC 1524를 참조하십시오.
filename은 명령 줄에서
%s
에 치환될 파일명입니다. 기본값은'/dev/null'
이지만, 거의 확실하게 원하는 것이 아닐 것이기 때문에, 보통 파일명을 지정하여 이를 대체합니다.plist는 이름있는 매개 변수를 포함하는 리스트일 수 있습니다; 기본값은 단순히 빈 리스트입니다. 리스트의 각 항목은 매개 변수 이름, 등호(
'='
) 및 매개 변수의 값이 포함된 문자열이어야 합니다. Mailcap 항목은%{foo}
와 같은 이름있는 매개 변수를 포함할 수 있는데, ‘foo’ 라는 이름의 매개 변수의 값으로 치환됩니다. 예를 들어, 명령 줄showpartial %{id} %{number} %{total}
이 mailcap 파일에 있고, plist가['id=1', 'number=2', 'total=3']
로 설정되었으면, 결과 명령 줄은'showpartial 1 2 3'
가 됩니다.mailcap 파일에서, “test” 필드를 선택적으로 지정하여 mailcap 줄이 적용되는지를 판단하기 위해 일부 외부 조건(가령 기계 아키텍처나 사용 중인 윈도우 시스템)을 검사할 수 있습니다.
findmatch()
는 자동으로 그러한 조건을 검사하고 검사가 실패하면 항목을 건너뜁니다.버전 3.9.16에서 변경: To prevent security issues with shell metacharacters (symbols that have special effects in a shell command line),
findmatch
will refuse to inject ASCII characters other than alphanumerics and@+=:,./-_
into the returned command line.If a disallowed character appears in filename,
findmatch
will always return(None, None)
as if no entry was found. If such a character appears elsewhere (a value in plist or in MIMEtype),findmatch
will ignore all mailcap entries which use that value. Awarning
will be raised in either case.
-
mailcap.
getcaps
()¶ MIME 유형을 mailcap 파일 항목 리스트에 매핑하는 딕셔너리를 반환합니다. 이 딕셔너리는
findmatch()
함수에 전달되어야 합니다. 항목은 딕셔너리의 리스트로 저장되지만, 이 표현의 세부 사항을 알 필요는 없습니다.이 정보는 시스템에서 발견된 모든 mailcap 파일에서 파생됩니다. 사용자의 mailcap 파일
$HOME/.mailcap
의 설정은 시스템 mailcap 파일/etc/mailcap
,/usr/etc/mailcap
및/usr/local/etc/mailcap
의 설정보다 우선합니다.
사용 예:
>>> import mailcap
>>> d = mailcap.getcaps()
>>> mailcap.findmatch(d, 'video/mpeg', filename='tmp1223')
('xmpeg tmp1223', {'view': 'xmpeg %s'})