Win32-2.3.1.0: A binding to part of the Win32 library

Copyright | (c) Esa Ilari Vuokko, 2006
License | BSD-style (see the file LICENSE)
Maintainer | Esa Ilari Vuokko <ei@vuokko.info>
Stability | provisional
Portability | portable
Safe Haskell | Safe
Language | Haskell98

System.Win32.SimpleMAPI

Description

FFI-bindings to interact with SimpleMAPI

Synopsis

- type ULONG = DWORD
- type LHANDLE = ULONG
- newtype MapiRecipDesc = MapiRecipDesc ()
- type MapiFlag = ULONG
- mAPI_LOGON_UI :: MapiFlag
- mAPI_NEW_SESSION :: MapiFlag
- mAPI_FORCE_DOWNLOAD :: MapiFlag
- mAPI_LOGOFF_SHARED :: MapiFlag
- mAPI_LOGOFF_UI :: MapiFlag
- mAPI_DIALOG :: MapiFlag
- mAPI_UNREAD_ONLY :: MapiFlag
- mAPI_LONG_MSGID :: MapiFlag
- mAPI_GUARANTEE_FIFO :: MapiFlag
- mAPI_ENVELOPE_ONLY :: MapiFlag
- mAPI_PEEK :: MapiFlag
- mAPI_BODY_AS_FILE :: MapiFlag
- mAPI_SUPPRESS_ATTACH :: MapiFlag
- mapiErrors :: [(ULONG, String)]
- mAPI_AB_NOMODIFY :: MapiFlag
- mAPI_OLE :: MapiFlag
- mAPI_OLE_STATIC :: MapiFlag
- mAPI_UNREAD :: MapiFlag
- mAPI_RECEIPT_REQUESTED :: MapiFlag
- mAPI_SENT :: MapiFlag
- mapiErrorString :: ULONG -> String
- mapiFail :: String -> IO ULONG -> IO ULONG
- mapiFail_ :: String -> IO ULONG -> IO ()
- type MapiLogonType = ULONG -> LPSTR -> LPSTR -> MapiFlag -> ULONG -> Ptr LHANDLE -> IO ULONG
- mkMapiLogon :: FunPtr MapiLogonType -> MapiLogonType
- type MapiLogoffType = LHANDLE -> ULONG -> MapiFlag -> ULONG -> IO ULONG
- mkMapiLogoff :: FunPtr MapiLogoffType -> MapiLogoffType
- type MapiResolveNameType = LHANDLE -> ULONG -> LPSTR -> MapiFlag -> ULONG -> Ptr (Ptr MapiRecipDesc) -> IO ULONG
- mkMapiResolveName :: FunPtr MapiResolveNameType -> MapiResolveNameType
- type MapiFreeBufferType = Ptr () -> IO ULONG
- mkMapiFreeBuffer :: FunPtr MapiFreeBufferType -> MapiFreeBufferType
- type MapiSendMailType = LHANDLE -> ULONG -> Ptr Message -> MapiFlag -> ULONG -> IO ULONG
- mkMapiSendMail :: FunPtr MapiSendMailType -> MapiSendMailType
- data MapiFuncs = MapiFuncs {
  - mapifLogon :: MapiLogonType
  - mapifLogoff :: MapiLogoffType
  - mapifResolveName :: MapiResolveNameType
  - mapifFreeBuffer :: MapiFreeBufferType
  - mapifSendMail :: MapiSendMailType
  }
- type MapiLoaded = (MapiFuncs, ForeignPtr ())
- loadMapiFuncs :: String -> HMODULE -> IO MapiFuncs
- loadMapiDll :: String -> IO (MapiFuncs, HMODULE)
- withMapiFuncs :: [String] -> (MapiFuncs -> IO a) -> IO a
- loadMapi :: [String] -> IO MapiLoaded
- withMapiLoaded :: MapiLoaded -> (MapiFuncs -> IO a) -> IO a
- maybeHWND :: Maybe HWND -> ULONG
- mapiLogon :: MapiFuncs -> Maybe HWND -> Maybe String -> Maybe String -> MapiFlag -> IO LHANDLE
- mapiLogoff :: MapiFuncs -> LHANDLE -> Maybe HWND -> IO ()
- data RecipientClass
  - = RcOriginal
  - | RcTo
  - | RcCc
  - | RcBcc
