| Win32 Libraries (Win32 package) | Source code | Contents | Index

System.Win32.SimpleMAPI

Portability | portable
Stability | provisional
Maintainer | Esa Ilari Vuokko <ei@vuokko.info>

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
mAPI_AB_NOMODIFY :: MapiFlag
mAPI_OLE :: MapiFlag
mAPI_OLE_STATIC :: MapiFlag
mAPI_UNREAD :: MapiFlag
mAPI_RECEIPT_REQUESTED :: MapiFlag
mAPI_SENT :: MapiFlag
mapiErrors :: [(ULONG, String)]
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 ()

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
mAPI_AB_NOMODIFY :: MapiFlag
mAPI_OLE :: MapiFlag
mAPI_OLE_STATIC :: MapiFlag
mAPI_UNREAD :: MapiFlag
mAPI_RECEIPT_REQUESTED :: MapiFlag
mAPI_SENT :: MapiFlag
mapiErrors :: [(ULONG, String)]
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 |

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 | 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 |

ftTag :: (Maybe String) | mime
ftEncoding :: (Maybe String) |

Instances

Show FileTag

defFileTag :: FileTag
withFileTag :: FileTag -> (Ptr FileTag -> IO a) -> IO a
data Attachment

Constructors

Attachment |

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 |

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 ()
Produced by Haddock version 0.8