The commas are inserted in Outlook (at least) when a contact is created under "File As" on the Contact Property Page. There are usually two or more suggestions in the drop down box and one of them is "Lastname, FirstName".
I am not sure that all your sources are coming from Outlook though. But having said that, if you can determine how there are being exported, you might be able to get better control of that before you start cobbling up some "mess of a parser" that could possibly be thwarted by some future change of source information. > -----Original Message----- > From: [email protected] [mailto:[email protected]] On Behalf Of Karen > Tellef > Sent: Saturday, October 24, 2015 9:41 AM > To: [email protected] > Subject: [RBASE-L] - RE: Help with parsing email addresses? - some > codeexamples > > The problem is that the SRPL would change ALL the commas to a ~~, so > both the actual delimiter that I need for an SSUB to work, as well as > the embedded comma in the name. I would have to be able to > distinguish the comma that separates addresses from a comma that's > embedded in a name. Yes, I could write a couple dozen lines to code > to look for " or look for <... and have the program figure out where > that comma is embedded. For now we've scrapped it and we'll > investigate how the commas get in the names to begin with, and prevent > that from happening in the future. > > In case this code would help anyone else with a similar RMail issue > when trying to convert from 7.6 RMail where everything is on one row to > RMail 9.5/10 where each recipient needs a separate line, here's what I > came up with. > > Even if your email addresses are in multiple rows, the last section of > code helps construct your individual Plugin statements. > > Karen > > > My data & email setup: > > EmailDetail table has columns: EmailTo, EmailCC, EmailBCC, EmailID > (PK) Rather than a multi-row table, this has a single row per email, > and all 3 email columns would have multiple email addresses separated > by commas > What we do: emails are NOT sent out right away. They are held in > a table with a "DateTimeSent" column. We have a Scheduled Task set up > to run every 15 minutes to send out emails based on the date being > null. In this way we have an RBase table with a record of every email > sent. Only the server sends out emails, none of the workstations. > We have a "view emails" menu option so they can use RBase to search for > emails sent, which they like much better than an Outlook search! > > > RMail send program: > -- this temp table will hold email addresses on separate rows CREATE > TEMP TABLE tmpEmailAdd (EmailID INT, EmailType TEXT 3, EmailAddress > TEXT 40) > > -- This is my code to parse out email addresses. The "continue" > section is what would ignore commas embedded in a name > -- There's 3 of these code sections, for EmailTo, EmailCC and EmailBCC > -- You'll notice my SRPL of the quotes character. Another difference > with RMail running in version X is > -- that RMail automatically puts its own " around the name in an email > address. So if your data already > -- has quotes in it (like mine sometimes does), you get double "" and > RMail will fail. Took me a while to figure that > -- one out! Thank you RMail log files! > SELECT EmailCC INTO vText IND iv1 FROM EmailDetail WHERE > EmailID = .vEmailID > IF vText IS NOT NULL THEN > SET VAR vText = (SRPL(.vText, (CVAL("QUOTES")), "", 0)) > SET VAR vLoop INT = 1 > WHILE 1 = 1 THEN > SET VAR vText1 = (SSUB(.vText,.vLoop)) > IF vText1 IS NULL THEN > BREAK > ENDIF > -- See if there's a valid email in there. Could be a name > comma > SET VAR vCount = (SLOC(.vText1,"@")) > IF vCount = 0 THEN > CONTINUE > ENDIF > > INSERT INTO tmpEmailAdd (EmailID, EmailType, > EmailAddress) + > VALUES .vAlertID, "CC", .vText1 > > SET VAR vLoop = (.vLoop + 1) > ENDWHILE > ENDIF > > -- So now we're in the code where the RMail Plugin runs. > -- Again, separate sections for To, CC and BCC > DROP CURSOR c2 > DECLARE c2 CURSOR FOR SELECT emailaddress FROM tmpEmailAdd + > WHERE EmailID = .vEmailID AND EmailType = "CC" > OPEN c2 > WHILE 1 = 1 THEN > FETCH c2 INTO vEAdd > IF SQLCODE = 100 THEN > BREAK > ENDIF > > SET VAR vCommand = ("PLUGIN RMail V1|ADD_CC_RECIPIENT" & .vEAdd) > &vCommand > > ENDWHILE > > > > > Karen > > > > -----Original Message----- > From: Bruce A. Chitiea <[email protected]> > To: karentellef <[email protected]> > Sent: Fri, Oct 23, 2015 4:35 pm > Subject: [RBASE-L] - RE: Help with parsing email addresses? > > > Karen: > > It seems like the variably embedded comma is the bottleneck to the SSUB > solution. > > Drawing upon Jeff Richardson’s earlier post, why not SRPL the embedded > comma to a really unlikely string like ‘~~” (double tilde), let SSUB do > it’s magic, then SRPL the comma back into play when you’ve rendered it > harmless? > > Bruce Chitiea > SafeSectors, Inc. > 909.238.9012 mobile > > From: [email protected] [mailto:[email protected] <mailto:rbase- > [email protected]?> ] On Behalf Of Karen Tellef > Sent: Friday, October 23, 2015 6:42 AM > To: [email protected] > Subject: [RBASE-L] - RE: Help with parsing email addresses? > > I should have mentioned that for now we've decided on a solution. > In most of the cases, using a simple SSUB will extract the email > addreses. The only thing that SSUB doesn't work on is if a comma is > embedded in the name: > "tellef, karenf" < <mailto:[email protected]> [email protected]>, > <mailto:[email protected]> [email protected] > > In the above case, a SSUB(...1) would extract just the word "Tellef". > So I just test that the result contains a "@" and if it doesn't just > throw it away. The SSUB(..2) would extract just "karen" as the name > and they're fine with that. I could have added code for the > SSUB(...1) so get characters from the first ", but they said not to > bother right now. > > We're going to update the list of frequent emails to get rid of those > commas and add code to prevent it from happening in the future. > > > Karen > > > -----Original Message----- > From: Karen Tellef < <mailto:[email protected]> [email protected]> > To: rbase-l < <mailto:[email protected]> [email protected]> > Sent: Fri, Oct 23, 2015 8:28 am > Subject: Re: [RBASE-L] - RE: Help with parsing email addresses? > Well yes and no. I actually want to KEEP the "name", not parse out > just the address. And actually the data is more complicated than what > I posted because I wanted to focus on one issue. The problem is that > the app (written by someone else) allows them to (a) type in email > addresses freehand, and/or (b) select them from a list of frequent > emails that sometimes have a name and sometimes do not. So for > example, my string can have values like below. I need to extract > individual addresses and they want me to keep the "name". This wasn't > an issue in RMail for > 7.6 because we sent them all on one line, but the newer RMail requires > each address on a different line. I might suggest that we totally redo > the method of them selecting an address. We can't upgrade until I have > RMail code redone so I have some time to wrestle with this. > > <mailto:[email protected]> [email protected] > <mailto:[email protected]> [email protected], > <mailto:[email protected]> [email protected] > "karen tellef" < <mailto:[email protected]> [email protected]> > "karen tellef" < <mailto:[email protected]> [email protected]>, > <mailto:[email protected]> [email protected] > > Nice data, huh?? I need to be off the allergic meds to tackle this > one! > > Karen > > > -----Original Message----- > From: Buddy Walker < <mailto:[email protected]> > [email protected]> > To: karentellef < <mailto:[email protected]> [email protected]> > Sent: Thu, Oct 22, 2015 6:34 pm > Subject: [RBASE-L] - RE: Help with parsing email addresses? > Karen > Could you try something like this it should work with or without the > comma > > ************************ > SET VAR vLen INTEGER = 0 > SET VAR vLoc INTEGER = 0 > SET VAR vRem INTEGER = 0 > SET VAR vEMail TEXT = NULL > SET VAR vEmail1 TEXT = NULL > --SET VAR vEMail1 = ('tellef, karen < <mailto:[email protected]> > [email protected]>') SET VAR vEMail1 = ('karen tellef < > <mailto:[email protected]> [email protected]>') > > IF vEMail1 CONTAINS '<' THEN > SET VAR vLen = (SLEN(vEMail1)) > SET VAR vLoc = (SLOC(.vEmail1,'<')) > SET VAR vRem = (.vLen - .vLoc) > SET VAR vEMail = (SGET(.vEMail1,(.vRem -1),(.vLoc +1))) ENDIF > > SHOW VAR vEMail > **************************** > > Buddy > > > From: <mailto:[email protected]> [email protected] [ <mailto:rbase- > [email protected]> mailto:[email protected] <mailto:[email protected]?> ] On > Behalf Of Karen Tellef > Sent: Thursday, October 22, 2015 12:45 PM > To: Richardson, Jeff < <mailto:[email protected]> > [email protected]> > Subject: [RBASE-L] - Help with parsing email addresses? > > Converting older RMail code into new RMail code. One of the things I > have to do is parse email addresses into individual RMail commands. I > have no real control over how it's getting to me. > > If all data was like this, I could obviously parse using SSUB: > <mailto:[email protected]> [email protected], <mailto:[email protected]> > [email protected] > > Some of the data comes in with the "names" as part of the address. > Again, this would be easy, use SSUB > karen tellef < <mailto:[email protected]> [email protected]>, mary > smith < > <mailto:[email protected]%0b%0bBut%20guess%20what... %20Some%20of%20the%20n > ames%20actually%20have%20a%20comma%20embedded:%0b %20tellef,%20karen% > 20%[email protected]> [email protected] > > But guess what... Some of the names actually have a comma embedded: > tellef, karen <[email protected]>, mary Smith < > <mailto:[email protected]> [email protected]> > > > Sigh... Any suggestions on how I could program to get this into 2 > lines for an RMail send? > > Thanks much! > > Karen

