2016-07-10 6 views
0

Ich arbeite an einem Makro, das den Anlagennamen anhand des Subjektnamens und der Domäne überprüft.Signatur aus Anlage-Lookup-Makro ausschließen

Im Moment gibt es ein paar kleinere Probleme, ich möchte nicht, dass das Makro Bilder in der Signatur als Anhang erkennt. Lösungen, die ich gesehen habe, schließen das Verwenden einer if-Anweisung ein, um die Größe auszuarbeiten, also zum Beispiel nur Anhänge über 5kb etc. überprüfen.

Das andere Problem ist, wenn es keinen Anhang überhaupt gibt, fällt das Makro um! Ich denke, ich brauche am Ende noch eine if-Anweisung, um eine Item-Zählung durchzuführen, aber ich bin nicht sicher, wie das meine Bedingungen am Ende des Makros ändert!

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean) 

    Dim outRecips As Outlook.Recipients 
    Dim outRecip As Outlook.Recipient 
    Dim outPropAcc As Outlook.PropertyAccessor 

    Dim strDomain As String 
    Dim lngPreDom As Long 
    Dim lngPostDom As Long 
    Dim strSubject As String 

    Dim objAttachments As Outlook.Attachments 
    Dim strAttachment As String 

    Dim Response As String 
' set domain value 

    Const PR_SMTP_ADDRESS As String = "http://schemas.microsoft.com/mapi/proptag/0x39FE001E" 

    Set outRecips = Item.Recipients 

    For Each outRecip In outRecips 
     Set outPropAcc = outRecip.PropertyAccessor 

     strDomain = outPropAcc.GetProperty(PR_SMTP_ADDRESS) 
     strDomain = Split(strDomain, "@")(1) 

     lngPreDom = InStr(strDomain, "@") 
     lngPostDom = InStr(strDomain, ".") 

     strDomain = LCase(Mid(strDomain, lngPreDom + 1, lngPostDom - lngPreDom - 1)) 

     Exit For 
    Next 

' set subject value 

    strSubject = LCase(Item.Subject) 

' set attachment name 

    Set objAttachments = Item.Attachments 
    strAttachment = LCase(objAttachments.Item(1).FileName) 

' if external recipient, check email contents 

    If strDomain <> "exampleemail" _ 
     Then 

     If InStr(strSubject, strDomain) = 0 _ 
      Or InStr(strAttachment, strDomain) = 0 _ 
      Or InStr(strAttachment, strSubject) = 0 _ 
      Then 

      Response = "Attachment/Subject do not match Recipient(s)" & vbNewLine & "Send Anyway?" 

      If MsgBox(Response, vbYesNo + vbExclamation + vbMsgBoxSetForeground, "Check Recipients") = vbNo Then 
       Cancel = True 
      End If 
     End If 
    End If 
End Sub 
+0

Wenn jemand einem Mädchen in Not helfen kann, wäre ich sehr dankbar! Ich habe versucht, das fast den ganzen Tag herauszufinden !! Vielen Dank :) – Coz123

Antwort