1
0
forked from migadu/mailex
mailex/lib/mailex/attachment.ex
2015-11-25 17:10:43 +01:00

695 lines
26 KiB
Elixir

defmodule Mailex.Attachment do
defstruct filename: nil, type: nil, data: nil
@mime_types [
{ ".3dm", "x-world", "x-3dmf" },
{ ".3dmf", "x-world", "x-3dmf" },
{ ".a", "application", "octet-stream" },
{ ".aab", "application", "x-authorware-bin" },
{ ".aam", "application", "x-authorware-map" },
{ ".aas", "application", "x-authorware-seg" },
{ ".abc", "text", "vnd.abc" },
{ ".acgi", "text", "html" },
{ ".afl", "video", "animaflex" },
{ ".ai", "application", "postscript" },
{ ".aif", "audio", "aiff" },
{ ".aif", "audio", "x-aiff" },
{ ".aifc", "audio", "aiff" },
{ ".aifc", "audio", "x-aiff" },
{ ".aiff", "audio", "aiff" },
{ ".aiff", "audio", "x-aiff" },
{ ".aim", "application", "x-aim" },
{ ".aip", "text", "x-audiosoft-intra" },
{ ".ani", "application", "x-navi-animation" },
{ ".aos", "application", "x-nokia-9000-communicator-add-on-software" },
{ ".aps", "application", "mime" },
{ ".arc", "application", "octet-stream" },
{ ".arj", "application", "arj" },
{ ".arj", "application", "octet-stream" },
{ ".art", "image", "x-jg" },
{ ".asf", "video", "x-ms-asf" },
{ ".asm", "text", "x-asm" },
{ ".asp", "text", "asp" },
{ ".asx", "application", "x-mplayer2" },
{ ".asx", "video", "x-ms-asf" },
{ ".asx", "video", "x-ms-asf-plugin" },
{ ".au", "audio", "basic" },
{ ".au", "audio", "x-au" },
{ ".avi", "application", "x-troff-msvideo" },
{ ".avi", "video", "avi" },
{ ".avi", "video", "msvideo" },
{ ".avi", "video", "x-msvideo" },
{ ".avs", "video", "avs-video" },
{ ".bcpio", "application", "x-bcpio" },
{ ".bin", "application", "mac-binary" },
{ ".bin", "application", "macbinary" },
{ ".bin", "application", "octet-stream" },
{ ".bin", "application", "x-binary" },
{ ".bin", "application", "x-macbinary" },
{ ".bm", "image", "bmp" },
{ ".bmp", "image", "bmp" },
{ ".bmp", "image", "x-windows-bmp" },
{ ".boo", "application", "book" },
{ ".book", "application", "book" },
{ ".boz", "application", "x-bzip2" },
{ ".bsh", "application", "x-bsh" },
{ ".bz", "application", "x-bzip" },
{ ".bz2", "application", "x-bzip2" },
{ ".c", "text", "plain" },
{ ".c", "text", "x-c" },
{ ".c++", "text", "plain" },
{ ".cat", "application", "vnd.ms-pki.seccat" },
{ ".cc", "text", "plain" },
{ ".cc", "text", "x-c" },
{ ".ccad", "application", "clariscad" },
{ ".cco", "application", "x-cocoa" },
{ ".cdf", "application", "cdf" },
{ ".cdf", "application", "x-cdf" },
{ ".cdf", "application", "x-netcdf" },
{ ".cer", "application", "pkix-cert" },
{ ".cer", "application", "x-x509-ca-cert" },
{ ".cha", "application", "x-chat" },
{ ".chat", "application", "x-chat" },
{ ".class", "application", "java" },
{ ".class", "application", "java-byte-code" },
{ ".class", "application", "x-java-class" },
{ ".com", "application", "octet-stream" },
{ ".com", "text", "plain" },
{ ".conf", "text", "plain" },
{ ".cpio", "application", "x-cpio" },
{ ".cpp", "text", "x-c" },
{ ".cpt", "application", "mac-compactpro" },
{ ".cpt", "application", "x-compactpro" },
{ ".cpt", "application", "x-cpt" },
{ ".crl", "application", "pkcs-crl" },
{ ".crl", "application", "pkix-crl" },
{ ".crt", "application", "pkix-cert" },
{ ".crt", "application", "x-x509-ca-cert" },
{ ".crt", "application", "x-x509-user-cert" },
{ ".csh", "application", "x-csh" },
{ ".csh", "text", "x-script.csh" },
{ ".css", "application", "x-pointplus" },
{ ".css", "text", "css" },
{ ".cxx", "text", "plain" },
{ ".dcr", "application", "x-director" },
{ ".deepv", "application", "x-deepv" },
{ ".def", "text", "plain" },
{ ".der", "application", "x-x509-ca-cert" },
{ ".dif", "video", "x-dv" },
{ ".dir", "application", "x-director" },
{ ".dl", "video", "dl" },
{ ".dl", "video", "x-dl" },
{ ".doc", "application", "msword" },
{ ".dot", "application", "msword" },
{ ".dp", "application", "commonground" },
{ ".drw", "application", "drafting" },
{ ".dump", "application", "octet-stream" },
{ ".dv", "video", "x-dv" },
{ ".dvi", "application", "x-dvi" },
{ ".dwf", "drawing", "x-dwf, (old)" },
{ ".dwf", "model", "vnd.dwf" },
{ ".dwg", "application", "acad" },
{ ".dwg", "image", "vnd.dwg" },
{ ".dwg", "image", "x-dwg" },
{ ".dxf", "application", "dxf" },
{ ".dxf", "image", "vnd.dwg" },
{ ".dxf", "image", "x-dwg" },
{ ".dxr", "application", "x-director" },
{ ".el", "text", "x-script.elisp" },
{ ".elc", "application", "x-bytecode.elisp, (compiled, elisp)" },
{ ".elc", "application", "x-elc" },
{ ".env", "application", "x-envoy" },
{ ".eps", "application", "postscript" },
{ ".es", "application", "x-esrehber" },
{ ".etx", "text", "x-setext" },
{ ".evy", "application", "envoy" },
{ ".evy", "application", "x-envoy" },
{ ".exe", "application", "octet-stream" },
{ ".f", "text", "plain" },
{ ".f", "text", "x-fortran" },
{ ".f77", "text", "x-fortran" },
{ ".f90", "text", "plain" },
{ ".f90", "text", "x-fortran" },
{ ".fdf", "application", "vnd.fdf" },
{ ".fif", "application", "fractals" },
{ ".fif", "image", "fif" },
{ ".fli", "video", "fli" },
{ ".fli", "video", "x-fli" },
{ ".flo", "image", "florian" },
{ ".flx", "text", "vnd.fmi.flexstor" },
{ ".fmf", "video", "x-atomic3d-feature" },
{ ".for", "text", "plain" },
{ ".for", "text", "x-fortran" },
{ ".fpx", "image", "vnd.fpx" },
{ ".fpx", "image", "vnd.net-fpx" },
{ ".frl", "application", "freeloader" },
{ ".funk", "audio", "make" },
{ ".g", "text", "plain" },
{ ".g3", "image", "g3fax" },
{ ".gif", "image", "gif" },
{ ".gl", "video", "gl" },
{ ".gl", "video", "x-gl" },
{ ".gsd", "audio", "x-gsm" },
{ ".gsm", "audio", "x-gsm" },
{ ".gsp", "application", "x-gsp" },
{ ".gss", "application", "x-gss" },
{ ".gtar", "application", "x-gtar" },
{ ".gz", "application", "x-compressed" },
{ ".gz", "application", "x-gzip" },
{ ".gzip", "application", "x-gzip" },
{ ".gzip", "multipart", "x-gzip" },
{ ".h", "text", "plain" },
{ ".h", "text", "x-h" },
{ ".hdf", "application", "x-hdf" },
{ ".help", "application", "x-helpfile" },
{ ".hgl", "application", "vnd.hp-hpgl" },
{ ".hh", "text", "plain" },
{ ".hh", "text", "x-h" },
{ ".hlb", "text", "x-script" },
{ ".hlp", "application", "hlp" },
{ ".hlp", "application", "x-helpfile" },
{ ".hlp", "application", "x-winhelp" },
{ ".hpg", "application", "vnd.hp-hpgl" },
{ ".hpgl", "application", "vnd.hp-hpgl" },
{ ".hqx", "application", "binhex" },
{ ".hqx", "application", "binhex4" },
{ ".hqx", "application", "mac-binhex" },
{ ".hqx", "application", "mac-binhex40" },
{ ".hqx", "application", "x-binhex40" },
{ ".hqx", "application", "x-mac-binhex40" },
{ ".hta", "application", "hta" },
{ ".htc", "text", "x-component" },
{ ".htm", "text", "html" },
{ ".html", "text", "html" },
{ ".htmls", "text", "html" },
{ ".htt", "text", "webviewhtml" },
{ ".htx", "text", "html" },
{ ".ice", "x-conference", "x-cooltalk" },
{ ".ico", "image", "x-icon" },
{ ".idc", "text", "plain" },
{ ".ief", "image", "ief" },
{ ".iefs", "image", "ief" },
{ ".iges", "application", "iges" },
{ ".iges", "model", "iges" },
{ ".igs", "application", "iges" },
{ ".igs", "model", "iges" },
{ ".ima", "application", "x-ima" },
{ ".imap", "application", "x-httpd-imap" },
{ ".inf", "application", "inf" },
{ ".ins", "application", "x-internett-signup" },
{ ".ip", "application", "x-ip2" },
{ ".isu", "video", "x-isvideo" },
{ ".it", "audio", "it" },
{ ".iv", "application", "x-inventor" },
{ ".ivr", "i-world", "i-vrml" },
{ ".ivy", "application", "x-livescreen" },
{ ".jam", "audio", "x-jam" },
{ ".jav", "text", "plain" },
{ ".jav", "text", "x-java-source" },
{ ".java", "text", "plain" },
{ ".java", "text", "x-java-source" },
{ ".jcm", "application", "x-java-commerce" },
{ ".jfif", "image", "jpeg" },
{ ".jfif", "image", "pjpeg" },
{ ".jfif-tbnl", "image", "jpeg" },
{ ".jpe", "image", "jpeg" },
{ ".jpe", "image", "pjpeg" },
{ ".jpeg", "image", "jpeg" },
{ ".jpeg", "image", "pjpeg" },
{ ".jpg", "image", "jpeg" },
{ ".jpg", "image", "pjpeg" },
{ ".jps", "image", "x-jps" },
{ ".js", "application", "x-javascript" },
{ ".js", "application", "javascript" },
{ ".js", "application", "ecmascript" },
{ ".js", "text", "javascript" },
{ ".js", "text", "ecmascript" },
{ ".jut", "image", "jutvision" },
{ ".kar", "audio", "midi" },
{ ".kar", "music", "x-karaoke" },
{ ".ksh", "application", "x-ksh" },
{ ".ksh", "text", "x-script.ksh" },
{ ".la", "audio", "nspaudio" },
{ ".la", "audio", "x-nspaudio" },
{ ".lam", "audio", "x-liveaudio" },
{ ".latex", "application", "x-latex" },
{ ".lha", "application", "lha" },
{ ".lha", "application", "octet-stream" },
{ ".lha", "application", "x-lha" },
{ ".lhx", "application", "octet-stream" },
{ ".list", "text", "plain" },
{ ".lma", "audio", "nspaudio" },
{ ".lma", "audio", "x-nspaudio" },
{ ".log", "text", "plain" },
{ ".lsp", "application", "x-lisp" },
{ ".lsp", "text", "x-script.lisp" },
{ ".lst", "text", "plain" },
{ ".lsx", "text", "x-la-asf" },
{ ".ltx", "application", "x-latex" },
{ ".lzh", "application", "octet-stream" },
{ ".lzh", "application", "x-lzh" },
{ ".lzx", "application", "lzx" },
{ ".lzx", "application", "octet-stream" },
{ ".lzx", "application", "x-lzx" },
{ ".m", "text", "plain" },
{ ".m", "text", "x-m" },
{ ".m1v", "video", "mpeg" },
{ ".m2a", "audio", "mpeg" },
{ ".m2v", "video", "mpeg" },
{ ".m3u", "audio", "x-mpequrl" },
{ ".man", "application", "x-troff-man" },
{ ".map", "application", "x-navimap" },
{ ".mar", "text", "plain" },
{ ".mbd", "application", "mbedlet" },
{ ".mc$", "application", "x-magic-cap-package-1.0" },
{ ".mcd", "application", "mcad" },
{ ".mcd", "application", "x-mathcad" },
{ ".mcf", "image", "vasa" },
{ ".mcf", "text", "mcf" },
{ ".mcp", "application", "netmc" },
{ ".me", "application", "x-troff-me" },
{ ".mht", "message", "rfc822" },
{ ".mhtml", "message", "rfc822" },
{ ".mid", "application", "x-midi" },
{ ".mid", "audio", "midi" },
{ ".mid", "audio", "x-mid" },
{ ".mid", "audio", "x-midi" },
{ ".mid", "music", "crescendo" },
{ ".mid", "x-music", "x-midi" },
{ ".midi", "application", "x-midi" },
{ ".midi", "audio", "midi" },
{ ".midi", "audio", "x-mid" },
{ ".midi", "audio", "x-midi" },
{ ".midi", "music", "crescendo" },
{ ".midi", "x-music", "x-midi" },
{ ".mif", "application", "x-frame" },
{ ".mif", "application", "x-mif" },
{ ".mime", "message", "rfc822" },
{ ".mime", "www", "mime" },
{ ".mjf", "audio", "x-vnd.audioexplosion.mjuicemediafile" },
{ ".mjpg", "video", "x-motion-jpeg" },
{ ".mm", "application", "base64" },
{ ".mm", "application", "x-meme" },
{ ".mme", "application", "base64" },
{ ".mod", "audio", "mod" },
{ ".mod", "audio", "x-mod" },
{ ".moov", "video", "quicktime" },
{ ".mov", "video", "quicktime" },
{ ".movie", "video", "x-sgi-movie" },
{ ".mobileconfig", "application", "x-apple-aspen-config" },
{ ".mp2", "audio", "mpeg" },
{ ".mp2", "audio", "x-mpeg" },
{ ".mp2", "video", "mpeg" },
{ ".mp2", "video", "x-mpeg" },
{ ".mp2", "video", "x-mpeq2a" },
{ ".mp3", "audio", "mpeg3" },
{ ".mp3", "audio", "x-mpeg-3" },
{ ".mp3", "video", "mpeg" },
{ ".mp3", "video", "x-mpeg" },
{ ".mpa", "audio", "mpeg" },
{ ".mpa", "video", "mpeg" },
{ ".mpc", "application", "x-project" },
{ ".mpe", "video", "mpeg" },
{ ".mpeg", "video", "mpeg" },
{ ".mpg", "audio", "mpeg" },
{ ".mpg", "video", "mpeg" },
{ ".mpga", "audio", "mpeg" },
{ ".mpp", "application", "vnd.ms-project" },
{ ".mpt", "application", "x-project" },
{ ".mpv", "application", "x-project" },
{ ".mpx", "application", "x-project" },
{ ".mrc", "application", "marc" },
{ ".ms", "application", "x-troff-ms" },
{ ".mv", "video", "x-sgi-movie" },
{ ".my", "audio", "make" },
{ ".mzz", "application", "x-vnd.audioexplosion.mzz" },
{ ".nap", "image", "naplps" },
{ ".naplps", "image", "naplps" },
{ ".nc", "application", "x-netcdf" },
{ ".ncm", "application", "vnd.nokia.configuration-message" },
{ ".nif", "image", "x-niff" },
{ ".niff", "image", "x-niff" },
{ ".nix", "application", "x-mix-transfer" },
{ ".nsc", "application", "x-conference" },
{ ".nvd", "application", "x-navidoc" },
{ ".o", "application", "octet-stream" },
{ ".oda", "application", "oda" },
{ ".omc", "application", "x-omc" },
{ ".omcd", "application", "x-omcdatamaker" },
{ ".omcr", "application", "x-omcregerator" },
{ ".p", "text", "x-pascal" },
{ ".p10", "application", "pkcs10" },
{ ".p10", "application", "x-pkcs10" },
{ ".p12", "application", "pkcs-12" },
{ ".p12", "application", "x-pkcs12" },
{ ".p7a", "application", "x-pkcs7-signature" },
{ ".p7c", "application", "pkcs7-mime" },
{ ".p7c", "application", "x-pkcs7-mime" },
{ ".p7m", "application", "pkcs7-mime" },
{ ".p7m", "application", "x-pkcs7-mime" },
{ ".p7r", "application", "x-pkcs7-certreqresp" },
{ ".p7s", "application", "pkcs7-signature" },
{ ".part", "application", "pro_eng" },
{ ".pas", "text", "pascal" },
{ ".pbm", "image", "x-portable-bitmap" },
{ ".pcl", "application", "vnd.hp-pcl" },
{ ".pcl", "application", "x-pcl" },
{ ".pct", "image", "x-pict" },
{ ".pcx", "image", "x-pcx" },
{ ".pdb", "chemical", "x-pdb" },
{ ".pdf", "application", "pdf" },
{ ".pfunk", "audio", "make" },
{ ".pfunk", "audio", "make.my.funk" },
{ ".pgm", "image", "x-portable-graymap" },
{ ".pgm", "image", "x-portable-greymap" },
{ ".pic", "image", "pict" },
{ ".pict", "image", "pict" },
{ ".pkg", "application", "x-newton-compatible-pkg" },
{ ".pko", "application", "vnd.ms-pki.pko" },
{ ".pl", "text", "plain" },
{ ".pl", "text", "x-script.perl" },
{ ".plx", "application", "x-pixclscript" },
{ ".pm", "image", "x-xpixmap" },
{ ".pm", "text", "x-script.perl-module" },
{ ".pm4", "application", "x-pagemaker" },
{ ".pm5", "application", "x-pagemaker" },
{ ".png", "image", "png" },
{ ".pnm", "application", "x-portable-anymap" },
{ ".pnm", "image", "x-portable-anymap" },
{ ".pot", "application", "mspowerpoint" },
{ ".pot", "application", "vnd.ms-powerpoint" },
{ ".pov", "model", "x-pov" },
{ ".ppa", "application", "vnd.ms-powerpoint" },
{ ".ppm", "image", "x-portable-pixmap" },
{ ".pps", "application", "mspowerpoint" },
{ ".pps", "application", "vnd.ms-powerpoint" },
{ ".ppt", "application", "mspowerpoint" },
{ ".ppt", "application", "powerpoint" },
{ ".ppt", "application", "vnd.ms-powerpoint" },
{ ".ppt", "application", "x-mspowerpoint" },
{ ".ppz", "application", "mspowerpoint" },
{ ".pre", "application", "x-freelance" },
{ ".prt", "application", "pro_eng" },
{ ".ps", "application", "postscript" },
{ ".psd", "application", "octet-stream" },
{ ".pvu", "paleovu", "x-pv" },
{ ".pwz", "application", "vnd.ms-powerpoint" },
{ ".py", "text", "x-script.phyton" },
{ ".pyc", "applicaiton", "x-bytecode.python" },
{ ".qcp", "audio", "vnd.qcelp" },
{ ".qd3", "x-world", "x-3dmf" },
{ ".qd3d", "x-world", "x-3dmf" },
{ ".qif", "image", "x-quicktime" },
{ ".qt", "video", "quicktime" },
{ ".qtc", "video", "x-qtc" },
{ ".qti", "image", "x-quicktime" },
{ ".qtif", "image", "x-quicktime" },
{ ".ra", "audio", "x-pn-realaudio" },
{ ".ra", "audio", "x-pn-realaudio-plugin" },
{ ".ra", "audio", "x-realaudio" },
{ ".ram", "audio", "x-pn-realaudio" },
{ ".ras", "application", "x-cmu-raster" },
{ ".ras", "image", "cmu-raster" },
{ ".ras", "image", "x-cmu-raster" },
{ ".rast", "image", "cmu-raster" },
{ ".rexx", "text", "x-script.rexx" },
{ ".rf", "image", "vnd.rn-realflash" },
{ ".rgb", "image", "x-rgb" },
{ ".rm", "application", "vnd.rn-realmedia" },
{ ".rm", "audio", "x-pn-realaudio" },
{ ".rmi", "audio", "mid" },
{ ".rmm", "audio", "x-pn-realaudio" },
{ ".rmp", "audio", "x-pn-realaudio" },
{ ".rmp", "audio", "x-pn-realaudio-plugin" },
{ ".rng", "application", "ringing-tones" },
{ ".rng", "application", "vnd.nokia.ringing-tone" },
{ ".rnx", "application", "vnd.rn-realplayer" },
{ ".roff", "application", "x-troff" },
{ ".rp", "image", "vnd.rn-realpix" },
{ ".rpm", "audio", "x-pn-realaudio-plugin" },
{ ".rt", "text", "richtext" },
{ ".rt", "text", "vnd.rn-realtext" },
{ ".rtf", "application", "rtf" },
{ ".rtf", "application", "x-rtf" },
{ ".rtf", "text", "richtext" },
{ ".rtx", "application", "rtf" },
{ ".rtx", "text", "richtext" },
{ ".rv", "video", "vnd.rn-realvideo" },
{ ".s", "text", "x-asm" },
{ ".s3m", "audio", "s3m" },
{ ".saveme", "application", "octet-stream" },
{ ".sbk", "application", "x-tbook" },
{ ".scm", "application", "x-lotusscreencam" },
{ ".scm", "text", "x-script.guile" },
{ ".scm", "text", "x-script.scheme" },
{ ".scm", "video", "x-scm" },
{ ".sdml", "text", "plain" },
{ ".sdp", "application", "sdp" },
{ ".sdp", "application", "x-sdp" },
{ ".sdr", "application", "sounder" },
{ ".sea", "application", "sea" },
{ ".sea", "application", "x-sea" },
{ ".set", "application", "set" },
{ ".sgm", "text", "sgml" },
{ ".sgm", "text", "x-sgml" },
{ ".sgml", "text", "sgml" },
{ ".sgml", "text", "x-sgml" },
{ ".sh", "application", "x-bsh" },
{ ".sh", "application", "x-sh" },
{ ".sh", "application", "x-shar" },
{ ".sh", "text", "x-script.sh" },
{ ".shar", "application", "x-bsh" },
{ ".shar", "application", "x-shar" },
{ ".shtml", "text", "html" },
{ ".shtml", "text", "x-server-parsed-html" },
{ ".sid", "audio", "x-psid" },
{ ".sit", "application", "x-sit" },
{ ".sit", "application", "x-stuffit" },
{ ".skd", "application", "x-koan" },
{ ".skm", "application", "x-koan" },
{ ".skp", "application", "x-koan" },
{ ".skt", "application", "x-koan" },
{ ".sl", "application", "x-seelogo" },
{ ".smi", "application", "smil" },
{ ".smil", "application", "smil" },
{ ".snd", "audio", "basic" },
{ ".snd", "audio", "x-adpcm" },
{ ".sol", "application", "solids" },
{ ".spc", "application", "x-pkcs7-certificates" },
{ ".spc", "text", "x-speech" },
{ ".spl", "application", "futuresplash" },
{ ".spr", "application", "x-sprite" },
{ ".sprite", "application", "x-sprite" },
{ ".src", "application", "x-wais-source" },
{ ".ssi", "text", "x-server-parsed-html" },
{ ".ssm", "application", "streamingmedia" },
{ ".sst", "application", "vnd.ms-pki.certstore" },
{ ".step", "application", "step" },
{ ".stl", "application", "sla" },
{ ".stl", "application", "vnd.ms-pki.stl" },
{ ".stl", "application", "x-navistyle" },
{ ".stp", "application", "step" },
{ ".sv4cpio", "application", "x-sv4cpio" },
{ ".sv4crc", "application", "x-sv4crc" },
{ ".svf", "image", "vnd.dwg" },
{ ".svf", "image", "x-dwg" },
{ ".svr", "application", "x-world" },
{ ".svr", "x-world", "x-svr" },
{ ".swf", "application", "x-shockwave-flash" },
{ ".t", "application", "x-troff" },
{ ".talk", "text", "x-speech" },
{ ".tar", "application", "x-tar" },
{ ".tbk", "application", "toolbook" },
{ ".tbk", "application", "x-tbook" },
{ ".tcl", "application", "x-tcl" },
{ ".tcl", "text", "x-script.tcl" },
{ ".tcsh", "text", "x-script.tcsh" },
{ ".tex", "application", "x-tex" },
{ ".texi", "application", "x-texinfo" },
{ ".texinfo", "application", "x-texinfo" },
{ ".text", "application", "plain" },
{ ".text", "text", "plain" },
{ ".tgz", "application", "gnutar" },
{ ".tgz", "application", "x-compressed" },
{ ".tif", "image", "tiff" },
{ ".tif", "image", "x-tiff" },
{ ".tiff", "image", "tiff" },
{ ".tiff", "image", "x-tiff" },
{ ".tr", "application", "x-troff" },
{ ".tsi", "audio", "tsp-audio" },
{ ".tsp", "application", "dsptype" },
{ ".tsp", "audio", "tsplayer" },
{ ".tsv", "text", "tab-separated-values" },
{ ".turbot", "image", "florian" },
{ ".txt", "text", "plain" },
{ ".uil", "text", "x-uil" },
{ ".uni", "text", "uri-list" },
{ ".unis", "text", "uri-list" },
{ ".unv", "application", "i-deas" },
{ ".uri", "text", "uri-list" },
{ ".uris", "text", "uri-list" },
{ ".ustar", "application", "x-ustar" },
{ ".ustar", "multipart", "x-ustar" },
{ ".uu", "application", "octet-stream" },
{ ".uu", "text", "x-uuencode" },
{ ".uue", "text", "x-uuencode" },
{ ".vcd", "application", "x-cdlink" },
{ ".vcs", "text", "x-vcalendar" },
{ ".vda", "application", "vda" },
{ ".vdo", "video", "vdo" },
{ ".vew", "application", "groupwise" },
{ ".viv", "video", "vivo" },
{ ".viv", "video", "vnd.vivo" },
{ ".vivo", "video", "vivo" },
{ ".vivo", "video", "vnd.vivo" },
{ ".vmd", "application", "vocaltec-media-desc" },
{ ".vmf", "application", "vocaltec-media-file" },
{ ".voc", "audio", "voc" },
{ ".voc", "audio", "x-voc" },
{ ".vos", "video", "vosaic" },
{ ".vox", "audio", "voxware" },
{ ".vqe", "audio", "x-twinvq-plugin" },
{ ".vqf", "audio", "x-twinvq" },
{ ".vql", "audio", "x-twinvq-plugin" },
{ ".vrml", "application", "x-vrml" },
{ ".vrml", "model", "vrml" },
{ ".vrml", "x-world", "x-vrml" },
{ ".vrt", "x-world", "x-vrt" },
{ ".vsd", "application", "x-visio" },
{ ".vst", "application", "x-visio" },
{ ".vsw", "application", "x-visio" },
{ ".w60", "application", "wordperfect6.0" },
{ ".w61", "application", "wordperfect6.1" },
{ ".w6w", "application", "msword" },
{ ".wav", "audio", "wav" },
{ ".wav", "audio", "x-wav" },
{ ".wb1", "application", "x-qpro" },
{ ".wbmp", "image", "vnd.wap.wbmp" },
{ ".web", "application", "vnd.xara" },
{ ".wiz", "application", "msword" },
{ ".wk1", "application", "x-123" },
{ ".wmf", "windows", "metafile" },
{ ".wml", "text", "vnd.wap.wml" },
{ ".wmlc", "application", "vnd.wap.wmlc" },
{ ".wmls", "text", "vnd.wap.wmlscript" },
{ ".wmlsc", "application", "vnd.wap.wmlscriptc" },
{ ".word", "application", "msword" },
{ ".wp", "application", "wordperfect" },
{ ".wp5", "application", "wordperfect" },
{ ".wp5", "application", "wordperfect6.0" },
{ ".wp6", "application", "wordperfect" },
{ ".wpd", "application", "wordperfect" },
{ ".wpd", "application", "x-wpwin" },
{ ".wq1", "application", "x-lotus" },
{ ".wri", "application", "mswrite" },
{ ".wri", "application", "x-wri" },
{ ".wrl", "application", "x-world" },
{ ".wrl", "model", "vrml" },
{ ".wrl", "x-world", "x-vrml" },
{ ".wrz", "model", "vrml" },
{ ".wrz", "x-world", "x-vrml" },
{ ".wsc", "text", "scriplet" },
{ ".wsrc", "application", "x-wais-source" },
{ ".wtk", "application", "x-wintalk" },
{ ".xbm", "image", "x-xbitmap" },
{ ".xbm", "image", "x-xbm" },
{ ".xbm", "image", "xbm" },
{ ".xdr", "video", "x-amt-demorun" },
{ ".xgz", "xgl", "drawing" },
{ ".xif", "image", "vnd.xiff" },
{ ".xl", "application", "excel" },
{ ".xla", "application", "excel" },
{ ".xla", "application", "x-excel" },
{ ".xla", "application", "x-msexcel" },
{ ".xlb", "application", "excel" },
{ ".xlb", "application", "vnd.ms-excel" },
{ ".xlb", "application", "x-excel" },
{ ".xlc", "application", "excel" },
{ ".xlc", "application", "vnd.ms-excel" },
{ ".xlc", "application", "x-excel" },
{ ".xld", "application", "excel" },
{ ".xld", "application", "x-excel" },
{ ".xlk", "application", "excel" },
{ ".xlk", "application", "x-excel" },
{ ".xll", "application", "excel" },
{ ".xll", "application", "vnd.ms-excel" },
{ ".xll", "application", "x-excel" },
{ ".xlm", "application", "excel" },
{ ".xlm", "application", "vnd.ms-excel" },
{ ".xlm", "application", "x-excel" },
{ ".xls", "application", "excel" },
{ ".xls", "application", "vnd.ms-excel" },
{ ".xls", "application", "x-excel" },
{ ".xls", "application", "x-msexcel" },
{ ".xlt", "application", "excel" },
{ ".xlt", "application", "x-excel" },
{ ".xlv", "application", "excel" },
{ ".xlv", "application", "x-excel" },
{ ".xlw", "application", "excel" },
{ ".xlw", "application", "vnd.ms-excel" },
{ ".xlw", "application", "x-excel" },
{ ".xlw", "application", "x-msexcel" },
{ ".xm", "audio", "xm" },
{ ".xml", "application", "xml" },
{ ".xml", "text", "xml" },
{ ".xmz", "xgl", "movie" },
{ ".xpix", "application", "x-vnd.ls-xpix" },
{ ".xpm", "image", "x-xpixmap" },
{ ".xpm", "image", "xpm" },
{ ".x-png", "image", "png" },
{ ".xsr", "video", "x-amt-showrun" },
{ ".xwd", "image", "x-xwd" },
{ ".xwd", "image", "x-xwindowdump" },
{ ".xyz", "chemical", "x-pdb" },
{ ".z", "application", "x-compress" },
{ ".z", "application", "x-compressed" },
{ ".zip", "application", "x-compressed" },
{ ".zip", "application", "x-zip-compressed" },
{ ".zip", "application", "zip" },
{ ".zip", "multipart", "x-zip" },
{ ".zoo", "application", "octet-stream" },
{ ".zsh", "text", "x-script.zsh" }
]
def inline(path, filename \\ nil) do
case path |> Path.expand |> File.read do
{ :ok, data } ->
{
:ok,
%Mailex.Attachment{
filename: filename || Path.basename(path),
type: guess_mime_type(path),
data: data
}
}
{ :error, message } -> { :error, message }
end
end
def inline!(path, filename \\ nil) do
case inline(path, filename) do
{ :ok, attachment } -> attachment
{ :error, message } -> throw message
end
end
def mime_types, do: @mime_types
def guess_mime_type(path) do
extension = Path.extname(path)
type = Enum.find mime_types, fn({ext, _, _}) -> ext == extension end
if (type) do
{ elem(type, 1), elem(type, 2) }
else
{ "application", "octet-stream" }
end
end
end