AttachmentBase.cs 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598
  1. //
  2. // System.Net.Mail.AttachmentBase.cs
  3. //
  4. // Author:
  5. // John Luke ([email protected])
  6. //
  7. // Copyright (C) John Luke, 2005
  8. //
  9. //
  10. // Permission is hereby granted, free of charge, to any person obtaining
  11. // a copy of this software and associated documentation files (the
  12. // "Software"), to deal in the Software without restriction, including
  13. // without limitation the rights to use, copy, modify, merge, publish,
  14. // distribute, sublicense, and/or sell copies of the Software, and to
  15. // permit persons to whom the Software is furnished to do so, subject to
  16. // the following conditions:
  17. //
  18. // The above copyright notice and this permission notice shall be
  19. // included in all copies or substantial portions of the Software.
  20. //
  21. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  22. // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  23. // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  24. // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
  25. // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
  26. // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
  27. // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  28. //
  29. using System.IO;
  30. using System.Net.Mime;
  31. using System.Text;
  32. using System.Collections;
  33. namespace System.Net.Mail {
  34. public abstract class AttachmentBase : IDisposable
  35. {
  36. #region Fields
  37. string id;
  38. ContentType contentType = new ContentType ();
  39. Stream contentStream;
  40. TransferEncoding transferEncoding = TransferEncoding.Base64;
  41. #endregion // Fields
  42. #region Constructors
  43. protected AttachmentBase (Stream contentStream)
  44. {
  45. if (contentStream == null)
  46. throw new ArgumentNullException ();
  47. this.contentStream = contentStream;
  48. contentType.MediaType = MediaTypeNames.Application.Octet;
  49. contentType.CharSet = null;
  50. }
  51. protected AttachmentBase (Stream contentStream, ContentType contentType)
  52. {
  53. if (contentStream == null || contentType == null)
  54. throw new ArgumentNullException ();
  55. this.contentStream = contentStream;
  56. this.contentType = contentType;
  57. }
  58. protected AttachmentBase (Stream contentStream, string mediaType)
  59. {
  60. if (contentStream == null)
  61. throw new ArgumentNullException ();
  62. this.contentStream = contentStream;
  63. contentType.MediaType = mediaType;
  64. }
  65. protected AttachmentBase (string fileName)
  66. {
  67. if (fileName == null)
  68. throw new ArgumentNullException ();
  69. contentStream = File.OpenRead (fileName);
  70. contentType = new ContentType (MimeTypes.GetMimeType (fileName));
  71. }
  72. protected AttachmentBase (string fileName, ContentType contentType) {
  73. if (fileName == null)
  74. throw new ArgumentNullException ();
  75. contentStream = File.OpenRead (fileName);
  76. this.contentType = contentType;
  77. }
  78. protected AttachmentBase (string fileName, string mediaType)
  79. {
  80. if (fileName == null)
  81. throw new ArgumentNullException ();
  82. contentStream = File.OpenRead (fileName);
  83. contentType.MediaType = mediaType;
  84. }
  85. #endregion // Constructors
  86. #region Properties
  87. public string ContentId {
  88. get { return id; }
  89. set {
  90. if (value == null)
  91. throw new ArgumentNullException ();
  92. id = value;
  93. }
  94. }
  95. public Stream ContentStream {
  96. get { return contentStream; }
  97. }
  98. public ContentType ContentType {
  99. get { return contentType; }
  100. set { contentType = value; }
  101. }
  102. public TransferEncoding TransferEncoding {
  103. get { return transferEncoding; }
  104. set { transferEncoding = value; }
  105. }
  106. #endregion // Properties
  107. #region Methods
  108. public void Dispose ()
  109. {
  110. Dispose (true);
  111. //GC.SuppressFinalize (this);
  112. }
  113. protected virtual void Dispose (bool disposing)
  114. {
  115. if (disposing)
  116. contentStream.Close ();
  117. }
  118. #endregion // Methods
  119. private class MimeTypes
  120. {
  121. static Hashtable mimeTypes;
  122. static MimeTypes () {
  123. mimeTypes = new Hashtable (StringComparer.InvariantCultureIgnoreCase);
  124. mimeTypes.Add ("3dm", "x-world/x-3dmf");
  125. mimeTypes.Add ("3dmf", "x-world/x-3dmf");
  126. mimeTypes.Add ("aab", "application/x-authorware-bin");
  127. mimeTypes.Add ("aam", "application/x-authorware-map");
  128. mimeTypes.Add ("aas", "application/x-authorware-seg");
  129. mimeTypes.Add ("abc", "text/vnd.abc");
  130. mimeTypes.Add ("acgi", "text/html");
  131. mimeTypes.Add ("afl", "video/animaflex");
  132. mimeTypes.Add ("ai", "application/postscript");
  133. mimeTypes.Add ("aif", "audio/aiff");
  134. mimeTypes.Add ("aifc", "audio/aiff");
  135. mimeTypes.Add ("aiff", "audio/aiff");
  136. mimeTypes.Add ("aim", "application/x-aim");
  137. mimeTypes.Add ("aip", "text/x-audiosoft-intra");
  138. mimeTypes.Add ("ani", "application/x-navi-animation");
  139. mimeTypes.Add ("aos", "application/x-nokia-9000-communicator-add-on-software");
  140. mimeTypes.Add ("aps", "application/mime");
  141. mimeTypes.Add ("art", "image/x-jg");
  142. mimeTypes.Add ("asf", "video/x-ms-asf");
  143. mimeTypes.Add ("asm", "text/x-asm");
  144. mimeTypes.Add ("asp", "text/asp");
  145. mimeTypes.Add ("asx", "application/x-mplayer2");
  146. mimeTypes.Add ("au", "audio/x-au");
  147. mimeTypes.Add ("avi", "video/avi");
  148. mimeTypes.Add ("avs", "video/avs-video");
  149. mimeTypes.Add ("bcpio", "application/x-bcpio");
  150. mimeTypes.Add ("bm", "image/bmp");
  151. mimeTypes.Add ("bmp", "image/bmp");
  152. mimeTypes.Add ("boo", "application/book");
  153. mimeTypes.Add ("book", "application/book");
  154. mimeTypes.Add ("boz", "application/x-bzip2");
  155. mimeTypes.Add ("bsh", "application/x-bsh");
  156. mimeTypes.Add ("bz", "application/x-bzip");
  157. mimeTypes.Add ("bz2", "application/x-bzip2");
  158. mimeTypes.Add ("c", "text/plain");
  159. mimeTypes.Add ("c++", "text/plain");
  160. mimeTypes.Add ("cat", "application/vnd.ms-pki.seccat");
  161. mimeTypes.Add ("cc", "text/plain");
  162. mimeTypes.Add ("ccad", "application/clariscad");
  163. mimeTypes.Add ("cco", "application/x-cocoa");
  164. mimeTypes.Add ("cdf", "application/cdf");
  165. mimeTypes.Add ("cer", "application/pkix-cert");
  166. mimeTypes.Add ("cha", "application/x-chat");
  167. mimeTypes.Add ("chat", "application/x-chat");
  168. mimeTypes.Add ("class", "application/java");
  169. mimeTypes.Add ("conf", "text/plain");
  170. mimeTypes.Add ("cpio", "application/x-cpio");
  171. mimeTypes.Add ("cpp", "text/plain");
  172. mimeTypes.Add ("cpt", "application/x-cpt");
  173. mimeTypes.Add ("crl", "application/pkix-crl");
  174. mimeTypes.Add ("crt", "application/pkix-cert");
  175. mimeTypes.Add ("csh", "application/x-csh");
  176. mimeTypes.Add ("css", "text/css");
  177. mimeTypes.Add ("cxx", "text/plain");
  178. mimeTypes.Add ("dcr", "application/x-director");
  179. mimeTypes.Add ("deepv", "application/x-deepv");
  180. mimeTypes.Add ("def", "text/plain");
  181. mimeTypes.Add ("der", "application/x-x509-ca-cert");
  182. mimeTypes.Add ("dif", "video/x-dv");
  183. mimeTypes.Add ("dir", "application/x-director");
  184. mimeTypes.Add ("dl", "video/dl");
  185. mimeTypes.Add ("doc", "application/msword");
  186. mimeTypes.Add ("dot", "application/msword");
  187. mimeTypes.Add ("dp", "application/commonground");
  188. mimeTypes.Add ("drw", "application/drafting");
  189. mimeTypes.Add ("dv", "video/x-dv");
  190. mimeTypes.Add ("dvi", "application/x-dvi");
  191. mimeTypes.Add ("dwf", "drawing/x-dwf (old)");
  192. mimeTypes.Add ("dwg", "application/acad");
  193. mimeTypes.Add ("dxf", "application/dxf");
  194. mimeTypes.Add ("dxr", "application/x-director");
  195. mimeTypes.Add ("el", "text/x-script.elisp");
  196. mimeTypes.Add ("elc", "application/x-elc");
  197. mimeTypes.Add ("eps", "application/postscript");
  198. mimeTypes.Add ("es", "application/x-esrehber");
  199. mimeTypes.Add ("etx", "text/x-setext");
  200. mimeTypes.Add ("evy", "application/envoy");
  201. mimeTypes.Add ("f", "text/plain");
  202. mimeTypes.Add ("f77", "text/plain");
  203. mimeTypes.Add ("f90", "text/plain");
  204. mimeTypes.Add ("fdf", "application/vnd.fdf");
  205. mimeTypes.Add ("fif", "image/fif");
  206. mimeTypes.Add ("fli", "video/fli");
  207. mimeTypes.Add ("flo", "image/florian");
  208. mimeTypes.Add ("flx", "text/vnd.fmi.flexstor");
  209. mimeTypes.Add ("fmf", "video/x-atomic3d-feature");
  210. mimeTypes.Add ("for", "text/plain");
  211. mimeTypes.Add ("fpx", "image/vnd.fpx");
  212. mimeTypes.Add ("frl", "application/freeloader");
  213. mimeTypes.Add ("funk", "audio/make");
  214. mimeTypes.Add ("g", "text/plain");
  215. mimeTypes.Add ("g3", "image/g3fax");
  216. mimeTypes.Add ("gif", "image/gif");
  217. mimeTypes.Add ("gl", "video/gl");
  218. mimeTypes.Add ("gsd", "audio/x-gsm");
  219. mimeTypes.Add ("gsm", "audio/x-gsm");
  220. mimeTypes.Add ("gsp", "application/x-gsp");
  221. mimeTypes.Add ("gss", "application/x-gss");
  222. mimeTypes.Add ("gtar", "application/x-gtar");
  223. mimeTypes.Add ("gz", "application/x-gzip");
  224. mimeTypes.Add ("gzip", "application/x-gzip");
  225. mimeTypes.Add ("h", "text/plain");
  226. mimeTypes.Add ("hdf", "application/x-hdf");
  227. mimeTypes.Add ("help", "application/x-helpfile");
  228. mimeTypes.Add ("hgl", "application/vnd.hp-HPGL");
  229. mimeTypes.Add ("hh", "text/plain");
  230. mimeTypes.Add ("hlb", "text/x-script");
  231. mimeTypes.Add ("hlp", "application/x-helpfile");
  232. mimeTypes.Add ("hpg", "application/vnd.hp-HPGL");
  233. mimeTypes.Add ("hpgl", "application/vnd.hp-HPGL");
  234. mimeTypes.Add ("hqx", "application/binhex");
  235. mimeTypes.Add ("hta", "application/hta");
  236. mimeTypes.Add ("htc", "text/x-component");
  237. mimeTypes.Add ("htm", "text/html");
  238. mimeTypes.Add ("html", "text/html");
  239. mimeTypes.Add ("htmls", "text/html");
  240. mimeTypes.Add ("htt", "text/webviewhtml");
  241. mimeTypes.Add ("htx", "text/html");
  242. mimeTypes.Add ("ice", "x-conference/x-cooltalk");
  243. mimeTypes.Add ("ico", "image/x-icon");
  244. mimeTypes.Add ("idc", "text/plain");
  245. mimeTypes.Add ("ief", "image/ief");
  246. mimeTypes.Add ("iefs", "image/ief");
  247. mimeTypes.Add ("iges", "application/iges");
  248. mimeTypes.Add ("igs", "application/iges");
  249. mimeTypes.Add ("ima", "application/x-ima");
  250. mimeTypes.Add ("imap", "application/x-httpd-imap");
  251. mimeTypes.Add ("inf", "application/inf");
  252. mimeTypes.Add ("ins", "application/x-internett-signup");
  253. mimeTypes.Add ("ip", "application/x-ip2");
  254. mimeTypes.Add ("isu", "video/x-isvideo");
  255. mimeTypes.Add ("it", "audio/it");
  256. mimeTypes.Add ("iv", "application/x-inventor");
  257. mimeTypes.Add ("ivr", "i-world/i-vrml");
  258. mimeTypes.Add ("ivy", "application/x-livescreen");
  259. mimeTypes.Add ("jam", "audio/x-jam");
  260. mimeTypes.Add ("jav", "text/plain");
  261. mimeTypes.Add ("java", "text/plain");
  262. mimeTypes.Add ("jcm", "application/x-java-commerce");
  263. mimeTypes.Add ("jfif", "image/jpeg");
  264. mimeTypes.Add ("jfif-tbnl", "image/jpeg");
  265. mimeTypes.Add ("jpe", "image/jpeg");
  266. mimeTypes.Add ("jpeg", "image/jpeg");
  267. mimeTypes.Add ("jpg", "image/jpeg");
  268. mimeTypes.Add ("jps", "image/x-jps");
  269. mimeTypes.Add ("js", "application/x-javascript");
  270. mimeTypes.Add ("jut", "image/jutvision");
  271. mimeTypes.Add ("kar", "audio/midi");
  272. mimeTypes.Add ("ksh", "text/x-script.ksh");
  273. mimeTypes.Add ("la", "audio/nspaudio");
  274. mimeTypes.Add ("lam", "audio/x-liveaudio");
  275. mimeTypes.Add ("latex", "application/x-latex");
  276. mimeTypes.Add ("list", "text/plain");
  277. mimeTypes.Add ("lma", "audio/nspaudio");
  278. mimeTypes.Add ("log", "text/plain");
  279. mimeTypes.Add ("lsp", "application/x-lisp");
  280. mimeTypes.Add ("lst", "text/plain");
  281. mimeTypes.Add ("lsx", "text/x-la-asf");
  282. mimeTypes.Add ("ltx", "application/x-latex");
  283. mimeTypes.Add ("m", "text/plain");
  284. mimeTypes.Add ("m1v", "video/mpeg");
  285. mimeTypes.Add ("m2a", "audio/mpeg");
  286. mimeTypes.Add ("m2v", "video/mpeg");
  287. mimeTypes.Add ("m3u", "audio/x-mpequrl");
  288. mimeTypes.Add ("man", "application/x-troff-man");
  289. mimeTypes.Add ("map", "application/x-navimap");
  290. mimeTypes.Add ("mar", "text/plain");
  291. mimeTypes.Add ("mbd", "application/mbedlet");
  292. mimeTypes.Add ("mc$", "application/x-magic-cap-package-1.0");
  293. mimeTypes.Add ("mcd", "application/mcad");
  294. mimeTypes.Add ("mcf", "image/vasa");
  295. mimeTypes.Add ("mcp", "application/netmc");
  296. mimeTypes.Add ("me", "application/x-troff-me");
  297. mimeTypes.Add ("mht", "message/rfc822");
  298. mimeTypes.Add ("mhtml", "message/rfc822");
  299. mimeTypes.Add ("mid", "audio/midi");
  300. mimeTypes.Add ("midi", "audio/midi");
  301. mimeTypes.Add ("mif", "application/x-mif");
  302. mimeTypes.Add ("mime", "message/rfc822");
  303. mimeTypes.Add ("mjf", "audio/x-vnd.AudioExplosion.MjuiceMediaFile");
  304. mimeTypes.Add ("mjpg", "video/x-motion-jpeg");
  305. mimeTypes.Add ("mm", "application/base64");
  306. mimeTypes.Add ("mme", "application/base64");
  307. mimeTypes.Add ("mod", "audio/mod");
  308. mimeTypes.Add ("moov", "video/quicktime");
  309. mimeTypes.Add ("mov", "video/quicktime");
  310. mimeTypes.Add ("movie", "video/x-sgi-movie");
  311. mimeTypes.Add ("mp2", "video/mpeg");
  312. mimeTypes.Add ("mp3", "audio/mpeg3");
  313. mimeTypes.Add ("mpa", "audio/mpeg");
  314. mimeTypes.Add ("mpc", "application/x-project");
  315. mimeTypes.Add ("mpe", "video/mpeg");
  316. mimeTypes.Add ("mpeg", "video/mpeg");
  317. mimeTypes.Add ("mpg", "video/mpeg");
  318. mimeTypes.Add ("mpga", "audio/mpeg");
  319. mimeTypes.Add ("mpp", "application/vnd.ms-project");
  320. mimeTypes.Add ("mpt", "application/x-project");
  321. mimeTypes.Add ("mpv", "application/x-project");
  322. mimeTypes.Add ("mpx", "application/x-project");
  323. mimeTypes.Add ("mrc", "application/marc");
  324. mimeTypes.Add ("ms", "application/x-troff-ms");
  325. mimeTypes.Add ("mv", "video/x-sgi-movie");
  326. mimeTypes.Add ("my", "audio/make");
  327. mimeTypes.Add ("mzz", "application/x-vnd.AudioExplosion.mzz");
  328. mimeTypes.Add ("nap", "image/naplps");
  329. mimeTypes.Add ("naplps", "image/naplps");
  330. mimeTypes.Add ("nc", "application/x-netcdf");
  331. mimeTypes.Add ("ncm", "application/vnd.nokia.configuration-message");
  332. mimeTypes.Add ("nif", "image/x-niff");
  333. mimeTypes.Add ("niff", "image/x-niff");
  334. mimeTypes.Add ("nix", "application/x-mix-transfer");
  335. mimeTypes.Add ("nsc", "application/x-conference");
  336. mimeTypes.Add ("nvd", "application/x-navidoc");
  337. mimeTypes.Add ("oda", "application/oda");
  338. mimeTypes.Add ("omc", "application/x-omc");
  339. mimeTypes.Add ("omcd", "application/x-omcdatamaker");
  340. mimeTypes.Add ("omcr", "application/x-omcregerator");
  341. mimeTypes.Add ("p", "text/x-pascal");
  342. mimeTypes.Add ("p10", "application/pkcs10");
  343. mimeTypes.Add ("p12", "application/pkcs-12");
  344. mimeTypes.Add ("p7a", "application/x-pkcs7-signature");
  345. mimeTypes.Add ("p7c", "application/pkcs7-mime");
  346. mimeTypes.Add ("p7m", "application/pkcs7-mime");
  347. mimeTypes.Add ("p7r", "application/x-pkcs7-certreqresp");
  348. mimeTypes.Add ("p7s", "application/pkcs7-signature");
  349. mimeTypes.Add ("part", "application/pro_eng");
  350. mimeTypes.Add ("pas", "text/pascal");
  351. mimeTypes.Add ("pbm", "image/x-portable-bitmap");
  352. mimeTypes.Add ("pcl", "application/x-pcl");
  353. mimeTypes.Add ("pct", "image/x-pict");
  354. mimeTypes.Add ("pcx", "image/x-pcx");
  355. mimeTypes.Add ("pdb", "chemical/x-pdb");
  356. mimeTypes.Add ("pdf", "application/pdf");
  357. mimeTypes.Add ("pfunk", "audio/make");
  358. mimeTypes.Add ("pgm", "image/x-portable-graymap");
  359. mimeTypes.Add ("pic", "image/pict");
  360. mimeTypes.Add ("pict", "image/pict");
  361. mimeTypes.Add ("pkg", "application/x-newton-compatible-pkg");
  362. mimeTypes.Add ("pko", "application/vnd.ms-pki.pko");
  363. mimeTypes.Add ("pl", "text/plain");
  364. mimeTypes.Add ("plx", "application/x-PiXCLscript");
  365. mimeTypes.Add ("pm", "image/x-xpixmap");
  366. mimeTypes.Add ("pm4", "application/x-pagemaker");
  367. mimeTypes.Add ("pm5", "application/x-pagemaker");
  368. mimeTypes.Add ("png", "image/png");
  369. mimeTypes.Add ("pnm", "application/x-portable-anymap");
  370. mimeTypes.Add ("pot", "application/mspowerpoint");
  371. mimeTypes.Add ("pov", "model/x-pov");
  372. mimeTypes.Add ("ppa", "application/vnd.ms-powerpoint");
  373. mimeTypes.Add ("ppm", "image/x-portable-pixmap");
  374. mimeTypes.Add ("pps", "application/mspowerpoint");
  375. mimeTypes.Add ("ppt", "application/mspowerpoint");
  376. mimeTypes.Add ("ppz", "application/mspowerpoint");
  377. mimeTypes.Add ("pre", "application/x-freelance");
  378. mimeTypes.Add ("prt", "application/pro_eng");
  379. mimeTypes.Add ("ps", "application/postscript");
  380. mimeTypes.Add ("pvu", "paleovu/x-pv");
  381. mimeTypes.Add ("pwz", "application/vnd.ms-powerpoint");
  382. mimeTypes.Add ("py", "text/x-script.phyton");
  383. mimeTypes.Add ("pyc", "applicaiton/x-bytecode.python");
  384. mimeTypes.Add ("qcp", "audio/vnd.qcelp");
  385. mimeTypes.Add ("qd3", "x-world/x-3dmf");
  386. mimeTypes.Add ("qd3d", "x-world/x-3dmf");
  387. mimeTypes.Add ("qif", "image/x-quicktime");
  388. mimeTypes.Add ("qt", "video/quicktime");
  389. mimeTypes.Add ("qtc", "video/x-qtc");
  390. mimeTypes.Add ("qti", "image/x-quicktime");
  391. mimeTypes.Add ("qtif", "image/x-quicktime");
  392. mimeTypes.Add ("ra", "audio/x-pn-realaudio");
  393. mimeTypes.Add ("ram", "audio/x-pn-realaudio");
  394. mimeTypes.Add ("ras", "application/x-cmu-raster");
  395. mimeTypes.Add ("rast", "image/cmu-raster");
  396. mimeTypes.Add ("rexx", "text/x-script.rexx");
  397. mimeTypes.Add ("rf", "image/vnd.rn-realflash");
  398. mimeTypes.Add ("rgb", "image/x-rgb");
  399. mimeTypes.Add ("rm", "application/vnd.rn-realmedia");
  400. mimeTypes.Add ("rmi", "audio/mid");
  401. mimeTypes.Add ("rmm", "audio/x-pn-realaudio");
  402. mimeTypes.Add ("rmp", "audio/x-pn-realaudio");
  403. mimeTypes.Add ("rng", "application/ringing-tones");
  404. mimeTypes.Add ("rnx", "application/vnd.rn-realplayer");
  405. mimeTypes.Add ("roff", "application/x-troff");
  406. mimeTypes.Add ("rp", "image/vnd.rn-realpix");
  407. mimeTypes.Add ("rpm", "audio/x-pn-realaudio-plugin");
  408. mimeTypes.Add ("rss", "text/xml");
  409. mimeTypes.Add ("rt", "text/richtext");
  410. mimeTypes.Add ("rtf", "text/richtext");
  411. mimeTypes.Add ("rtx", "text/richtext");
  412. mimeTypes.Add ("rv", "video/vnd.rn-realvideo");
  413. mimeTypes.Add ("s", "text/x-asm");
  414. mimeTypes.Add ("s3m", "audio/s3m");
  415. mimeTypes.Add ("sbk", "application/x-tbook");
  416. mimeTypes.Add ("scm", "application/x-lotusscreencam");
  417. mimeTypes.Add ("sdml", "text/plain");
  418. mimeTypes.Add ("sdp", "application/sdp");
  419. mimeTypes.Add ("sdr", "application/sounder");
  420. mimeTypes.Add ("sea", "application/sea");
  421. mimeTypes.Add ("set", "application/set");
  422. mimeTypes.Add ("sgm", "text/sgml");
  423. mimeTypes.Add ("sgml", "text/sgml");
  424. mimeTypes.Add ("sh", "text/x-script.sh");
  425. mimeTypes.Add ("shar", "application/x-bsh");
  426. mimeTypes.Add ("shtml", "text/html");
  427. mimeTypes.Add ("sid", "audio/x-psid");
  428. mimeTypes.Add ("sit", "application/x-sit");
  429. mimeTypes.Add ("skd", "application/x-koan");
  430. mimeTypes.Add ("skm", "application/x-koan");
  431. mimeTypes.Add ("skp", "application/x-koan");
  432. mimeTypes.Add ("skt", "application/x-koan");
  433. mimeTypes.Add ("sl", "application/x-seelogo");
  434. mimeTypes.Add ("smi", "application/smil");
  435. mimeTypes.Add ("smil", "application/smil");
  436. mimeTypes.Add ("snd", "audio/basic");
  437. mimeTypes.Add ("sol", "application/solids");
  438. mimeTypes.Add ("spc", "application/x-pkcs7-certificates");
  439. mimeTypes.Add ("spl", "application/futuresplash");
  440. mimeTypes.Add ("spr", "application/x-sprite");
  441. mimeTypes.Add ("sprite", "application/x-sprite");
  442. mimeTypes.Add ("src", "application/x-wais-source");
  443. mimeTypes.Add ("ssi", "text/x-server-parsed-html");
  444. mimeTypes.Add ("ssm", "application/streamingmedia");
  445. mimeTypes.Add ("sst", "application/vnd.ms-pki.certstore");
  446. mimeTypes.Add ("step", "application/step");
  447. mimeTypes.Add ("stl", "application/sla");
  448. mimeTypes.Add ("stp", "application/step");
  449. mimeTypes.Add ("sv4cpio", "application/x-sv4cpio");
  450. mimeTypes.Add ("sv4crc", "application/x-sv4crc");
  451. mimeTypes.Add ("svf", "image/x-dwg");
  452. mimeTypes.Add ("svr", "application/x-world");
  453. mimeTypes.Add ("swf", "application/x-shockwave-flash");
  454. mimeTypes.Add ("t", "application/x-troff");
  455. mimeTypes.Add ("talk", "text/x-speech");
  456. mimeTypes.Add ("tar", "application/x-tar");
  457. mimeTypes.Add ("tbk", "application/toolbook");
  458. mimeTypes.Add ("tcl", "text/x-script.tcl");
  459. mimeTypes.Add ("tcsh", "text/x-script.tcsh");
  460. mimeTypes.Add ("tex", "application/x-tex");
  461. mimeTypes.Add ("texi", "application/x-texinfo");
  462. mimeTypes.Add ("texinfo", "application/x-texinfo");
  463. mimeTypes.Add ("text", "text/plain");
  464. mimeTypes.Add ("tgz", "application/x-compressed");
  465. mimeTypes.Add ("tif", "image/tiff");
  466. mimeTypes.Add ("tiff", "image/tiff");
  467. mimeTypes.Add ("tr", "application/x-troff");
  468. mimeTypes.Add ("tsi", "audio/tsp-audio");
  469. mimeTypes.Add ("tsp", "audio/tsplayer");
  470. mimeTypes.Add ("tsv", "text/tab-separated-values");
  471. mimeTypes.Add ("turbot", "image/florian");
  472. mimeTypes.Add ("txt", "text/plain");
  473. mimeTypes.Add ("uil", "text/x-uil");
  474. mimeTypes.Add ("uni", "text/uri-list");
  475. mimeTypes.Add ("unis", "text/uri-list");
  476. mimeTypes.Add ("unv", "application/i-deas");
  477. mimeTypes.Add ("uri", "text/uri-list");
  478. mimeTypes.Add ("uris", "text/uri-list");
  479. mimeTypes.Add ("ustar", "multipart/x-ustar");
  480. mimeTypes.Add ("uu", "text/x-uuencode");
  481. mimeTypes.Add ("uue", "text/x-uuencode");
  482. mimeTypes.Add ("vcd", "application/x-cdlink");
  483. mimeTypes.Add ("vcs", "text/x-vCalendar");
  484. mimeTypes.Add ("vda", "application/vda");
  485. mimeTypes.Add ("vdo", "video/vdo");
  486. mimeTypes.Add ("vew", "application/groupwise");
  487. mimeTypes.Add ("viv", "video/vivo");
  488. mimeTypes.Add ("vivo", "video/vivo");
  489. mimeTypes.Add ("vmd", "application/vocaltec-media-desc");
  490. mimeTypes.Add ("vmf", "application/vocaltec-media-file");
  491. mimeTypes.Add ("voc", "audio/voc");
  492. mimeTypes.Add ("vos", "video/vosaic");
  493. mimeTypes.Add ("vox", "audio/voxware");
  494. mimeTypes.Add ("vqe", "audio/x-twinvq-plugin");
  495. mimeTypes.Add ("vqf", "audio/x-twinvq");
  496. mimeTypes.Add ("vql", "audio/x-twinvq-plugin");
  497. mimeTypes.Add ("vrml", "application/x-vrml");
  498. mimeTypes.Add ("vrt", "x-world/x-vrt");
  499. mimeTypes.Add ("vsd", "application/x-visio");
  500. mimeTypes.Add ("vst", "application/x-visio");
  501. mimeTypes.Add ("vsw", "application/x-visio");
  502. mimeTypes.Add ("w60", "application/wordperfect6.0");
  503. mimeTypes.Add ("w61", "application/wordperfect6.1");
  504. mimeTypes.Add ("w6w", "application/msword");
  505. mimeTypes.Add ("wav", "audio/wav");
  506. mimeTypes.Add ("wb1", "application/x-qpro");
  507. mimeTypes.Add ("wbmp", "image/vnd.wap.wbmp");
  508. mimeTypes.Add ("web", "application/vnd.xara");
  509. mimeTypes.Add ("wiz", "application/msword");
  510. mimeTypes.Add ("wk1", "application/x-123");
  511. mimeTypes.Add ("wmf", "windows/metafile");
  512. mimeTypes.Add ("wml", "text/vnd.wap.wml");
  513. mimeTypes.Add ("wmlc", "application/vnd.wap.wmlc");
  514. mimeTypes.Add ("wmls", "text/vnd.wap.wmlscript");
  515. mimeTypes.Add ("wmlsc", "application/vnd.wap.wmlscriptc");
  516. mimeTypes.Add ("word", "application/msword");
  517. mimeTypes.Add ("wp", "application/wordperfect");
  518. mimeTypes.Add ("wp5", "application/wordperfect");
  519. mimeTypes.Add ("wp6", "application/wordperfect");
  520. mimeTypes.Add ("wpd", "application/wordperfect");
  521. mimeTypes.Add ("wq1", "application/x-lotus");
  522. mimeTypes.Add ("wri", "application/mswrite");
  523. mimeTypes.Add ("wrl", "application/x-world");
  524. mimeTypes.Add ("wrz", "model/vrml");
  525. mimeTypes.Add ("wsc", "text/scriplet");
  526. mimeTypes.Add ("wsrc", "application/x-wais-source");
  527. mimeTypes.Add ("wtk", "application/x-wintalk");
  528. mimeTypes.Add ("xbm", "image/x-xbitmap");
  529. mimeTypes.Add ("xdr", "video/x-amt-demorun");
  530. mimeTypes.Add ("xgz", "xgl/drawing");
  531. mimeTypes.Add ("xif", "image/vnd.xiff");
  532. mimeTypes.Add ("xl", "application/excel");
  533. mimeTypes.Add ("xla", "application/excel");
  534. mimeTypes.Add ("xlb", "application/excel");
  535. mimeTypes.Add ("xlc", "application/excel");
  536. mimeTypes.Add ("xld", "application/excel");
  537. mimeTypes.Add ("xlk", "application/excel");
  538. mimeTypes.Add ("xll", "application/excel");
  539. mimeTypes.Add ("xlm", "application/excel");
  540. mimeTypes.Add ("xls", "application/excel");
  541. mimeTypes.Add ("xlt", "application/excel");
  542. mimeTypes.Add ("xlv", "application/excel");
  543. mimeTypes.Add ("xlw", "application/excel");
  544. mimeTypes.Add ("xm", "audio/xm");
  545. mimeTypes.Add ("xml", "text/xml");
  546. mimeTypes.Add ("xmz", "xgl/movie");
  547. mimeTypes.Add ("xpix", "application/x-vnd.ls-xpix");
  548. mimeTypes.Add ("xpm", "image/xpm");
  549. mimeTypes.Add ("x-png", "image/png");
  550. mimeTypes.Add ("xsr", "video/x-amt-showrun");
  551. mimeTypes.Add ("xwd", "image/x-xwd");
  552. mimeTypes.Add ("xyz", "chemical/x-pdb");
  553. mimeTypes.Add ("z", "application/x-compressed");
  554. mimeTypes.Add ("zip", "application/zip");
  555. mimeTypes.Add ("zsh", "text/x-script.zsh");
  556. }
  557. public static string GetMimeType (string fileName) {
  558. string result = null;
  559. int dot = fileName.LastIndexOf ('.');
  560. if (dot != -1 && fileName.Length > dot + 1)
  561. result = mimeTypes [fileName.Substring (dot + 1)] as string;
  562. if (result == null)
  563. result = "application/octet-stream";
  564. return result;
  565. }
  566. }
  567. }
  568. }