none
XAC programmering af funktionen sendmail

    Spørgsmål

  • Hej,

    Jeg har forsøgt at rette i funktionen sendmail, således at signaturen kommer med i mailen selvom man indsætter noget i body'en. Signaturen kommer med hvis man ikke udfylder noget i body'en.

    Umiddelbart har jeg forsøgt at gemme den oprindelige body (med signatur) i et nyt objekt eller en variant, og derefter udfylde den oprindelige body med tekst for til sidst at tilføje den oprindelige body med signaturen. Dette kan jeg dog ikke helt få til spille, da jeg får forskellige syntaxfejl. Er der nogen som har et forslag til hvordan det løses?

    Følgende eksempel er et bud på hvordan det kunne se ud i VB

    Sub Mail_Outlook_With_Signature_Html_1()
    ' Working in Office 2000-2013
        Dim OutApp As Object
        Dim OutMail As Object
        Dim strbody As String
    
        Set OutApp = CreateObject("Outlook.Application")
        Set OutMail = OutApp.CreateItem(0)
    
        strbody = "<H3><B>Dear Customer</B></H3>" & _
                  "Please visit this website to download the new version.<br>" & _
                  "Let me know if you have problems.<br>" & _
                  
                  "<br><br><B>Thank you</B>"
    
        On Error Resume Next
    
        With OutMail
            .Display
            .To = "xxx@yyy.dk"
            .CC = ""
            .BCC = ""
            .Subject = "This is the Subject line"
            .HTMLBody = strbody & "<br>" & .HTMLBody
            .Send
        End With
    
        On Error GoTo 0
        Set OutMail = Nothing
        Set OutApp = Nothing
    End Sub

    1. august 2013 20:41

Svar

  • Hej igen,

    Jeg kan se jeg gør en ting mere, se koden herunder.

    Om det er getinspector eller det at du ikke blot lægger din html str sammen med htmlbody. Men i stedet putter din html str ind i htmlbody varianten og så lægger den sammen med signatur har jeg ikke testet.

    Men jeg tror det er getinspector du mangler.

    //lav mail

    SET &olTmpBody = #PropGet(VAR,&olMailItem,'HTMLBody')
    //build  &body op som html
    SET &olTmpBody = #VarAdd(#VX(&olTmpBody),#S(&Body+"<BR>"))

    #With(&olMailItem)
    #PropPut(,'BodyFormat = olFormatHTML')
    SET #Invoke(,,'GetInspector')
    SET &olSig = #PropGet(VAR,,'HTMLBody')
    SET &olTmplBody = #VarAdd(#VX(&olTmpBody),#VX(&olSig))
    SET #Invoke(,,'HTMLBody = #1',#VX(&olTmpBody))



    • Markeret som svar af suneo 7. august 2013 09:05
    7. august 2013 07:56

Alle besvarelser

  • Hejsa,

    Har haft samme ballade.
    Jeg gemmer HTML body inden jeg bygger min egen html body op. Så lægger jeg de to sammen til sidst.
    Det er noget lignende nedenstående.

    SET &olTmpBody = #PropGet(VAR,&olMailItem,'HTMLBody') //gem html signatur
    //Byg &Body op
    SET &olTmpBody = #VarAdd(#VX(&olTmpBody),#S("<BR>"+&Body)) //læg de to sammen

    SET #Invoke(,,'HTMLBody = #1',#VX(&olTmpBody)) //put variabel ind i mail htmlbody

    Mvh.
    Mads
    DataSign.dk

    6. august 2013 07:30
  • Hej Mads,

    Jeg har prøvet at flette dine linjer ind i FNC=SendMail, men får desværre ikke signaturen med ud, men kun 'Test' delen af body'en. Det kunne tyde på at jeg enten ikke får gemt den opreindelige body rigtigt eller ikke får den trukket korrekt ud efterfølgende. Ligeledes har jeg prøvet at lave om i #Invoke med diverse variable. Kan du spotte hvad der er galt?

    6. august 2013 14:11
  • Hej igen,

    Jeg kan se jeg gør en ting mere, se koden herunder.

    Om det er getinspector eller det at du ikke blot lægger din html str sammen med htmlbody. Men i stedet putter din html str ind i htmlbody varianten og så lægger den sammen med signatur har jeg ikke testet.

    Men jeg tror det er getinspector du mangler.

    //lav mail

    SET &olTmpBody = #PropGet(VAR,&olMailItem,'HTMLBody')
    //build  &body op som html
    SET &olTmpBody = #VarAdd(#VX(&olTmpBody),#S(&Body+"<BR>"))

    #With(&olMailItem)
    #PropPut(,'BodyFormat = olFormatHTML')
    SET #Invoke(,,'GetInspector')
    SET &olSig = #PropGet(VAR,,'HTMLBody')
    SET &olTmplBody = #VarAdd(#VX(&olTmpBody),#VX(&olSig))
    SET #Invoke(,,'HTMLBody = #1',#VX(&olTmpBody))



    • Markeret som svar af suneo 7. august 2013 09:05
    7. august 2013 07:56
  • Hej Mads,

    Så lykkedes det. Mange tak for hjælpen.

    Her er den kode jeg flettede ind i min SendMail:

    7. august 2013 09:05