Class: Mail::Tester::MailTester

Inherits:
Object
  • Object
show all
Defined in:
lib/mail_tester.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(email, password, realname = "") ⇒ MailTester

Returns a new instance of MailTester.



11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/mail_tester.rb', line 11

def initialize(email, password, realname="")
  @email = email
  @password = password
  @realname = realname

  @user, @domain = @email.split('@')
  @pop3_hostname = 'pop3.' + @domain
  @smtp_hostname = 'smtp.' + @domain

  @pop3_server = Net::POP3.new(@pop3_hostname)
  @smtp_server = Net::SMTP.start(@smtp_hostname, 587)
end

Instance Attribute Details

#domainObject (readonly)

Returns the value of attribute domain.



9
10
11
# File 'lib/mail_tester.rb', line 9

def domain
  @domain
end

#emailObject (readonly)

Returns the value of attribute email.



9
10
11
# File 'lib/mail_tester.rb', line 9

def email
  @email
end

#passwordObject (readonly)

Returns the value of attribute password.



9
10
11
# File 'lib/mail_tester.rb', line 9

def password
  @password
end

#pop3_hostnameObject (readonly)

Returns the value of attribute pop3_hostname.



9
10
11
# File 'lib/mail_tester.rb', line 9

def pop3_hostname
  @pop3_hostname
end

#pop3_serverObject (readonly)

Returns the value of attribute pop3_server.



9
10
11
# File 'lib/mail_tester.rb', line 9

def pop3_server
  @pop3_server
end

#smtp_hostnameObject (readonly)

Returns the value of attribute smtp_hostname.



9
10
11
# File 'lib/mail_tester.rb', line 9

def smtp_hostname
  @smtp_hostname
end

#smtp_serverObject (readonly)

Returns the value of attribute smtp_server.



9
10
11
# File 'lib/mail_tester.rb', line 9

def smtp_server
  @smtp_server
end

#userObject (readonly)

Returns the value of attribute user.



9
10
11
# File 'lib/mail_tester.rb', line 9

def user
  @user
end

Instance Method Details

#check_mailObject



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/mail_tester.rb', line 24

def check_mail
  result = ''
  @pop3_server.start(@email, @password)
  if @pop3_server.mails.empty?
    result += 'No mail.'
  else
    i = 0
    @pop3_server.each_mail do |m|
      i += 1
    end
    result += "#{@pop3_server.mails.size} mails popped."
  end
  @pop3_server.finish()

  return [result, i]
end

#check_smtpObject



82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'lib/mail_tester.rb', line 82

def check_smtp
  message_id = 'Message-Id: <' + DateTime::now.to_s + '@' + @email + '>'

  msgstr =  ''
  msgstr += "From: #{@realname} <#{@email}>\n"
  msgstr += "To: #{@realname} <#{@email}>\n"
  msgstr += "Subject: test message\n"
  msgstr += "Date: Sat, 23 Jun 2020 16:26:43 +0900\n"
  msgstr += "#{message_id}\n"
  msgstr += "\n"
  msgstr += "This is a test message."

  @smtp_server.send_message msgstr, @email, @email
  return ['Mail sent', message_id]
end

#delete_mail(search) ⇒ Object



61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/mail_tester.rb', line 61

def delete_mail(search)
  result = 0
  @pop3_server.start(@email, @password)
  if @pop3_server.mails.empty?
    result = 0
  else
    pattern = Regexp.new(search.gsub(/[:+]/, '.'))
    @pop3_server.each_mail do |m|
      result += 1
      if m.header() =~ pattern
        m.delete
        @pop3_server.finish()
        return 1
      end
    end
  end
  @pop3_server.finish()

  return -1
end

#search_mail(search) ⇒ Object



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/mail_tester.rb', line 41

def search_mail(search)
  result = 0
  @pop3_server.start(@email, @password)
  if @pop3_server.mails.empty?
    result = 0
  else
    pattern = Regexp.new(search.gsub(/[:+]/, '.'))
    @pop3_server.each_mail do |m|
      result += 1
      if m.header() =~ pattern
        @pop3_server.finish()
        return result
      end
    end
  end
  @pop3_server.finish()

  return -1
end