비슷한 인코딩으로 quoted-printable 이라는게 있는데,
문자열을 전송할때 1비트는 CRC등을 하기 위해 사용되는데,
8비트 중에서 7비트를 전송하는 문자로 사용하기 위해
8비트가 넘어가서 표현되어야 하는 문자의 경우에는 = 기호를 통해 인코딩을 시킴
이것의 장점은 인코딩된 상태에서도 원래 문서나 문장의 구조를 어느정도 파악이 가능하다는거임
단일 파일이나 문장을 인코딩하는게 아닌 다중 파일을 하나로 합쳐서 전송하고싶다면,
multipart를 고려할수 있음 멀티파트의 구조는 살짝 복잡해 보일수 있음
크게 헤더랑 내용으로 구분되는데, 헤더에 boundary로 사용할 문자열을 지정해줘야함
이 boundary는 내용 부분에서 각 파일과 파일의 구분선을 표현하기 위해 사용되고,
더이상 파일이 없음을 알릴 때도 boundary를 사용해서 내용을 끝내줌
이 boundary를 이용하게 되면 내용 결국 내부에 또다른 파일을 표현할수 있게 되는데,
각각의 파일마다 이름이랑 인코딩을 정의해줄 수 있음
보통 quoted-printable이나 base64를 사용하게 되는데,
base64를 사용하게 되면 이미지 파일일때는 데이터가 깨지는것을 방지할 수 있음
인코딩 된 후의 문자의 번위는 정해져있기 때문에,
boundary와 내용이 곂쳐서 오류가 발생할 확률이 줄어들기도 함
quoted-printable를 사용하게 되면 영어 문자가 많은 문서의 경우에는 오버헤드를 줄일 수 있음
왜냐하면 quoted-printable은 7비트를 초과하는 문자에 대해서 =로 인코딩이 되어 길이가 늘어나는데,
base64는 조건없이 모든 문자에 대해서 약 33%의 용량이 늘어나게 됨
이처럼 multipart를 이용하면 여러 파일과 여러 인코딩을 동시에 사용할 수 있음