Jump to content
Sign in to follow this  
zelles

File MIME types

Recommended Posts

zelles

I was looking to find the MIME type of a file using AutoIt and found a function to do it but it only detects the 26 hardcoded, test, MIME types and returns 0 if the file is not one of the few hardcoded MIME's... So I decided to throw a function together... It detects 249 MIME types via the files extention. The thing is it dedects only by the extention; and not by actually checking the file.

True MIME Finder: Supports 26 MIME Types

; sample usage

$file = "c:\file path\file.txt"
$mime_type = __GetMIMEByCode($file)
MsgBox(0, "MIME Type:", $mime_type)

; the function

Func __GetMIMEByCode($f_file)
    $f_call = DllCall("urlmon.dll", "long", "FindMimeFromData", _
                "ptr", 0, _
                "wstr", $f_file, _
                "ptr", 0, _
                "DWORD", 0, _
                "ptr", 0, _
                "DWORD", 1, _
                "ptr*", 0, _
                "DWORD", 0)
    If @error Then Return 0
    $f_mime = DllStructGetData(DllStructCreate("wchar[" & _WinAPI_StringLenW($f_call[7]) & "]", $f_call[7]), 1)
    Return $f_mime
EndFunc

Determine MIME By Extension: Supports 249 MIME Types

;sample usage

$file = "c:\file path\filename.txt"
$mime_type = __GetMIMEByExtention($file)
MsgBox(0, "MIME Type:", $mime_type)

; the function