- rcToULONG :: RecipientClass -> ULONG
- uLONGToRc :: ULONG -> RecipientClass
- data Recipient
  - = RecipResolve (Maybe HWND) MapiFlag String (Maybe Recipient)
  - | Recip String String
- type Recipients = [(RecipientClass, Recipient)]
- simpleRecip :: String -> Recipient
- withRecipient :: MapiFuncs -> LHANDLE -> RecipientClass -> Recipient -> (Ptr MapiRecipDesc -> IO a) -> IO a
- withRecipients :: MapiFuncs -> LHANDLE -> Recipients -> (Int -> Ptr MapiRecipDesc -> IO a) -> IO a
- data FileTag = FileTag {
  - ftTag :: Maybe String
  - ftEncoding :: Maybe String
  }
- defFileTag :: FileTag
- withFileTag :: FileTag -> (Ptr FileTag -> IO a) -> IO a
- data Attachment = Attachment {
  - attFlag :: MapiFlag
  - attPosition :: Maybe ULONG
  - attPath :: String
  - attName :: Maybe String
  - attTag :: Maybe FileTag
  }
- defAttachment :: Attachment
- type Attachments = [Attachment]
- withAttachments :: Attachments -> (Int -> Ptr Attachment -> IO a) -> IO a
- data Message = Message {
  - msgSubject :: String
  - msgBody :: String
  - msgType :: Maybe String
  - msgDate :: Maybe String
  - msgConversationId :: Maybe String
  - msgFlags :: MapiFlag
  - msgFrom :: Maybe Recipient
  - msgRecips :: Recipients
  - msgAttachments :: Attachments
  }
- defMessage :: Message
- withMessage :: MapiFuncs -> LHANDLE -> Message -> (Ptr Message -> IO a) -> IO a
- mapiSendMail :: MapiFuncs -> LHANDLE -> Maybe HWND -> Message -> MapiFlag -> IO ()
- handleIOException :: (IOException -> IO a) -> IO a -> IO a

# Documentation

type ULONG = DWORD

type LHANDLE = ULONG

newtype MapiRecipDesc

Constructors

MapiRecipDesc () |

type MapiFlag = ULONG

mAPI_LOGON_UI :: MapiFlag

mAPI_NEW_SESSION :: MapiFlag

mAPI_FORCE_DOWNLOAD :: MapiFlag

mAPI_LOGOFF_SHARED :: MapiFlag

mAPI_LOGOFF_UI :: MapiFlag

mAPI_DIALOG :: MapiFlag

mAPI_UNREAD_ONLY :: MapiFlag

mAPI_LONG_MSGID :: MapiFlag

mAPI_GUARANTEE_FIFO :: MapiFlag

mAPI_ENVELOPE_ONLY :: MapiFlag

mAPI_PEEK :: MapiFlag

mAPI_BODY_AS_FILE :: MapiFlag

mAPI_SUPPRESS_ATTACH :: MapiFlag

mapiErrors :: [(ULONG, String)]

mAPI_AB_NOMODIFY :: MapiFlag

mAPI_OLE :: MapiFlag

mAPI_OLE_STATIC :: MapiFlag

mAPI_UNREAD :: MapiFlag

mAPI_RECEIPT_REQUESTED :: MapiFlag

mAPI_SENT :: MapiFlag

mapiErrorString :: ULONG -> String

mapiFail :: String -> IO ULONG -> IO ULONG

mapiFail_ :: String -> IO ULONG -> IO ()

type MapiLogonType = ULONG -> LPSTR -> LPSTR -> MapiFlag -> ULONG -> Ptr LHANDLE -> IO ULONG

mkMapiLogon :: FunPtr MapiLogonType -> MapiLogonType

type MapiLogoffType = LHANDLE -> ULONG -> MapiFlag -> ULONG -> IO ULONG

mkMapiLogoff :: FunPtr MapiLogoffType -> MapiLogoffType

