Applies to:
HP ALM Workflow, HP QC Workflow
Issue:
The customer wants to send a notification email and include only a subset of the attachements. As you could imagine, a development object or requirement can aqcuire many attachments over a period of time and most companies have size limits on their email inboxes.
Solution:
In the example, strFilterType allows the user to filter through all attachments and could attach only the attachments that have <SOMETHING> in their name. When calling this procedure the user can pass "Transport" to strFilterType and only the attachments with "Transport" in their name will be attached to the email.
'*****************************************************************************
'-----------------------------------------------------------------------------
'
' Procedure: USER_Template_AttachFileAndSendMail
'
' Purpose: Send a simple email by passing the To, CC, Subject, and Comment as
' arguments and include an specific set of attachments. strFilterType
' is the filter we use to do an instring on the names of the
' attachments.
'
' Initially Coded By: Chris Carpenter, Principal HP ALM Consultant
' Bienabee Technologies, LLC
'
' Date: 5/21/2014
'
'-----------------------------------------------------------------------------
'*****************************************************************************
Sub USER_Template_AttachFileAndSendMail(strTo, strCC, strSubject, strComment, strFilterType)
Dim objTDC, objAttachFact, objAttachment, objAttachment2, objAttachList
Dim objReqFact, strReqId, objReq, objAttachmentList
' Set our connection
Set objTDC = TDConnection
' Instantiate the Requirement Factory
Set objReqFact = objTDC.ReqFactory
' Whichever requirement we are working with, grab its ID
strReqId = Req_Fields("RQ_REQ_ID").Value
' Use the requirement facotry of that particular requirement
Set objReq = objReqFact.Item(strReqId)
' Initialize the Attachments factory of said requirement
Set objAttachFact = objReq.Attachments
' Create a list of all the attachments from the attachment factory
Set objAttachList = objAttachFact.NewList("")
' We need to determine how many attachments fit our filter criteria
' loop through the list and count how many we have.
For Each objAttachment In objAttachList
If Instr(objAttachment.ServerFileName, strFilterType) then
j = j + 1
End If
Next
' We need to specify how big the array is depending on how many attachments
' we want to email.
If j < 1 Then
'dont declare the array
Else
'Declare the array but subtract 1 from j since the array is a 0 index
ReDim objAttachmentList(j - 1)
End If
' Now that we have or have not declared the array, its time to populate it
' based on the attachments that have a certain string in their name.
For Each objAttachment2 In objAttachList
If instr(objAttachment2.ServerFileName,strFilterType) Then
objAttachmentList(i) = objAttachment2.ServerFileName
i = i + 1
End If
Next
objTDC.SendMail strTo, strCC, strSubject, strComment, objAttachmentList
End Sub