Use GoldMine
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Darren Lawrence
-- Create date: 07/12/2012
-- Description: Return a list of Email addresses for a distribution list
-- =============================================
CREATE FUNCTION GetDistList ( @DISTNAME VARCHAR(20) )
RETURNS @temptable TABLE
(
RecordItem VARCHAR(50) ,
EmailAddress VARCHAR(1000)
)
AS
BEGIN
DECLARE @idx INT
DECLARE @item VARCHAR(MAX)
DECLARE @content VARCHAR(MAX)
DECLARE @Delimiter CHAR(1)
DECLARE @firstchar VARCHAR(1)
DECLARE @email VARCHAR(200)
SET @Delimiter = CHAR(1)
SELECT
@idx = 1
-- Fetch the Value of the RFC822 Field for this list
SELECT
@content = ( SELECT
CAST(CAST(RFC822 AS VARBINARY(MAX)) AS VARCHAR(MAX))
FROM
dbo.MAILBOX
WHERE
FOLDER = 'X-GM-GROUPS'
AND folder2 = @DISTNAME
)
WHILE @idx != 0
BEGIN
SET @idx = CHARINDEX(@Delimiter, @content)
IF @idx != 0
SET @item = LEFT(@content, @idx - 1)
ELSE
SET @item = @content
IF ( LEN(@item) > 0 )
BEGIN
SET @firstchar = SUBSTRING(@item, 1, 1)
SET @email = ''
IF @firstchar = 'C'
BEGIN
-- Contact - get primary ContSupp record
SELECT
@email = ( SELECT
CONTSUPREF + ISNULL(ADDRESS1,
'')
FROM
dbo.CONTSUPP
WHERE
ACCOUNTNO = SUBSTRING(@item, 2,
LEN(@item))
AND RECTYPE = 'P'
AND CONTACT = 'E-Mail address'
AND zip LIKE '_1%'
)
END
IF @firstchar = 'E'
OR @firstchar = 'G'
BEGIN
-- Literal Email Address
SET @email = SUBSTRING(@item, 2, LEN(@item))
END
IF @firstchar = 'S'
BEGIN
-- ContSupp Email Record - RECID
SELECT
@email = ( SELECT
CONTSUPREF + ISNULL(ADDRESS1,
'')
FROM
dbo.CONTSUPP
WHERE
RECID = SUBSTRING(@item, 2,
LEN(@item))
)
END
INSERT INTO @temptable
( RecordItem, EmailAddress )
VALUES
( @item, @email )
END
SET @content = RIGHT(@content, LEN(@content) - @idx)
IF LEN(@content) = 0
BREAK
END
RETURN
END
SELECT * FROM dbo.GetDistList('Distribution list name')
You will be returned rows of records with RecordItem and EmailAddress - RecordItem is the item as it was stored in the GoldMine distribution record and the EmailAddress will give you the email address based on the rules mentioned above.
Have a question about something in this article? You can receive help directly from the article author. Sign up for a free trial to get started.
Comments (1)
Commented:
Allan