[rt-users] RT3 Hack: Send mail to group address. I love it!

Todd Chapman rt at chaka.net
Wed Mar 10 14:31:42 EST 2004


OK. Nobody has responded to my earlier e-mail on avoiding
the use of RT::GroupMember, so I'm posting my code. I
look forward to your comments! :)

Situation: You have a group that is AdminCc on a queue
or ticket. Everyone in the group gets copied on comments
and replies but since they are just taking turns being
on call, not everyone wants a copy of every stupid
message. Why can't RT just send notifications to a
group e-mail address? Now it can!

I modified MemberEmailAddresses in my Group_Local.pm
with the code below. Note that I was too lazy to
add a group e-mail address to the RT3 database so
I just put it in the group description. As long
as it is separated from the rest of the description
by whitespace everything should be OK.

Please send feeback so I can make fixes before posting
the code to the Wiki.

-Todd

# {{{ MemberEmailAddresses

=head2 MemberEmailAddresses

Returns an array of the email addresses of all of this group's members
unless the group has an e-mail address embedded in it's description
in which case that address is used instead.


=cut

sub MemberEmailAddresses {
    my $self = shift;

    my %addresses;

if ($self->Domain ne 'RT::Queue-Role' && $self->Domain ne 'RT::Ticket-Role') {
    my $members = $self->UserMembersObj();
    while (my $member = $members->Next) {
        $addresses{$member->EmailAddress} = 1;
    }
}
else {
    ##### Go through each group within this group and
    ##### if it is UserDefined and you can get an
    ##### e-mail address from the description, put
    ##### that address in the hash instead.
    my $members = $self->MembersObj;
    while (my $member = $members->Next) {
        my $principal = $member->MemberObj;
        if ($principal->IsGroup) {
            my $group_object = $principal->Object;
            if ($group_object->Domain eq 'UserDefined' && $group_object->Description =~ /(\S+\@\S+)/) {
                $addresses{$1} = 1;
            }
            else {
                my @addrs = $group_object->MemberEmailAddresses;
                map {$addresses{$_} = 1} @addrs;
            }
        }
        else {
            my $member_object = $principal->Object;
            $addresses{$member_object->EmailAddress} = 1;
        }
    }

}

    return(sort keys %addresses);
}

# }}}





More information about the rt-users mailing list