I’m in the process of cleaning up some LetterRip Pro-based mailing lists in preparation for moving them to Web Crossing, and in doing so, I was faced with the age-old problem of determining which bouncing addresses to remove. After all, if an address bounces a few times, it’s probably bad, but if it bounces only a single time, the problem is probably temporary. LetterRip Pro automatically generates lists of addresses that bounced after the last list message went out; the trick is figuring out which addresses appeared more than once. I pondered the problem briefly before realizing that ProVUE’s Panorama database was just the ticket. (See "When You Need a Panoramic View" in TidBITS-770.) After all, what were these email addresses but records in a very simple database?
I started the process in Eudora by selecting some recent bounce list messages and dragging them to the Finder. That action created a text file with all the messages in it. I then opened the text file in Nisus Writer Classic, whipped up a simple macro that found each line containing a bouncing address, copied all those lines to a new file, and then stripped everything but the email addresses.
Next, I opened the text file in Panorama, which created a new database containing a single field with a record for each address. I chose Group Up from the Sort menu to collect identical addresses into groups. Then I changed the outline level so I saw only the summaries, and I chose Count from the Math menu to count the number of records within each summary (that caused the summary record to show the count instead of the email address). Choosing Sort Up from the Sort menu sorted the records such that I could easily delete those addresses that appeared only once (I deleted them manually; it wasn’t worth the effort to write a procedure to automate anything). Next, I removed my count summaries and did another Group Up to collect the addresses into groups again, and again I reduced the outline level so I was looking only at the summary records (which now showed the email address of the summarized records). This time, instead of counting the records, I used the Remove Detail command from the Sort menu to delete all my raw data, since it held all the duplicates. That left just the summary records – one per set of email addresses – which Panorama automatically converted into normal data. Finally, I made a quick trip to Panorama’s Text Export Wizard to create a text file that I could reformat in Nisus Writer Classic with the email commands LetterRip Pro needed to unsubscribe the addresses.
I’m sure there are many other ways to accomplish this task, and someone who was sufficiently skilled with grep could perhaps do it all in BBEdit with a text factory, but since this was a task I don’t anticipate performing again, I didn’t want to put any effort into learning something new and debugging a complex process. By using Panorama’s built-in capabilities, all accessible from obvious menus, I was able to do some surprisingly complex text processing in very little time. Of course, now that I’m contemplating what I did, it strikes me that with some programming, Panorama could probably automate all the necessary actions from start to finish, even tracking bouncing addresses over time. But I’ll leave that as an exercise to the reader.