Improve company productivity with a Business Account.Sign Up

  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 942
  • Last Modified:

Groupwise - Automatic Mail Reminder

I am automatically generating emails in groupwise through access vba forms.
I would like to set a tag on the mail which i send to pop up reminder in the persons mailbox if they don't open the mail within a set time.
Is it possible to do this whilst generating the original mail from an access form.
  • 3
  • 3
1 Solution
I'm a bit behind on GroupWise (my last hands-on was with v6.5), but no, I don't think so. Not easily.

Basically, you need some way for an app to go into the database and check the delivery status of the E-Mail in question. Since you didn't bother to mention precisely how your app submits E-Mail to GroupWise for delivery, I'm assuming that you're doing it via SMTP. Which means that there are no message tracking features available as they are for messages originating natively in the GroupWise system.

However, if your app is working through some sort of API that allows you to submit an E-Mail directly to a POA as an authenticated user, fine, explain how your app works and it might be possible.

SweetingAAuthor Commented:
Attached is an extract of code i commonly use to send mails via Groupwise from vb.

Private Sub SendEmail_Click()
On Error GoTo GWError

    If Me.QualityTeam = "" Then
        MsgBox "Enter a recipient!"
        GoTo CMError
    End If
    Dim GW As GroupwareTypeLibrary.Application2
    Dim GWAccount As GroupwareTypeLibrary.Account2
    Dim GWMailbox As GroupwareTypeLibrary.Folder2
    Dim GWMessage As GroupwareTypeLibrary.Message
    Dim GWMessages As GroupwareTypeLibrary.Message2
    Dim GWAttachments As GroupwareTypeLibrary.Attachments
    Dim GWattachment As GroupwareTypeLibrary.Attachment
    Dim strQuality As String
    Dim strFile1 As String
    Dim strFile2 As String
    Dim strFile3 As String
    Dim strText As String
    Dim strText2 As String
    Dim strText3 As String
    Dim strText4 As String
    Dim strcc1 As String
    Dim strcc2 As String
    Dim strcc3 As String
    Dim strcc4 As String
    Dim strcc5 As String
    Dim strcc6 As String
    Dim strcc7 As String
    Dim strcc8 As String
    Dim strcc9 As String
    Dim strcc10 As String
    Set GW = CreateObject("NovellGroupWareSession") 'Open GroupWise
    Set GWAccount = GW.Login                        'Pickup login
    Set GWMailbox = GWAccount.MailBox
    Set GWMessage = GWMailbox.Messages.Add
    strQuality = ""
    strFile1 = Me.att1.Value
    strFile2 = Me.att2.Value
    strFile3 = Me.att3.Value
    strText = "This email is to confirm that a change or concession request form has been saved in your peronalised directory awaiting review and signature"
    strText2 = "Only one signatory from the quality department is necessary, please check if the file has already been signed to avoid double signatures"
    strText3 = "Additional supporting information may be attached to this mail - please check the attachment window before exiting"
    strText4 = "Expediency would greatly be appreciated"
    strcc1 = Me.cc1  'Everyone on copy
    strcc2 = Me.cc2
    strcc3 = Me.cc3
    strcc4 = Me.cc4
    strcc5 = Me.cc5
    strcc6 = Me.cc6
    strcc7 = Me.cc7
    strcc8 = Me.cc8
    strcc9 = Me.cc9
    strcc10 = Me.cc10
    GWMessage.Subject = "Change Or Concession Request"
    GWMessage.BodyText = "Dear Colleagues," & vbCrLf & vbCrLf & strText & vbCrLf & vbCrLf & strText2 & vbCrLf & vbCrLf & strText3 & vbCrLf & vbCrLf & strText4
    GWMessage.Recipients.Add strQuality, , egwTo   'Sent to quality department
    If strcc1 <> "" Then
    GWMessage.Recipients.Add strcc1, , egwCC  'Copy to other parties
    End If
    If strcc2 <> "" Then
    GWMessage.Recipients.Add strcc2, , egwCC
    End If
    If strcc3 <> "" Then
    GWMessage.Recipients.Add strcc3, , egwCC
    End If
    If strcc4 <> "" Then
    GWMessage.Recipients.Add strcc4, , egwCC
    End If
    If strcc5 <> "" Then
    GWMessage.Recipients.Add strcc5, , egwCC
    End If
    If strcc6 <> "" Then
    GWMessage.Recipients.Add strcc6, , egwCC
    End If
    If strcc7 <> "" Then
    GWMessage.Recipients.Add strcc7, , egwCC
    End If
    If strcc8 <> "" Then
    GWMessage.Recipients.Add strcc8, , egwCC
    End If
    If strcc9 <> "" Then
    GWMessage.Recipients.Add strcc9, , egwCC
    End If
    If strcc10 <> "" Then
    GWMessage.Recipients.Add strcc10, , egwCC
    End If
    If strFile1 <> "f:\Quality Systems\Customer Concerns\Associated Documents\blank.doc" Then
    GWMessage.Attachments.Add (strFile1)   'pickup attachments
    End If
    If strFile2 <> "f:\Quality Systems\Customer Concerns\Associated Documents\blank.doc" Then
    GWMessage.Attachments.Add (strFile2)
    End If
    If strFile3 <> "f:\Quality Systems\Customer Concerns\Associated Documents\blank.doc" Then
    GWMessage.Attachments.Add (strFile3)
    End If
    MsgBox "Mail Sent"
    Set GWMessage = Nothing
    Set GWAccount = Nothing
    Set GW = Nothing
