Mail senden über Outlook
Verfasst: 16.02.2012 09:52
Hallo,
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.
Kann jemand helfen?
Gruss ... Velindos
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