Func __GetMIMEByExtention($f_file)
    Local $f_extension = StringSplit($f_file, ".")
    Switch '.' & $f_extension[$f_extension[0]]
        Case '.x3d'
            Return 'application/vnd.hzn-3d-crossword'
        Case '.3gp'
            Return 'video/3gpp'
        Case '.3g2'
            Return 'video/3gpp2'
        Case '.mseq'
            Return 'application/vnd.mseq'
        Case '.pwn'
            Return 'application/vnd.3m.post-it-notes'
        Case '.plb'
            Return 'application/vnd.3gpp.pic-bw-large'
        Case '.psb'
            Return 'application/vnd.3gpp.pic-bw-small'
        Case '.pvb'
            Return 'application/vnd.3gpp.pic-bw-var'
        Case '.tcap'
            Return 'application/vnd.3gpp2.tcap'
        Case '.7z'
            Return 'application/x-7z-compressed'
        Case '.abw'
            Return 'application/x-abiword'
        Case '.ace'
            Return 'application/x-ace-compressed'
        Case '.acc'
            Return 'application/vnd.americandynamics.acc'
        Case '.acu'
            Return 'application/vnd.acucobol'
        Case '.atc'
            Return 'application/vnd.acucorp'
        Case '.adp'
            Return 'audio/adpcm'
        Case '.aab'
            Return 'application/x-authorware-bin'
        Case '.aam'
            Return 'application/x-authorware-map'
        Case '.aas'
            Return 'application/x-authorware-seg'
        Case '.air'
            Return 'application/vnd.adobe.air-application-installer-package+zip'
        Case '.swf'
            Return 'application/x-shockwave-flash'
        Case '.fxp'
            Return 'application/vnd.adobe.fxp'
        Case '.pdf'
            Return 'application/pdf'
        Case '.ppd'
            Return 'application/vnd.cups-ppd'
        Case '.dir'
            Return 'application/x-director'
        Case '.xdp'
            Return 'application/vnd.adobe.xdp+xml'
        Case '.xfdf'
            Return 'application/vnd.adobe.xfdf'
        Case '.aac'
            Return 'audio/x-aac'
        Case '.ahead'
            Return 'application/vnd.ahead.space'
        Case '.azf'
            Return 'application/vnd.airzip.filesecure.azf'
        Case '.azs'
            Return 'application/vnd.airzip.filesecure.azs'
        Case '.azw'
            Return 'application/vnd.amazon.ebook'
        Case '.ami'
            Return 'application/vnd.amiga.ami'
        Case 'N/A'
            Return 'application/andrew-inset'
        Case '.apk'
            Return 'application/vnd.android.package-archive'
        Case '.cii'
            Return 'application/vnd.anser-web-certificate-issue-initiation'
        Case '.fti'
            Return 'application/vnd.anser-web-funds-transfer-initiation'
        Case '.atx'
            Return 'application/vnd.antix.game-component'
        Case '.mpkg'
            Return 'application/vnd.apple.installer+xml'
        Case '.aw'
            Return 'application/applixware'
        Case '.les'
            Return 'application/vnd.hhe.lesson-player'
        Case '.swi'
            Return 'application/vnd.aristanetworks.swi'
        Case '.s'
            Return 'text/x-asm'
        Case '.atomcat'
            Return 'application/atomcat+xml'
        Case '.atomsvc'
            Return 'application/atomsvc+xml'
        Case '.atom, .xml'
            Return 'application/atom+xml'
        Case '.ac'
            Return 'application/pkix-attr-cert'
        Case '.aif'
            Return 'audio/x-aiff'
        Case '.avi'
            Return 'video/x-msvideo'
        Case '.aep'
            Return 'application/vnd.audiograph'
        Case '.dxf'
            Return 'image/vnd.dxf'
        Case '.dwf'
            Return 'model/vnd.dwf'
        Case '.par'
            Return 'text/plain-bas'
        Case '.bcpio'
            Return 'application/x-bcpio'
        Case '.bin'
            Return 'application/octet-stream'
        Case '.bmp'
            Return 'image/bmp'
        Case '.torrent'
            Return 'application/x-bittorrent'
        Case '.cod'
            Return 'application/vnd.rim.cod'
        Case '.mpm'
            Return 'application/vnd.blueice.multipass'
        Case '.bmi'
            Return 'application/vnd.bmi'
        Case '.sh'
            Return 'application/x-sh'
        Case '.btif'
            Return 'image/prs.btif'
        Case '.rep'
            Return 'application/vnd.businessobjects'
        Case '.bz'
            Return 'application/x-bzip'
        Case '.bz2'
            Return 'application/x-bzip2'
        Case '.csh'
            Return 'application/x-csh'
        Case '.c'
            Return 'text/x-c'
        Case '.cdxml'
            Return 'application/vnd.chemdraw+xml'
        Case '.css'
            Return 'text/css'
        Case '.cdx'
            Return 'chemical/x-cdx'
        Case '.cml'
            Return 'chemical/x-cml'
        Case '.csml'
            Return 'chemical/x-csml'
        Case '.cdbcmsg'
            Return 'application/vnd.contact.cmsg'
        Case '.cla'
            Return 'application/vnd.claymore'
        Case '.c4g'
            Return 'application/vnd.clonk.c4group'
        Case '.sub'
            Return 'image/vnd.dvb.subtitle'
        Case '.cdmia'
            Return 'application/cdmi-capability'
        Case '.cdmic'
            Return 'application/cdmi-container'
        Case '.cdmid'
            Return 'application/cdmi-domain'
        Case '.cdmio'
            Return 'application/cdmi-object'
        Case '.cdmiq'
            Return 'application/cdmi-queue'
        Case '.c11amc'
            Return 'application/vnd.cluetrust.cartomobile-config'
        Case '.c11amz'
            Return 'application/vnd.cluetrust.cartomobile-config-pkg'
        Case '.ras'
            Return 'image/x-cmu-raster'
        Case '.dae'
            Return 'model/vnd.collada+xml'
        Case '.csv'
            Return 'text/csv'
        Case '.cpt'
            Return 'application/mac-compactpro'
        Case '.wmlc'
            Return 'application/vnd.wap.wmlc'
        Case '.cgm'
            Return 'image/cgm'
        Case '.ice'
            Return 'x-conference/x-cooltalk'
        Case '.cmx'
            Return 'image/x-cmx'
        Case '.xar'
            Return 'application/vnd.xara'
        Case '.cmc'
            Return 'application/vnd.cosmocaller'
        Case '.cpio'
            Return 'application/x-cpio'
        Case '.clkx'
            Return 'application/vnd.crick.clicker'
        Case '.clkk'
            Return 'application/vnd.crick.clicker.keyboard'
        Case '.clkp'
            Return 'application/vnd.crick.clicker.palette'
        Case '.clkt'
            Return 'application/vnd.crick.clicker.template'
        Case '.clkw'
            Return 'application/vnd.crick.clicker.wordbank'
        Case '.wbs'
            Return 'application/vnd.criticaltools.wbs+xml'
        Case '.cryptonote'
            Return 'application/vnd.rig.cryptonote'
        Case '.cif'
            Return 'chemical/x-cif'
        Case '.cmdf'
            Return 'chemical/x-cmdf'
        Case '.cu'
            Return 'application/cu-seeme'
        Case '.cww'
            Return 'application/prs.cww'
        Case '.curl'
            Return 'text/vnd.curl'
        Case '.dcurl'
            Return 'text/vnd.curl.dcurl'
        Case '.mcurl'
            Return 'text/vnd.curl.mcurl'
        Case '.scurl'
            Return 'text/vnd.curl.scurl'
        Case '.car'
            Return 'application/vnd.curl.car'
        Case '.pcurl'
            Return 'application/vnd.curl.pcurl'
        Case '.cmp'
            Return 'application/vnd.yellowriver-custom-menu'
        Case '.dssc'
            Return 'application/dssc+der'
        Case '.xdssc'
            Return 'application/dssc+xml'
        Case '.deb'
            Return 'application/x-debian-package'
        Case '.uva'
            Return 'audio/vnd.dece.audio'
        Case '.uvi'
            Return 'image/vnd.dece.graphic'
        Case '.uvh'
            Return 'video/vnd.dece.hd'
        Case '.uvm'
            Return 'video/vnd.dece.mobile'
        Case '.uvu'
            Return 'video/vnd.uvvu.mp4'
        Case '.uvp'
            Return 'video/vnd.dece.pd'
        Case '.uvs'
            Return 'video/vnd.dece.sd'
        Case '.uvv'
            Return 'video/vnd.dece.video'
        Case '.dvi'
            Return 'application/x-dvi'
        Case '.seed'
            Return 'application/vnd.fdsn.seed'
        Case '.dtb'
            Return 'application/x-dtbook+xml'
        Case '.res'
            Return 'application/x-dtbresource+xml'
        Case '.ait'
            Return 'application/vnd.dvb.ait'
        Case '.svc'
            Return 'application/vnd.dvb.service'
        Case '.eol'
            Return 'audio/vnd.digital-winds'
        Case '.djvu'
            Return 'image/vnd.djvu'
        Case '.dtd'
            Return 'application/xml-dtd'
        Case '.mlp'
            Return 'application/vnd.dolby.mlp'
        Case '.wad'
            Return 'application/x-doom'
        Case '.dpg'
            Return 'application/vnd.dpgraph'
        Case '.dra'
            Return 'audio/vnd.dra'
        Case '.dfac'
            Return 'application/vnd.dreamfactory'
        Case '.dts'
            Return 'audio/vnd.dts'
        Case '.dtshd'
            Return 'audio/vnd.dts.hd'
        Case '.dwg'
            Return 'image/vnd.dwg'
        Case '.geo'
            Return 'application/vnd.dynageo'
        Case '.es'
            Return 'application/ecmascript'
        Case '.mag'
            Return 'application/vnd.ecowin.chart'
        Case '.mmr'
            Return 'image/vnd.fujixerox.edmics-mmr'
        Case '.rlc'
            Return 'image/vnd.fujixerox.edmics-rlc'
        Case '.exi'
            Return 'application/exi'
        Case '.mgz'
            Return 'application/vnd.proteus.magazine'
        Case '.epub'
            Return 'application/epub+zip'
        Case '.eml'
            Return 'message/rfc822'
        Case '.nml'
            Return 'application/vnd.enliven'
        Case '.xpr'
            Return 'application/vnd.is-xpr'
        Case '.xif'
            Return 'image/vnd.xiff'
        Case '.xfdl'
            Return 'application/vnd.xfdl'
        Case '.emma'
            Return 'application/emma+xml'
        Case '.ez2'
            Return 'application/vnd.ezpix-album'
        Case '.ez3'
            Return 'application/vnd.ezpix-package'
        Case '.fst'
            Return 'image/vnd.fst'
        Case '.fvt'
            Return 'video/vnd.fvt'
        Case '.fbs'
            Return 'image/vnd.fastbidsheet'
        Case '.fe_launch'
            Return 'application/vnd.denovo.fcselayout-link'
        Case '.f4v'
            Return 'video/x-f4v'
        Case '.flv'
            Return 'video/x-flv'
        Case '.fpx'
            Return 'image/vnd.fpx'
        Case '.npx'
            Return 'image/vnd.net-fpx'
        Case '.flx'
            Return 'text/vnd.fmi.flexstor'
        Case '.fli'
            Return 'video/x-fli'
        Case '.ftc'
            Return 'application/vnd.fluxtime.clip'
        Case '.fdf'
            Return 'application/vnd.fdf'
        Case '.f'
            Return 'text/x-fortran'
        Case '.mif'
            Return 'application/vnd.mif'
        Case '.fm'
            Return 'application/vnd.framemaker'
        Case '.fh'
            Return 'image/x-freehand'
        Case '.fsc'
            Return 'application/vnd.fsc.weblaunch'
        Case '.fnc'
            Return 'application/vnd.frogans.fnc'
        Case '.ltf'
            Return 'application/vnd.frogans.ltf'
        Case '.ddd'
            Return 'application/vnd.fujixerox.ddd'
        Case '.xdw'
            Return 'application/vnd.fujixerox.docuworks'
        Case '.xbd'
            Return 'application/vnd.fujixerox.docuworks.binder'
        Case '.oas'
            Return 'application/vnd.fujitsu.oasys'
        Case '.oa2'
            Return 'application/vnd.fujitsu.oasys2'
        Case '.oa3'
            Return 'application/vnd.fujitsu.oasys3'
        Case '.fg5'
            Return 'application/vnd.fujitsu.oasysgp'
        Case '.bh2'
            Return 'application/vnd.fujitsu.oasysprs'
        Case '.spl'
            Return 'application/x-futuresplash'
        Case '.fzs'
            Return 'application/vnd.fuzzysheet'
        Case '.g3'
            Return 'image/g3fax'
        Case '.gmx'
            Return 'application/vnd.gmx'
        Case '.gtw'
            Return 'model/vnd.gtw'
        Case '.txd'
            Return 'application/vnd.genomatix.tuxedo'
        Case '.ggb'
            Return 'application/vnd.geogebra.file'
        Case '.ggt'
            Return 'application/vnd.geogebra.tool'
        Case '.gdl'
            Return 'model/vnd.gdl'
        Case '.gex'
            Return 'application/vnd.geometry-explorer'
        Case '.gxt'
            Return 'application/vnd.geonext'
        Case '.g2w'
            Return 'application/vnd.geoplan'
        Case '.g3w'
            Return 'application/vnd.geospace'
        Case '.gsf'
            Return 'application/x-font-ghostscript'
        Case '.bdf'
            Return 'application/x-font-bdf'
        Case '.gtar'
            Return 'application/x-gtar'
        Case '.texinfo'
            Return 'application/x-texinfo'
        Case '.gnumeric'
            Return 'application/x-gnumeric'
        Case '.kml'
            Return 'application/vnd.google-earth.kml+xml'
        Case '.kmz'
            Return 'application/vnd.google-earth.kmz'
        Case '.gqf'
            Return 'application/vnd.grafeq'
        Case '.gif'
            Return 'image/gif'
        Case '.gv'
            Return 'text/vnd.graphviz'
        Case '.gac'
            Return 'application/vnd.groove-account'
        Case '.ghf'
            Return 'application/vnd.groove-help'
        Case '.gim'
            Return 'application/vnd.groove-identity-message'
        Case '.grv'
            Return 'application/vnd.groove-injector'
        Case '.gtm'
            Return 'application/vnd.groove-tool-message'
        Case '.tpl'
            Return 'application/vnd.groove-tool-template'
        Case '.vcg'
            Return 'application/vnd.groove-vcard'
        Case '.h261'
            Return 'video/h261'
        Case '.h263'
            Return 'video/h263'
        Case '.h264'
            Return 'video/h264'
        Case '.hpid'
            Return 'application/vnd.hp-hpid'
        Case '.hps'
            Return 'application/vnd.hp-hps'
        Case '.hdf'
            Return 'application/x-hdf'
        Case '.rip'
            Return 'audio/vnd.rip'
        Case '.hbci'
            Return 'application/vnd.hbci'
        Case '.jlt'
            Return 'application/vnd.hp-jlyt'
        Case '.pcl'
            Return 'application/vnd.hp-pcl'
        Case '.hpgl'
            Return 'application/vnd.hp-hpgl'
        Case '.hvs'
            Return 'application/vnd.yamaha.hv-script'
        Case '.hvd'
            Return 'application/vnd.yamaha.hv-dic'
        Case '.hvp'
            Return 'application/vnd.yamaha.hv-voice'
        Case '.sfd-hdstx'
            Return 'application/vnd.hydrostatix.sof-data'
        Case '.stk'
            Return 'application/hyperstudio'
        Case '.hal'
            Return 'application/vnd.hal+xml'
        Case '.html'
            Return 'text/html'
        Case '.irm'
            Return 'application/vnd.ibm.rights-management'
        Case '.sc'
            Return 'application/vnd.ibm.secure-container'
        Case '.ics'
            Return 'text/calendar'
        Case '.icc'
            Return 'application/vnd.iccprofile'
        Case '.ico'
            Return 'image/x-icon'
        Case '.igl'
            Return 'application/vnd.igloader'
        Case '.ief'
            Return 'image/ief'
        Case '.ivp'
            Return 'application/vnd.immervision-ivp'
        Case '.ivu'
            Return 'application/vnd.immervision-ivu'
        Case '.rif'
            Return 'application/reginfo+xml'
        Case '.3dml'
            Return 'text/vnd.in3d.3dml'
        Case '.spot'
            Return 'text/vnd.in3d.spot'
        Case '.igs'
            Return 'model/iges'
        Case '.i2g'
            Return 'application/vnd.intergeo'
        Case '.cdy'
            Return 'application/vnd.cinderella'
        Case '.xpw'
            Return 'application/vnd.intercon.formnet'
        Case '.fcs'
            Return 'application/vnd.isac.fcs'
        Case '.ipfix'
            Return 'application/ipfix'
        Case Else
            Return 0
    EndSwitch