type MapiResolveNameType = LHANDLE -> ULONG -> LPSTR -> MapiFlag -> ULONG -> Ptr (Ptr MapiRecipDesc) -> IO ULONG

mkMapiResolveName :: FunPtr MapiResolveNameType -> MapiResolveNameType

type MapiFreeBufferType = Ptr () -> IO ULONG

mkMapiFreeBuffer :: FunPtr MapiFreeBufferType -> MapiFreeBufferType

type MapiSendMailType = LHANDLE -> ULONG -> Ptr Message -> MapiFlag -> ULONG -> IO ULONG

mkMapiSendMail :: FunPtr MapiSendMailType -> MapiSendMailType

data MapiFuncs

Constructors

MapiFuncs |
Fields mapifLogon :: MapiLogonType mapifLogoff :: MapiLogoffType mapifResolveName :: MapiResolveNameType mapifFreeBuffer :: MapiFreeBufferType mapifSendMail :: MapiSendMailType

type MapiLoaded = (MapiFuncs, ForeignPtr ())

loadMapiFuncs :: String -> HMODULE -> IO MapiFuncs

loadMapiDll :: String -> IO (MapiFuncs, HMODULE)

withMapiFuncs :: [String] -> (MapiFuncs -> IO a) -> IO a

loadMapi :: [String] -> IO MapiLoaded

withMapiLoaded :: MapiLoaded -> (MapiFuncs -> IO a) -> IO a

maybeHWND :: Maybe HWND -> ULONG

mapiLogon

Arguments

:: MapiFuncs | Functions loaded from MAPI DLL
-> Maybe HWND | Parent window, used for modal logon dialog
-> Maybe String | Session
-> Maybe String | Password
-> MapiFlag | None, one or many flags: FORCE_DOWNLOAD, NEW_SESSION, LOGON_UI, PASSWORD_UI
-> IO LHANDLE |

Create Simple MAPI-session by logon

mapiLogoff :: MapiFuncs -> LHANDLE -> Maybe HWND -> IO ()

End Simple MAPI-session

data RecipientClass

Constructors

RcOriginal |
RcTo |
RcCc |
RcBcc |

Instances

Enum RecipientClass |
Eq RecipientClass |
Ord RecipientClass |
Show RecipientClass |

rcToULONG :: RecipientClass -> ULONG

uLONGToRc :: ULONG -> RecipientClass

data Recipient

Constructors

RecipResolve (Maybe HWND) MapiFlag String (Maybe Recipient) |
Recip String String |

Instances

Show Recipient |

type Recipients = [(RecipientClass, Recipient)]

simpleRecip :: String -> Recipient

withRecipient :: MapiFuncs -> LHANDLE -> RecipientClass -> Recipient -> (Ptr MapiRecipDesc -> IO a) -> IO a

withRecipients :: MapiFuncs -> LHANDLE -> Recipients -> (Int -> Ptr MapiRecipDesc -> IO a) -> IO a

data FileTag

Constructors

FileTag |
Fields ftTag :: Maybe String mime ftEncoding :: Maybe String

Instances

Show FileTag |

defFileTag :: FileTag

withFileTag :: FileTag -> (Ptr FileTag -> IO a) -> IO a

data Attachment

Constructors

Attachment |
Fields attFlag :: MapiFlag attPosition :: Maybe ULONG attPath :: String attName :: Maybe String attTag :: Maybe FileTag

Instances

Show Attachment |

defAttachment :: Attachment

type Attachments = [Attachment]

withAttachments :: Attachments -> (Int -> Ptr Attachment -> IO a) -> IO a

data Message

Constructors

Message |
Fields msgSubject :: String msgBody :: String msgType :: Maybe String msgDate :: Maybe String msgConversationId :: Maybe String msgFlags :: MapiFlag msgFrom :: Maybe Recipient msgRecips :: Recipients msgAttachments :: Attachments

Instances

Show Message |

defMessage :: Message

withMessage :: MapiFuncs -> LHANDLE -> Message -> (Ptr Message -> IO a) -> IO a

mapiSendMail :: MapiFuncs -> LHANDLE -> Maybe HWND -> Message -> MapiFlag -> IO ()

handleIOException :: (IOException -> IO a) -> IO a -> IO a