class MailManager::List

The List class represents mailing lists in Mailman. Typically you get them by doing one of these things: mm = MailManager.init('/mailman/root') mylist = mm.get_list('list_name') OR mylist = mm.create_list(:name => 'list_name', :admin_email => 'foo@bar.com', :admin_password => 'supersecret')

Attributes

name[R]

The name of the list

Public Class Methods

new(name) click to toggle source

This doesn't do any checking to see whether or not the requested list exists or not. Better to use MailManager::Base#get_list instead.

# File lib/mailmanager/list.rb, line 18
def initialize(name)
  @name = name
end

Public Instance Methods

add_member(email, name='') click to toggle source

Adds a new list member, subject to the list's subscription rules

# File lib/mailmanager/list.rb, line 71
def add_member(email, name='')
  add_member_using(:add_member, email, name)
end
add_moderator(email) click to toggle source

Adds a new moderator to the list. Returns :already_a_moderator if the requested new moderator is already a moderator.

# File lib/mailmanager/list.rb, line 98
def add_moderator(email)
  result = lib.add_moderator(self, email)
  result['result'].to_sym
end
address() click to toggle source

Returns the list's email address

# File lib/mailmanager/list.rb, line 48
def address
  result = lib.list_address(self)
  result['return']
end
approved_add_member(email, name='') click to toggle source

Adds a new list member, bypassing the list's subscription rules

# File lib/mailmanager/list.rb, line 76
def approved_add_member(email, name='')
  add_member_using(:approved_add_member, email, name)
end
approved_delete_member(email, name='') click to toggle source

Deletes a list member, bypassing the list's unsubscription rules

# File lib/mailmanager/list.rb, line 86
def approved_delete_member(email, name='')
  delete_member_using(:approved_delete_member, email)
end
delete() click to toggle source

Deletes the list, but not the archives

# File lib/mailmanager/list.rb, line 43
def delete
  self.class.delete(self.name)
end
delete_member(email) click to toggle source

Deletes a list member, subject to the list's unsubscription rules

# File lib/mailmanager/list.rb, line 81
def delete_member(email)
  delete_member_using(:delete_member, email)
end
delete_moderator(email) click to toggle source

Deletes a moderator from the list. Raises a ModeratorNotFoundError if the requested deletion isn't a moderator.

# File lib/mailmanager/list.rb, line 105
def delete_moderator(email)
  result = lib.delete_moderator(self, email)
  result['result'].to_sym
end
description() click to toggle source

Returns the list description

# File lib/mailmanager/list.rb, line 153
def description
  result = lib.description(self)
  result['return']
end
description=(desc) click to toggle source

Sets the list description to a new value

# File lib/mailmanager/list.rb, line 159
def description=(desc)
  result = lib.set_description(self, desc)
  result['result'].to_sym
end
digest_members() click to toggle source

Returns just the digest list members (no regular members) as an array

# File lib/mailmanager/list.rb, line 65
def digest_members
  result = lib.digest_members(self)
  result['return']
end
host_name() click to toggle source

Returns the list's host name

# File lib/mailmanager/list.rb, line 178
def host_name
  result = lib.host_name(self)
  result['return']
end
host_name=(host_name) click to toggle source

Sets the list's host name

# File lib/mailmanager/list.rb, line 184
def host_name=(host_name)
  result = lib.set_host_name(self, host_name)
  result['result'].to_sym
end
info_url() click to toggle source

Returns the info URL for the list

# File lib/mailmanager/list.rb, line 139
def info_url
  result = lib.web_page_url(self)
  root = result['return']
  root += "/" unless root[-1,1] == '/'
  "#{root}listinfo/#{name}"
end
inject(from, subj, message, custom_headers=nil) click to toggle source

Injects a message into the list.

# File lib/mailmanager/list.rb, line 111
    def inject(from, subj, message, custom_headers=nil)
      inject_message =<<EOF
From: #{from}
To: #{address}
Subject: #{subj}
EOF
      if !custom_headers.nil?
        raise ArgumentError, "custom headers arg should be a hash" unless custom_headers.respond_to?(:each_pair)
        headers = []
        custom_headers.each_pair { |hdr, val|
          headers << "#{hdr}: #{val}"
        }
        inject_message += headers.join("\n")
      end
      inject_message += "\n#{message}"
      result = lib.inject(self, inject_message)
      result['result'].to_sym
    end
inject_raw(message) click to toggle source

Injects a raw message into the list. You must send a properly formatted email to this method. You probably want to set the To: header to the list's address. You can get that from MailManager::List#address

# File lib/mailmanager/list.rb, line 133
def inject_raw(message)
  result = lib.inject(self, message)
  result['result'].to_sym
end
members() click to toggle source

Returns all list members (regular & digest) as an array

# File lib/mailmanager/list.rb, line 54
def members
  regular_members + digest_members
end
moderators() click to toggle source

Returns the list of moderators as an array of email addresses

# File lib/mailmanager/list.rb, line 91
def moderators
  result = lib.moderators(self)
  result['return']
end
regular_members() click to toggle source

Returns just the regular list members (no digest members) as an array

# File lib/mailmanager/list.rb, line 59
def regular_members
  result = lib.regular_members(self)
  result['return']
end
request_email() click to toggle source

Returns the request email address for the list

# File lib/mailmanager/list.rb, line 147
def request_email
  result = lib.request_email(self)
  result['return']
end
subject_prefix() click to toggle source

Returns the list's subject prefix

# File lib/mailmanager/list.rb, line 165
def subject_prefix
  result = lib.subject_prefix(self)
  result['return']
end
subject_prefix=(sp) click to toggle source

Sets the list's subject prefix to a new value. Remember to leave a space at the end (assuming you want one, and you probably do).

# File lib/mailmanager/list.rb, line 172
def subject_prefix=(sp)
  result = lib.set_subject_prefix(self, sp)
  result['result'].to_sym
end

Private Instance Methods

add_member_using(method, email, name) click to toggle source
# File lib/mailmanager/list.rb, line 191
def add_member_using(method, email, name)
  if name.length > 0
    member = "#{name} <#{email}>"
  else
    member = email
  end
  result = lib.send(method, self, member)
  result['result'].to_sym
end
delete_member_using(method, email) click to toggle source
# File lib/mailmanager/list.rb, line 201
def delete_member_using(method, email)
  result = lib.send(method, self, email)
  result['result'].to_sym
end