EndFunc

Share this post


Link to post
Share on other sites
BrewManNH

You'd be better off creating a script that reads the file the way FindMimeFromData does and use that information to determine the mime type. FindMimeFromData reads the first (approximately) 256 bytes of a file and looks for a file signature in there to determine what the mime type is. You can find a list of mime type signatures to look for here. You can do a FileRead of the first 256 bytes by opening the file in binary mode and specifying the bytes to read. You can read how FindMimeFromData works here if you're not familiar with it.


If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Share this post


Link to post
Share on other sites
zelles

@BrewManNH Thank you very much for the information. I'll see if I can put something together using that method. Thanks a bunch!

Share this post


Link to post
Share on other sites
this-is-me

There's also a command line app to do file type identification called TrID.
http://mark0.net/soft-trid-e.html
To use it, download the win32 app and the definitions.

Bonus: This can help you find the type of a file that has been renamed. If you have a file with an incorrect or missing extension, you can use TrID to find out what extension to give it so you can view/edit it.


Who else would I be?

Share this post


Link to post
Share on other sites
zelles

Bonus: This can help you find the type of a file that has been renamed. If you have a file with an incorrect or missing extension, you can use TrID to find out what extension to give it so you can view/edit it.

 

Thanks for the information bud. I want it to find the true MIME type, not just suggested MIME from the extension like I have now... I'll look into that tool. Thanks again.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Similar Content

    • FrancescoDiMuro
      By FrancescoDiMuro
      Good evening everyone
      I am working with Word UDF ( thanks @water! ), and, especially, with the function _Word_DocFindReplace().
      The replace does work everywhere in the document, but, it does not work in Headers or Footers.
      Am I missing something or am I forced to use the code below?
      I have already looked in the Help file ( about _Word_DocFindReplace() ), but there are no mentions about replace text in Headers/Footers.
      Sub FindAndReplaceFirstStoryOfEachType() Dim rngStory As Range For Each rngStory In ActiveDocument.StoryRanges With rngStory.Find .Text = "find text" .Replacement.Text = "I'm found .Wrap = wdFindContinue .Execute Replace:=wdReplaceAll End With Next rngStory End Sub Thanks everyone in advance


      Best Regards.
    • nacerbaaziz
      By nacerbaaziz
      hello dears
      First I would like to apologize to you for my many questions.
      I have a new question if you allow
      I am programming an audio player for blinds
      I had a problem
      I put an option in the folders context menu to Opens the audio files that in the selected folder
      I did not know how to make the Autoit Search the subfolders
      Please provide an example of how to search for  files in the subfolders
      Let's say, for example, MP3 files
      Just give me a simple example and I will try to modify it as appropriate for the program I designing it
      Please help me to find the solution
      Thanks in advance
    • KimberlyJillPereira
      By KimberlyJillPereira
      Using the alarm received parameter how to search for the picture that matches the year month day hour min and sec and by the name of the .jpg file the jpg file naming format is first letter is always m followed by last two digits of year then two digit month two digit day two digit hour two digit minute and two digit second then get that picture and paste it in Microsoft Excel.How to do it? Please help me. Thank you.



    • PINTO1927
      By PINTO1927
      Hello guys, I'm working on this script:
      $search = GUICtrlCreateButton("Search", 10, 10, 90, 30) $find = GUICtrlCreateInput("", 710, 10, 200, 25) GUICtrlSetState($find, $GUI_DISABLE) $ok_find = GUICtrlCreateButton("Find", 925, 10, 65, 25) GUICtrlSetState($ok_find, $GUI_DISABLE)  
      Case $search GUICtrlSetState($ok_trova, $GUI_ENABLE) GUICtrlSetState($trova, $GUI_ENABLE) _GUICtrlListView_SimpleSort($list, $g_bSortSense, 0, False) _GUICtrlListView_DeleteAllItems($list) $File_txt = _FileListToArray("\\PATH\", "*.ini", $FLTA_FILES, True) Local $aLines, $File_txt For $i = 1 To $File_txt[0] _FileReadtoArray($File_txt[$i], $aLines) For $j = 1 To $aLines[0] GUICtrlCreateListViewItem($aLines[$j], $list) Next Next For $i2 = 0 To _GUICtrlListView_GetColumnCount($list) _GUICtrlListView_SetColumnWidth($list, $i2, $LVSCW_AUTOSIZE_USEHEADER) Next Case $ok_find $iI = _GUICtrlListView_FindInText($list, GUICtrlRead($input_find)) MsgBox($MB_SYSTEMMODAL, "Information", "Target Item Index: " & $iI) _GUICtrlListView_EnsureVisible($list, $iI) through a inputbox I would search for the desired word and highlight it in the GuiCtrlListView.
      Can you help me?
    • mLipok
      By mLipok
      I played around a little with http://www.chilkatsoft.com/ ActiveX components. Here is an example based on examples from this page.   #include <FileConstants.au3> #include <MsgBoxConstants.au3> ;~ http://www.chilkatsoft.com/downloads_ActiveX.asp ;~ http://www.chilkatsoft.com/support.asp ;~ http://www.chilkatsoft.com/refdoc/activex.asp ;~ http://www.chilkatsoft.com/refdoc/xChilkatCertStoreRef.html ;~ http://www.chilkatsoft.com/refdoc/xChilkatCertChainRef.html ;~ Email ActiveX Reference Documentation ;~ http://www.chilkatsoft.com/refdoc/xChilkatEmailRef.html ;~ http://www.example-code.com/vbscript/emailObj.asp ;~ http://www.example-code.com/vbscript/pop3.asp Global $_sPOP3_Server = 'xxxxxx' Global $_sPOP3_UserName = 'xxxxxx' Global $_sPOP3_Password = 'xxxxxx' _Example_1_Version() _Example_2_Get_number_of_mesages() _Example_3_Retrieve_UIDLs_from_POP3_Server() _Example_4_Save_Email_Attachments_to_Filesystem() Func _Example_1_Version() Local $oCrypt = ObjCreate("Chilkat_9_5_0.Crypt2") MsgBox(0, '', $oCrypt.Version) EndFunc ;==>_Example_1_Version Func _Example_2_Get_number_of_mesages() ; http://www.example-code.com/vbscript/pop3_mailboxCount.asp ; The mailman object is used for receiving (POP3) ; and sending (SMTP) email. ; This ObjCreate statement uses the new single-DLL ActiveX for v9.5.0 Local $oMailman = ObjCreate("Chilkat_9_5_0.MailMan") ; Any string argument automatically begins the 30-day trial. $success = $oMailman.UnlockComponent("30-day trial") If ($success <> 1) Then MsgBox(0, 'UnlockComponent', $oMailman.LastErrorText) Return EndIf ; Set the POP3 server's hostname $oMailman.MailHost = $_sPOP3_Server ; Set the POP3 login/password. $oMailman.PopUsername = $_sPOP3_UserName $oMailman.PopPassword = $_sPOP3_Password ; Get the number of messages in the mailbox. Local $iNumMessages = $oMailman.GetMailboxCount() MsgBox(0, '', $iNumMessages) EndFunc ;==>_Example_2_Get_number_of_mesages Func _Example_3_Retrieve_UIDLs_from_POP3_Server() ; Retrieve UIDL's from POP3 Server ; http://www.example-code.com/vbscript/pop3_getUidls.asp ; The mailman object is used for receiving (POP3) ; and sending (SMTP) email. ; This ObjCreate statement uses the new single-DLL ActiveX for v9.5.0 Local $oMailman = ObjCreate("Chilkat_9_5_0.MailMan") ; Any string argument automatically begins the 30-day trial. $success = $oMailman.UnlockComponent("30-day trial") If ($success <> 1) Then MsgBox(0, 'UnlockComponent', $oMailman.LastErrorText) Return EndIf ; Set the POP3 server's hostname $oMailman.MailHost = $_sPOP3_Server ; Set the POP3 login/password. $oMailman.PopUsername = $_sPOP3_UserName $oMailman.PopPassword = $_sPOP3_Password ; sa is a Chilkat_9_5_0.StringArray Local $oSA = $oMailman.GetUidls() Local $iCount = $oSA.Count For $i = 0 To $iCount - 1 ConsoleWrite($oSA.GetString($i) & @CRLF) Next EndFunc ;==>_Example_3_Retrieve_UIDLs_from_POP3_Server Func _Example_4_Save_Email_Attachments_to_Filesystem() ; Save Email Attachments to Filesystem ; http://www.example-code.com/vbscript/emailObject_saveAttachments.asp Local $oEmail = ObjCreate("Chilkat_9_5_0.Email") ; Load an email object containing attachments. ; This .eml can be downloaded from: ; http://www.example-code.com/testData/HtmlEmail.eml Local $sEML_FileFullPath = FileOpenDialog('Choose EML File', @ScriptDir, 'EML file (*.eml)', $FD_FILEMUSTEXIST) If @error Then ; Display the error message. MsgBox($MB_SYSTEMMODAL, "", "No file(s) were selected.") Return 0 EndIf Local $iSuccess = $oEmail.LoadEml($sEML_FileFullPath) If ($iSuccess <> 1) Then ConsoleWrite($oEmail.LastErrorText & @CRLF) Return 0 EndIf ; If OverwriteExisting is turned on, files with the same ; name are overwritten. If turned off, new/unique filenames ; are automatically generated. The filenames actually saved ; are accessible via the GetAttachmentFilename method. $oEmail.OverwriteExisting = 1 ; Save all attachments to the "myAttachments" subdirectory ; found under the calling process;s current working directory. ; This directory is automatically created if it does not already ; exist. $iSuccess = $oEmail.SaveAllAttachments("myAttachments") If ($iSuccess <> 1) Then ConsoleWrite($oEmail.LastErrorText & @CRLF) Return 0 EndIf ; List the attachment filenames: For $i = 0 To $oEmail.NumAttachments - 1 ConsoleWrite($oEmail.GetAttachmentFilename($i) & @CRLF) Next EndFunc ;==>_Example_4_Save_Email_Attachments_to_Filesystem Best regards
      mLipok
       
×