/ Forums / Advansys Formativ / Free Solutions from GroupWise Cool Solutions or Advansys / QuickSend applet – Groupwise crash when send to large numbers
-
CreatorTopic
-
August 4, 2006 at 5:31 am #4529
When using the Quick Send applet to send to a CSV file containing 1,000+ Email addresses, Groupwise freezes, processes a proportion of the list then crashes. What is the maximum number that can be safely sent to using this tool?
Secondly, though the ‘Auto-Delete’ sent item tool has been selected when sending out to large groups, Sent items still appear for all recipients sent to causing the mailbox size to go up to 3,000% on one occasion.
-
CreatorTopic
-
AuthorReplies
-
August 5, 2006 at 8:50 pm #8328
Which verson of GroupWise client are you running?
Regards,
Advansys SupportAugust 7, 2006 at 2:27 am #8333Novell Groupwise 6.5.4
quote:
Originally posted by Support 3:
Which verson of GroupWise client are you running?Regards,
Advansys Support
August 7, 2006 at 5:41 pm #8336We can reproduce the issue in GroupWise 6.5.6 (build 1/02/2006). This applet is updated to forces Windows to process any pending messages in the Windows application message queue. We will send a copy of the updated applet to you soon.
Regards,
Advansys SupportDecember 18, 2006 at 11:57 am #8329Hello,
I’m having the same problem with an applet I wrote myself. It works fine but when sending the 148th message, the Groupwise client crashes.
I have downloaded the quick_recipient_solution.exe file, but the Formativ applet is quite unreadable for normal human beings 😉 Can you please post the trick to “force Windows to process any pending messages in the Windows application message queue”?
I need this applet to send about 500-1000 mails with a personal greeting in the first line of the message body. To achieve this, the user picks an address book, and the applet processes every entry in this book. For the personal greeting it picks some information stored in each contact. This works fine for small address books but unfortunally not for larger books.
Posting your solutions is very appreciated.
Kind regards,
Roland LeursDecember 19, 2006 at 3:58 pm #8335Please see below the source code of the “Quick Send” applet. You need to copy the source code and paste into an applet. You need the Formativ Creator or Studio (http://www.advansyscorp.com/formativ_framework.htm) to create and manage the applet. Please note, Advansys do not provide support for the example and cool solutions solution. Hope this helps.
'------------------------------------------------------------------------------- ' Formativ Solutions for GroupWise ' Quick Send ' Designed by: Formativ Business Solution Team ' Copyright (c) 2003 Advansys Pty Limited (www.advansyscorp.com) ' Version 1.0 ' ' DESCRIPTION: ' Sends one copy of the current open email message to each recipient email ' address stored in a flat text file. ' ' ' NOTES: ' - The text file must contain one email address per line. ' - The email address must contain the '@' character. The applet ignores ' address(s) not containing the '@' character. ' - Run the applet by pressing the button that appears on a composing email ' message toolbar. ' - You must save the composing email message before you can run the applet. ' - The applet has been tested with GroupWise 6.5.1 and 6.0.2 ' ' ' HISTORY: ' 19 June 2003 MA: Initial release ' ' 2006-08-08 MA 1.0.1 ' - Utilities.doevents added when sending and cloning messages. ' We need to forces Windows to process any pending messages in the Windows application message queue ' when sending large groups. '------------------------------------------------------------------------------- const IDS_CAPTION = "Formativ Business Solutions" const IDS_NO_MSG_VIEW = "An error occurred while locating the saved message. Close all message(s) views, then open the master draft message and run the applet again." const IDS_SAVE_MSG = "Please save the message (CTRL+S) and run the applet again to proceed." const IDS_EMPTY_FILE = "The selected recipients file is empty." const IDS_CONFIRMATION = " email messages will be generated. Do you want to proceed?" const IDS_MSG_BOX_TYPE = "The message is not draft. Please run the applet from a composing or draft message toolbar." const IDS_INVALID_MSG = "Unable to access the message. Please save and close the message, then open the message and try again." const IDS_FILE_SELECT_DLG = "Select the address text file..." const IDS_INVALID_ADDRESS = "This file does not contains any valid email addresses." const IDS_STATUS_INIT = "Initializing...[Please wait]" const IDS_STATUS_SEND = "Sending Messages...[Please wait]" const IDS_MESSAGES_SENT = "Total messages sent: " '-->Flexalock dim gStatusDlg '------------------------------------------------------------------------------- ' Main Line processing '------------------------------------------------------------------------------- Sub Main(Client, GWEvent) dim iRecipientsList on error resume next set gStatusDlg = Utilities.NewStatusDialog iMessageID = GroupWise.ItemMessageIDFromView ' Do we have a valid message ID? if not IsValidMessageID(iMessageID) then exit sub end if ' Find the message set iMsg = groupwise.account.GetMessage(iMessageID) ' Do we have the message object? if not isobject(iMsg) then gStatusDlg.hide call msgbox(IDS_INVALID_MSG, vbCritical, IDS_CAPTION) exit sub end if ' Make sure the message type is draft if (iMsg.BoxType <> fgwDraft) then gStatusDlg.hide call msgbox(IDS_MSG_BOX_TYPE, vbCritical, IDS_CAPTION) exit sub end if set iRecipientsList = utilities.stringlist ' Select the addresses list file and validate the addresses if not SelectRecipientsList(iRecipientsList) then exit sub end if gStatusDlg.hide ' Confirmation message box before sending the message to the recipients if (MsgBox (iRecipientsList.count & IDS_CONFIRMATION, vbOKCancel+vbInformation, IDS_CAPTION) = vbCancel) then exit sub end if ' Send messages call SendMessage(iRecipientsList, iMsg) Set iMsg = nothing End Sub '------------------------------------------------------------------------------- ' Send the message to the recipients '------------------------------------------------------------------------------- sub SendMessage(aList, aMsg) dim x dim iDlg dim iAddress dim iMasterMsg dim iCloneMsg dim iCounter dim iListBoxCtl dim iSentMsg dim iTotalMessages on error resume next iTotalMessages = 0 if not isobject(aMsg) then exit sub end if if (aList.count = 0) then exit sub end if gStatusDlg.Title = IDS_STATUS_SEND gStatusDlg.ProgressRange = aList.count gStatusDlg.show set iSentItemsList = utilities.stringlist utilities.doevents set iMasterMsg = aMsg.Clone set iDlg = Utilities.NewControlBoxDialog set iListBoxCtl = iDlg.AddListBoxControl ' Clear all recipients if exists iCounter = iMasterMsg.Recipients.count if (iCounter > 0) then for x = 1 to iCounter iMasterMsg.Recipients.item(x).delete next end if ' Sending messages to each recipients for x = 0 to aList.count -1 iAddress = trim(aList.strings(x)) if (iAddress <> "") then 'utilities.trace("iAddress: " & iAddress) ' Clone the message utilities.doevents set iCloneMsg = nothing set iCloneMsg = iMasterMsg.clone utilities.doevents call iCloneMsg.Recipients.add(iAddress) ' Send the message set iSentMsg = nothing set iSentMsg = iCloneMsg.send ' Make sure we have send the message if (iSentMsg.MessageID <> "") then iListBoxCtl.items.add(iAddress) end if utilities.doevents iCloneMsg.delete if not iSentMsg is nothing then iTotalMessages = iTotalMessages + 1 gStatusDlg.StatusText = IDS_MESSAGES_SENT & iTotalMessages end if set iSentMsg = nothing set iCloneMsg = nothing end if gStatusDlg.ProgressPosition = x next iMasterMsg.delete iMasterMsg.delete gStatusDlg.hide iDlg.Caption = IDS_CAPTION iDlg.title = iListBoxCtl.items.count & " messages sent to:" iDlg.Button2Visible = FALSE iDlg.execute set iMasterMsg = nothing end sub '------------------------------------------------------------------------------- ' Is the message ID is valid? '------------------------------------------------------------------------------- function IsValidMessageID(aID) IsValidMessageID = FALSE if (len(aID) = 0) then exit function end if if (instr(1, aID, "Token failed execution", 1) <> 0) then gStatusDlg.hide call msgbox(IDS_NO_MSG_VIEW, vbExclamation, IDS_CAPTION) exit function end if if (aID = "X00") then gStatusDlg.hide call msgbox(IDS_SAVE_MSG, vbExclamation, IDS_CAPTION) exit function end if IsValidMessageID = TRUE end function '------------------------------------------------------------------------------- ' Select the recipients list file and make sure the contents are valid '------------------------------------------------------------------------------- function SelectRecipientsList(byref aList) aList.clear SelectRecipientsList = FALSE dim iFileCTL ' Display file select dialog Set iFileCTL = Utilities.NewOpenFileDialog iFileCTL.Title = IDS_FILE_SELECT_DLG iFileCTL.Filter = "Text File (*.txt)|*.TXT" gStatusDlg.hide ' Execute the file select dialog if not iFileCTL.execute then exit function end if dim x dim iAddress dim iTempList set iTempList = utilities.stringlist iTempList.LoadFromFile(iFileCTL.Filename) gStatusDlg.Title = IDS_STATUS_INIT gStatusDlg.ProgressRange = iTempList.count gStatusDlg.show if (iTempList.count = 0) then gStatusDlg.hide call msgbox(IDS_EMPTY_FILE, vbExclamation, IDS_CAPTION) exit function end if ' Validate the address(s). ' - Make sure we have @ characters in the address ' - Do not include duplicate address for x = 0 to iTempList.count -1 iAddress = iTempList.strings(x) if (instr(1, iAddress, "@", 1) <> 0) and (len(iAddress) > 1) and (aList.indexof(iAddress) = -1) then aList.add(iAddress) end if gStatusDlg.ProgressPosition = x next ' Do we have any address(s) after validate? if (aList.count = 0) then gStatusDlg.hide call msgbox(IDS_INVALID_ADDRESS, vbExclamation, IDS_CAPTION) exit function end if SelectRecipientsList = TRUE end function
Regards,
Advansys SupportDecember 22, 2006 at 1:37 am #8331You add the Utilities.doevents lines in order to prevent Groupwise from crashing, don’t you? Unfortunally this does not solve my problem as Groupwise still crashes after sending 140 – 160 messages.
Here is what I do:
The first step is select 1 address book to which the message will be send.
The second step is enter a subject line and the messagebody in a Formativ form
Optionally, an attachment can be selectedAfter these steps, my applet enters its main loop, i.e. sending the message to each contact in the selected address book. In the body a greeting will be inserted on the first line. This greeting is stored in the contacts comment field. This is how I create and send the message:
for Each AdressBookItem in AddressBook
if AdressBookItem.emailaddress <> “” Then
‘ Create new mail message
Call GroupWise.NewMail
‘ Enter the recipient
Call GroupWise.FocusSet(fcsTo, “”)
Call GroupWise.TypeText(AdressBookItem.emailaddress)
‘ Enter the subject
Call GroupWise.FocusSet(fcsSubject, “”)
Call GroupWise.TypeText(mailbericht.mailberichtEdit1.text)
‘ Enter the message body, first insert the greeting from contact comment field
‘ after that enter the text as type in the previous window
Call GroupWise.FocusSet(fcsMessage, “”)
call GroupWise.TypeText(AdressBookItem.Comments)
call GroupWise.TypeText(chr(10) & chr(13))
Call GroupWise.TypeText(mailbericht.mailberichtMemo1.text)
‘ Add attachment if any
If bijlage <> “” Then
call GroupWise.ItemAttachmentAdd(“X00”, itcAttachClassFile, bijlage, “”)
end if
‘ Send the message
Call GroupWise.ItemSend(False)
Utilities.doevents
end if
nextBut this is quite tricky, as user intervention might disrupt the creation and sending the message. And if the user doesn’t touch the computer, it always crashed after sending about 150 messages.
So I tried to change the main loop to:
for Each AdressBookItem in AddressBook
if AdressBookItem.emailaddress <> “” Then
‘ Create new mail message
Call GroupWise.NewMail
‘ Add the recipient and subject
GroupWise.CurrentItem.To_=”roland.leurs@trippler.nl”
GroupWise.CurrentItem.Subject=mailbericht.mailberichtEdit1.text
‘ Add the message body, first add the greeting from contact comment field
‘ after that add the text as type in the previous window
GroupWise.CurrentItem.Body=AdressBookItem.Comments & chr(10) & chr(13) & mailbericht.mailberichtMemo1.text
‘ Add attachment if any
If bijlage <> “” Then
call GroupWise.ItemAttachmentAdd(“X00”, itcAttachClassFile, bijlage, “”)
end if
‘ Send the message
Call GroupWise.ItemSend(False)
Utilities.doevents
end if
next… trying to avoid the focus and typetext methods. But the subjects, to and body fields are left blank. Is this basically wrong, as I do not get any run-time or compilation error messages. After the “Call GroupWise.ItemSend(False)” command Groupwise displays a message box and says I have to enter a recipient in the To field. I’m using GW7, dutch version.
How can I send hundreds of mail with a personal greeting if this doesn’t work?
Thanks for your support,
Kind regards,
Roland LeursDecember 22, 2006 at 4:30 pm #8332Use our Personalized Emailer solution…
Regards and Happy Holidays,
Advansys Support
January 3, 2007 at 1:11 pm #8330Well, I’m sorry but your Personalized Emailer applet is not very usable in my environment. Although the specs look good, it could probably solve some other problems too, but unfortunaly it crashes when I start it:
Error message #1:
Formativ Applet runtime error
C:Documents and SettingsadminMy DocumentsAdvansysFormativAppletsPersonalized Emailer_Flexalock.vbf
File name or class name not found during Automation operation: ‘RegExp’ at line 4434, column 5Error message #2:
Formativ Applet runtime error
C:Documents and SettingsadminMy DocumentsAdvansysFormativAppletsPersonalized Emailer_Flexalock.vbf
Object required: ‘oRegExp’ at line 4527, column 5Error message #3:
Formativ Applet runtime error
C:Documents and SettingsadminMy DocumentsAdvansysFormativAppletsPersonalized Emailer_Flexalock.vbf
Object required: ‘oRegExp’ at line 356, column 3I’m running this applet on a Groupwise 6.5.5 client, Dutch language.
January 7, 2007 at 4:44 pm #8334Soory for the delay in our response.
You may need to re-register the vbscript.dll file with the server. Please see the syntax:
c:windowssystem32> regsvr32 vbscript.dllIf the problem persists then you need to re-install the Windows Script host from the url below:
http://msdn.microsoft.com/library/default.asp?url=/downloads/list/webdev.aspHope this helps.
Regards,
Advansys Support -
AuthorReplies
- You must be logged in to reply to this topic.