Exit Sub
    MsgBox "Error" & Err.Description & Err.Source
    Exit Sub
    Exit Sub

End Sub
OK, if I'm reading the code correctly (never touched VB), you're using an API to login to the POA. Therefore, there exists in the PO a mailbox (Pickup?), and into which your app authenticates. Is that right?

Assuming that is so, then when you submit your E-Mail, it should appear in the Sent Items folder of the mailbox. Can you login to the PO as that mailbox and confirm that the generated E-Mails all exist (or at least the ones that haven't been trimmed by any retention policy enforced)?

If my assumption is correct and the E-Mails exist, then the answer to your Question becomes dependent on the API you're using. I'm going to touch on that with such an assumption in mind.

When your app submits the E-Mail to the POA, the message will be assigned a Message ID that uniquely identifies it within the PO database. The ID is a string of hexadecimal digits - I don't recall how many. If you go into the GroupWise fat client and examine the Properties of a message, one of the bits of information you'll see is that Message ID (I think that's how it's labeled).

I need to digress here a bit and talk about the GroupWise database structure. My knowledge is current through v6.5, but I doubt that they've made many changes since then. Anyway, bear with me.

Fundamentally, GroupWise is a database; its internal record format is dubbed LIN (I don't recall what that means, if anything) and is based on, if I remember correctly, SQLite. The contents of the DB (that is, the records) are encrypted, so even if you know the schema, you'd still need to deal with the encryption. The POA is a database engine that interacts with 25 database files in the OFMSG sub-directory of the PO directory structure.

Mailboxes are distributed pseudo-randomly across the 25 Message databases (MSG1.DB thru MSG25.DB), so unless there are fewer than 25 mailboxes in the Post Office, you can pretty much guarantee that the E-Mail for more than one particular mailbox is contained in a given OFMSG/MSGx.DB file.

In the OFUSER sub-directory, there will be (among other things) User database files, with the name format USERXXX.DB, there XXX is a three-hexadecimal-character ID, assigned by the POA, that uniquely identifies the mailbox within the PO. Those three characters should be part of the Message ID string I mentioned above, for all messages generated under that mailbox.

The individual OFUSER/USERxxx.DB file does NOT contain E-Mail. It contains pointer records to the user's E-Mail, their preferences, Rules, mailbox password, security settings, Folders, Proxy assignments, Folder Sharing and so forth. But the actual E-mail messages are in the MSGx.DB files (or in the OFFILES directory structure, since the body of E-Mail messages over 2KB in size are stored as an attachment).

OK, so where am I going with this. The Message ID is essentially a pointer to a specific record in a MSGx.DB database file. It also allows the POA to track messages within the GroupWise System.

The reason for the underlining is that no matter what, you are only going to be able to track message delivery in that context. If the E-Mail generated by your script ends up going out a GWIA (or any other Gateway, for that matter), message tracking stops there. You can determine that it was Transferred, and when that happened, but any sort of tracking past that point is next-to-impossible.

If your messages are being delivered to other mailboxes within the same GroupWise System, then this becomes a programming task. I don't know the API you're using, but basically what you'd want to do is to capture the Message ID for an E-Mail you send, at the time you generate it. I've never programmed anything like that, but it seems to me that it should be possible. Maybe it's part of the return from the function call, I don't know, but you need to have some way to capture that unique Message ID when your script sends the E-Mail.

After that, it should be a relatively simple case of setting up a cron job (or whatever automatic task scheduler Winblows uses) to login to the Post Office under the mailbox ID, retrieve the status information for that Message ID, and parse it to determine who has or has not opened it. I am assuming that the API you're using has functions to do those things - the GroupWise Client does them, and I would think that Novell would publish a full-featured API (and also guessing that is what you're using), so once you can uniquely ID the message you generated, it's really just a database query (and interpretation).

Has this helped?
Get 10% Off Your First Squarespace Website

Ready to showcase your work, publish content or promote your business online? With Squarespace’s award-winning templates and 24/7 customer service, getting started is simple. Head to and use offer code ‘EXPERTS’ to get 10% off your first purchase.

SweetingAAuthor Commented:
It will help if i can access the Message ID, i need to check that i have the authority to do that.

In any case for such a lot of information you deserve the points.

Thanks, i'll let you know if i manage it.
SweetingAAuthor Commented:
The reason for the B is that it is not clear at this stage that the solution will work but its definately a step in the right direction.
It'll be interesting to hear about the eventual solution.
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

  • 3
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now