möchte meine Mail aus meiner Datenbank erstellen und an Outlook übergeben.
Funktioniert nur zum Teil, es fehlt der Anhang und Cc.., auch die Formate im Nachrichten fehlen.
Code: Alles auswählen
EnableExplicit
;{ Constanten
;- Constanten
Enumeration
#T_Mail_An
#T_Mail_CC
#T_Mail_Betreff
#T_Mail_Nachricht
#S_Mail_Betreff
#T_Mail_Anhang
#S_Mail_An
#S_Mail_CC
#S_Mail_Anhang
#B_Ringbutton
#T_DB_Mail
#T_DB_Betreff
#T_DB_CC
#S_DB_CC
#S_DB_Mail
#S_DB_Betreff
#B_DB_Senden
#B_Mail_Senden
#B_Mail_InfoMail
#S_Mail_Nachricht
#Editor_Window
#Editor_StyleF
#Editor_StyleY
#Editor_StyleB
#Editor_StyleI
#Editor_StyleU
#Editor_StyleFC
#Editor_StyleBC
#Editor_Number
#Editor_AlignR
#Editor_AlignC
#Editor_AlignL
#Editor_Menu
#Editor_MenuNew
#Editor_MenuOpen
#Editor_MenuSave
#Editor_MenuQuit
#Editor_ImageFC
#Editor_ImageBC
EndEnumeration
#CFM_BACKCOLOR = $4000000
#SF_USECODEPAGE = $20
#CP_UTF8 = 65001
;}
;{ Global
;- Global
Global LizenzWindows$ = "Beispiel"
Global Editor_FileName$ = ""
Global Editor_Pattern$ = "RTF (*.rtf)|*.rtf|Text (*.txt)|*.txt|Unicode (*.txt)|*.txt|UTF8 (*.utf8)|*.utf8"
Global sMailAdd.s
Global sRecipient.s
Global sMsg.s
Global sSubj.s
Global sAttachment.s
Global sCommand.s
;}
;{ Fonts
;- Fonts
;}
;{-Image Plugin
;-Images
UsePNGImageDecoder()
UsePNGImageEncoder()
;}
;{ Images
Enumeration
EndEnumeration
;}
;{ Included Images
DataSection
EndDataSection
CreateImage(#Editor_ImageFC,12,12)
CreateImage(#Editor_ImageBC,12,12)
;}
;{ Start Database deklaration
;- START
UseSQLiteDatabase()
InitNetwork()
;}
;{ CompilingSesion
;}
Procedure Editor_EnumFontProc(*lpelfe.LOGFONT , *lpntme.TEXTMETRIC , fontType , lParam)
AddGadgetItem(#Editor_StyleF , -1 , PeekS(@*lpelfe\lfFaceName))
ProcedureReturn 1
EndProcedure
Procedure Editor_StreamOutCallback(dwCookie , *pbBuff , cb , *pcb.Long)
*pcb\l = WriteData(dwCookie , *pbBuff , cb)
ProcedureReturn (Not *pcb\l)
EndProcedure
Procedure Editor_StreamInCallback(dwCookie , *pbBuff.l , cb , *pcb.Long)
*pcb\l = ReadData(dwCookie , *pbBuff , cb)
ProcedureReturn (Not *pcb\l)
EndProcedure
Procedure Editor_UpdateGadgets(editor)
Protected cf.CHARFORMAT2
Protected pf.PARAFORMAT2
Protected fName$ , i
cf\cbSize = SizeOf(CHARFORMAT2)
SendMessage_(GadgetID(editor) , #EM_GETCHARFORMAT , #SCF_SELECTION , cf)
pf\cbSize = SizeOf(PARAFORMAT2)
SendMessage_(GadgetID(editor) , #EM_GETPARAFORMAT , 0 , pf)
If cf\dwMask & #CFM_SIZE
SetGadgetText(#Editor_StyleY , Str(cf\yHeight * 0.05))
EndIf
If cf\dwMask & #CFM_FACE
fName$ = PeekS(@cf\szFaceName , 32)
For i = 0 To CountGadgetItems(#Editor_StyleF) - 1
If GetGadgetItemText(#Editor_StyleF , i) = fName$
SetGadgetState(#Editor_StyleF , i)
Break
EndIf
Next
EndIf
If cf\dwEffects & #CFE_BOLD
SetGadgetState(#Editor_StyleB , 1)
Else
SetGadgetState(#Editor_StyleB , 0)
EndIf
If cf\dwEffects & #CFE_ITALIC
SetGadgetState(#Editor_StyleI , 1)
Else
SetGadgetState(#Editor_StyleI , 0)
EndIf
If cf\dwEffects & #CFE_UNDERLINE
SetGadgetState(#Editor_StyleU , 1)
Else
SetGadgetState(#Editor_StyleU , 0)
EndIf
If cf\crTextColor <> -1
StartDrawing(ImageOutput(#Editor_ImageFC))
Box(0,0,ImageWidth(#Editor_ImageFC),ImageHeight(#Editor_ImageFC), cf\crTextColor)
StopDrawing()
SetGadgetAttribute(#Editor_StyleFC , #PB_Button_Image , ImageID(#Editor_ImageFC))
EndIf
If cf\crBackColor <> -1
StartDrawing(ImageOutput(#Editor_ImageBC))
Box(0,0,ImageWidth(#Editor_ImageBC),ImageHeight(#Editor_ImageBC), cf\crBackColor)
StopDrawing()
SetGadgetAttribute(#Editor_StyleBC , #PB_Button_Image , ImageID(#Editor_ImageBC))
EndIf
If pf\dwMask & #PFM_ALIGNMENT
SetGadgetState(#Editor_AlignR , 0)
SetGadgetState(#Editor_AlignC , 0)
SetGadgetState(#Editor_AlignL , 0)
Select pf\wAlignment
Case #PFA_LEFT : SetGadgetState(#Editor_AlignL , 1)
Case #PFA_CENTER : SetGadgetState(#Editor_AlignC , 1)
Case #PFA_RIGHT : SetGadgetState(#Editor_AlignR , 1)
EndSelect
EndIf
If pf\dwMask & #PFM_NUMBERING
Select pf\wNumbering
Case 0 : SetGadgetState(#Editor_Number , 0)
Default : SetGadgetState(#Editor_Number , 1)
EndSelect
EndIf
SetActiveGadget(editor)
EndProcedure
Procedure Editor_SetFontName(editor , fontName$)
Protected cf.CHARFORMAT2
If fontName$ <> ""
cf\cbSize = SizeOf(CHARFORMAT2)
cf\dwMask = #CFM_FACE
PokeS(@cf\szFaceName , fontName$ , 32)
SendMessage_(GadgetID(editor) , #EM_SETCHARFORMAT , #SCF_SELECTION , cf)
Editor_UpdateGadgets(editor)
EndIf
EndProcedure
Procedure Editor_SetFontHeight(editor , fontSize)
Protected cf.CHARFORMAT2
If fontSize > 0
cf\cbSize = SizeOf(CHARFORMAT2)
cf\dwMask = #CFM_SIZE
cf\yHeight = fontSize * 20.0
SendMessage_(GadgetID(editor) , #EM_SETCHARFORMAT , #SCF_SELECTION , cf)
Editor_UpdateGadgets(editor)
EndIf
EndProcedure
Procedure Editor_SetFontColor(editor , fontColor)
Protected cf.CHARFORMAT2
If fontColor <> -1
cf\cbSize = SizeOf(CHARFORMAT2)
cf\dwMask = #CFM_COLOR
cf\crTextColor = fontColor
SendMessage_(GadgetID(editor) , #EM_SETCHARFORMAT , #SCF_SELECTION , cf)
Editor_UpdateGadgets(editor)
EndIf
EndProcedure
Procedure Editor_SetBackColor(editor , backColor)
Protected cf.CHARFORMAT2
If backColor <> -1
cf\cbSize = SizeOf(CHARFORMAT2)
cf\dwMask = #CFM_BACKCOLOR
cf\crBackColor = backColor
SendMessage_(GadgetID(editor) , #EM_SETCHARFORMAT , #SCF_SELECTION , cf)
Editor_UpdateGadgets(editor)
EndIf
EndProcedure
Procedure Editor_SetFontStyle(editor , mask)
Protected cf.CHARFORMAT2
cf\cbSize = SizeOf(CHARFORMAT2)
cf\dwMask = mask
cf\dwEffects = 0
If GetGadgetState(#Editor_StyleB)
cf\dwEffects | #CFE_BOLD
EndIf
If GetGadgetState(#Editor_StyleI)
cf\dwEffects | #CFE_ITALIC
EndIf
If GetGadgetState(#Editor_StyleU)
cf\dwEffects | #CFE_UNDERLINE
EndIf
SendMessage_(GadgetID(editor) , #EM_SETCHARFORMAT , #SCF_SELECTION , cf)
Editor_UpdateGadgets(editor)
EndProcedure
Procedure Editor_SetAlignment(editor , alignment)
Protected pf.PARAFORMAT2
pf\cbSize = SizeOf(PARAFORMAT2)
pf\dwMask = #PFM_ALIGNMENT
pf\wAlignment = alignment
SendMessage_(GadgetID(editor) , #EM_SETPARAFORMAT , 0 , pf)
Editor_UpdateGadgets(editor)
EndProcedure
Procedure Editor_SetNumbering(editor , format)
Protected pf.PARAFORMAT2
pf\cbSize = SizeOf(PARAFORMAT2)
pf\dwMask = #PFM_NUMBERING | #PFM_NUMBERINGTAB
pf\wNumbering = format
pf\wNumberingTab = 500
SendMessage_(GadgetID(editor) , #EM_SETPARAFORMAT , 0 , pf)
Editor_UpdateGadgets(editor)
EndProcedure
Procedure Editor_Quit()
End
EndProcedure
Procedure Editor_Callback(hwnd , msg , wparam , lparam)
Protected *nmhdr.NMHDR
If msg = #WM_NOTIFY
*nmhdr = lparam
If *nmhdr\code = #EN_SELCHANGE
Editor_UpdateGadgets(*nmhdr\idFrom)
EndIf
EndIf
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
Procedure Editor_Initialize(editor , fontName$ = "Arial" , fontHeight = 10 , fontStyle = 0 , fontColor = #Black , backColor = #White)
Protected lf.LOGFONT , y
ClearGadgetItems(editor)
ClearGadgetItems(#Editor_StyleF)
ClearGadgetItems(#Editor_StyleY)
EnumFontFamiliesEx_(GetDC_(GadgetID(editor)) , lf , @Editor_EnumFontProc() , 0 , 0)
For y = 1 To 100
AddGadgetItem(#Editor_StyleY , -1 , Str(y))
Next
If fontStyle & #CFM_BOLD
SetGadgetState(#Editor_StyleB , 1)
Else
SetGadgetState(#Editor_StyleB , 0)
EndIf
If fontStyle & #CFM_ITALIC
SetGadgetState(#Editor_StyleI , 1)
Else
SetGadgetState(#Editor_StyleI , 0)
EndIf
If fontStyle & #CFM_UNDERLINE
SetGadgetState(#Editor_StyleU , 1)
Else
SetGadgetState(#Editor_StyleU , 0)
EndIf
Editor_SetFontStyle (editor , fontStyle)
Editor_SetFontName (editor , fontName$)
Editor_SetFontHeight(editor , fontHeight)
Editor_SetFontColor (editor , fontColor)
Editor_SetBackColor (editor , backColor)
SendMessage_(GadgetID(editor) , #EM_SETEVENTMASK , 0 , #ENM_SELCHANGE)
SetWindowCallback(@Editor_Callback())
EndProcedure
Procedure Editor_Open(editor , fileName$)
Protected es.EDITSTREAM , file
file = ReadFile(#PB_Any , fileName$)
If IsFile(file)
Editor_Initialize(editor)
es\pfnCallback = @Editor_StreamInCallback()
es\dwCookie = file
Select SelectedFilePattern()
Case 0 : SendMessage_(GadgetID(editor) , #EM_STREAMIN , #SF_RTF , es)
Case 1 : SendMessage_(GadgetID(editor) , #EM_STREAMIN , #SF_TEXT , es)
Case 2 : SendMessage_(GadgetID(editor) , #EM_STREAMIN , #SF_UNICODE | #SF_TEXT , es)
Case 3 : SendMessage_(GadgetID(editor) , #EM_STREAMIN , (#CP_UTF8 << 16) | #SF_USECODEPAGE | #SF_TEXT , es)
EndSelect
CloseFile(file)
Editor_FileName$ = fileName$
EndIf
EndProcedure
Procedure Editor_Save(editor , fileName$)
Protected es.EDITSTREAM , file
file = CreateFile(#PB_Any , fileName$)
If IsFile(file)
es\pfnCallback = @Editor_StreamOutCallback()
es\dwCookie = file
Select SelectedFilePattern()
Case 0 : SendMessage_(GadgetID(editor) , #EM_STREAMOUT , #SF_RTF , es)
Case 1 : SendMessage_(GadgetID(editor) , #EM_STREAMOUT , #SF_TEXT , es)
Case 2 : SendMessage_(GadgetID(editor) , #EM_STREAMOUT , #SF_UNICODE | #SF_TEXT , es)
Case 3 : SendMessage_(GadgetID(editor) , #EM_STREAMOUT , (#CP_UTF8 << 16) | #SF_USECODEPAGE | #SF_TEXT , es)
EndSelect
CloseFile(file)
Editor_FileName$ = fileName$
EndIf
EndProcedure
Procedure OutlookSenden()
;sMailAdd.s = "Info@MeinMail.de"
;sRecipient.s = "Info@CopyMail.de"
;sMsg.s = "Hallo, das ist eine Mail!"
;sSubj.s = "Das ist eine Überschrift"
;sAttachment.s = "C:\ABC.TXT"
sCommand.s = "mailto:" + sMailAdd + "&subject="+ sSubj + "&body="+sMsg + "&Attach=" + Chr(34) + sAttachment + Chr(34) + sRecipient + Chr(34)
RunProgram(sCommand)
EndProcedure
CreateImage(#Editor_ImageFC,12,12)
CreateImage(#Editor_ImageBC,12,12)
;{ MainWindow
Procedure MainWindow()
OpenWindow(#Editor_Window,683, 0, 667, 732,"Outlook Beispiel" , #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget)
CreateMenu(#Editor_Menu , WindowID(#Editor_Window))
MenuTitle("Datei")
MenuItem(#Editor_MenuNew , "Neu")
MenuItem(#Editor_MenuOpen , "Öffnen")
MenuItem(#Editor_MenuSave , "Speichern")
MenuBar()
MenuItem(#Editor_MenuQuit , "Beenden")
ButtonGadget(#B_Ringbutton, 0, 0, 667, 30, "")
ButtonGadget(#B_Mail_Senden, 380, 70, 60, 20, "Send")
ButtonGadget(#B_Mail_InfoMail, 450, 70, 50, 20, "InfoMail")
TextGadget(#T_Mail_An, 20, 70, 20, 20, "An...")
StringGadget(#S_Mail_An, 80, 70, 290, 20, "")
TextGadget(#T_Mail_CC, 20, 100, 30, 20, "Cc...")
StringGadget(#S_Mail_CC, 80, 100, 500, 20, "")
TextGadget(#T_Mail_Betreff, 20, 160, 40, 20, "Betreff ...")
StringGadget(#S_Mail_Betreff, 80, 160, 500, 20, "")
TextGadget(#T_Mail_Anhang, 20, 130, 50, 20, "Anhang ...")
StringGadget(#S_Mail_Anhang, 80, 130, 500, 20, "")
TextGadget(#T_Mail_Nachricht, 20, 185, 60, 20, "Nachricht")
;StringGadget(#S_Mail_Nachricht, 80, 185, 500, 20, "")
ButtonGadget(#B_DB_Senden, 390, 620, 160, 20, "Mail Vorschlagen")
TextGadget(#T_DB_Mail, 10, 620, 70, 20, "Mailadresse")
StringGadget(#S_DB_Mail, 80, 620, 290, 20, "")
TextGadget(#T_DB_Betreff, 10, 650, 50, 20, "Betreff")
StringGadget(#S_DB_Betreff, 80, 650, 290, 20, "")
TextGadget(#T_DB_CC, 10, 680, 70, 20, "Kopie an ..")
StringGadget(#S_DB_CC, 80, 680, 290, 20, "")
ComboBoxGadget (#Editor_StyleF , 5, 215,140, 20)
ComboBoxGadget (#Editor_StyleY ,155, 215, 50, 20)
ButtonGadget (#Editor_StyleB ,215, 215, 20, 20 , "B" ,#PB_Button_Toggle)
ButtonGadget (#Editor_StyleI ,240, 215, 20, 20 , "I" ,#PB_Button_Toggle)
ButtonGadget (#Editor_StyleU ,265, 215, 20, 20 , "U" ,#PB_Button_Toggle)
ButtonGadget (#Editor_AlignL ,305, 215, 20, 20 , "<" ,#PB_Button_Toggle)
ButtonGadget (#Editor_AlignC ,330, 215, 20, 20 , "-" ,#PB_Button_Toggle)
ButtonGadget (#Editor_AlignR ,355, 215, 20, 20 , ">" ,#PB_Button_Toggle)
ButtonGadget (#Editor_Number ,395, 215, 20, 20 , "o" ,#PB_Button_Toggle)
ButtonImageGadget (#Editor_StyleFC ,435, 215, 20, 20 , ImageID(#Editor_ImageFC))
ButtonImageGadget (#Editor_StyleBC ,455, 215, 20, 20 , ImageID(#Editor_ImageBC))
EditorGadget (#S_Mail_Nachricht, 5, 240,657,322)
EndProcedure
;}
;{-MainWindowInit
;-MainWindowInit
MainWindow()
Editor_Initialize(#S_Mail_Nachricht)
SetGadgetText(#S_DB_Mail,"info@zielmail.com")
SetGadgetText(#S_DB_CC,"info@kopieanmail.com")
SetGadgetText(#S_DB_Betreff,"Das ist ein Testmail")
;OutlookSenden()
;}
;{- Event Define
Define EventID, Gadget, Event
;}
;{- Event Repeat
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Editor_Quit()
Case #PB_Event_SizeWindow
;ResizeGadget(#S_Mail_Nachricht , #PB_Ignore,#PB_Ignore , WindowWidth(#Editor_Window) - 10 , WindowHeight(#Editor_Window) - 155)
Case #PB_Event_Gadget
Select EventGadget()
Case #Editor_StyleF
Editor_SetFontName(#S_Mail_Nachricht , GetGadgetText(#Editor_StyleF))
Case #Editor_StyleY
Editor_SetFontHeight(#S_Mail_Nachricht , Val(GetGadgetText(#Editor_StyleY)))
Case #Editor_StyleB
Editor_SetFontStyle(#S_Mail_Nachricht , #CFM_BOLD)
Case #Editor_StyleI
Editor_SetFontStyle(#S_Mail_Nachricht , #CFM_ITALIC)
Case #Editor_StyleU
Editor_SetFontStyle(#S_Mail_Nachricht , #CFM_UNDERLINE)
Case #Editor_StyleFC
Editor_SetFontColor(#S_Mail_Nachricht , ColorRequester())
Case #Editor_StyleBC
Editor_SetBackColor(#S_Mail_Nachricht , ColorRequester())
Case #Editor_Number
Editor_SetNumbering(#S_Mail_Nachricht , GetGadgetState(#Editor_Number))
Case #Editor_AlignL
Editor_SetAlignment(#S_Mail_Nachricht , #PFA_LEFT)
Case #Editor_AlignC
Editor_SetAlignment(#S_Mail_Nachricht , #PFA_CENTER)
Case #Editor_AlignR
Editor_SetAlignment(#S_Mail_Nachricht , #PFA_RIGHT)
Case #B_DB_Senden
SetGadgetText (#S_Mail_An,GetGadgetText(#S_DB_Mail))
SetGadgetText (#S_Mail_Betreff,GetGadgetText(#S_DB_Betreff))
SetGadgetText (#S_Mail_CC,GetGadgetText(#S_DB_CC))
SetGadgetText(#S_Mail_Anhang,"Info.txt")
Case #B_Mail_Senden
sMailAdd.s =GetGadgetText(#S_Mail_An)
sRecipient.s = GetGadgetText(#S_Mail_CC);
sSubj.s =GetGadgetText(#S_Mail_Betreff)
sAttachment.s =GetGadgetText(#S_Mail_Anhang)
sMsg.s =GetGadgetText(#S_Mail_Nachricht)
OutlookSenden()
EndSelect
Case #PB_Event_Menu
Select EventMenu()
Case #Editor_MenuNew
ClearGadgetItems(#S_Mail_Nachricht)
Case #Editor_MenuOpen
Editor_Open(#S_Mail_Nachricht , OpenFileRequester("" , Editor_FileName$ , Editor_Pattern$ , SelectedFilePattern()))
Case #Editor_MenuSave
Editor_Save(#S_Mail_Nachricht , SaveFileRequester("" , Editor_FileName$ , Editor_Pattern$ , SelectedFilePattern()))
Case #Editor_MenuQuit
Editor_Quit()
EndSelect
Case #PB_Event_Menu
Select EventMenu()
Case #Editor_MenuNew
EndSelect
;-Case Gadget
Case #PB_Event_CloseWindow:Break
Select EventID
EndSelect
;OutlookSenden()
;-Case Drag & Drop
Case #PB_Event_GadgetDrop
Select EventGadget()
EndSelect
;-Case Menue
Case #PB_Event_Menu
Select EventMenu()
EndSelect
EndSelect
ForEver
;}
Gruss ... Velindos