gmailer 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. data/CHANGES +4 -0
  2. data/README +11 -1
  3. data/gmailer.rb +56 -37
  4. metadata +2 -2
data/CHANGES CHANGED
@@ -1,3 +1,7 @@
1
+ == 0.0.8 - 3-Sep-2005
2
+ - rename is_connected method
3
+ - add send mail as feature
4
+
1
5
  == 0.0.7 - 30-Aug-2005
2
6
  - add mark read & unread method
3
7
  - add spam trash in & out method
data/README CHANGED
@@ -50,12 +50,22 @@ Or even
50
50
  Or shorter
51
51
 
52
52
  GMailer.connect(name, pwd) do |g|
53
+ # 'From' default gmail.com account
53
54
  g.send(
54
55
  :to => "who@what.com, my_friend@his_company.com, god@heaven.org"
55
56
  :cc => "foo@bar.com"
56
57
  :subject => "Hello There!",
57
58
  :body => "Hi...\n\nBlah blah blah~...",
58
59
  :files => ["./my_pic.jpg", "./my_cv.txt"])
60
+
61
+ # multiple verified email addresses and choose one 'From:' email address
62
+ g.send(
63
+ :from => "verified@email.com",
64
+ :to => "who@what.com, my_friend@his_company.com, god@heaven.org"
65
+ :cc => "foo@bar.com"
66
+ :subject => "Hello There!",
67
+ :body => "Hi...\n\nBlah blah blah~...",
68
+ :files => ["./my_pic.jpg", "./my_cv.txt"])
59
69
  end
60
70
 
61
71
 
@@ -210,7 +220,7 @@ connect(connet hash)
210
220
  e.g. connect(:username=>'user',:password=>'pass',:proxy_host=>'proxy-host',
211
221
  :proxy_port=>8080,:proxy_user=>'proxy_user',:proxy_pass=>'proxy_pass')
212
222
 
213
- is_connected()
223
+ connected?
214
224
  To check if connected.
215
225
 
216
226
  fetch(action hash)
data/gmailer.rb CHANGED
@@ -50,7 +50,7 @@ GM_ACT_DELTRASH = 21 # delete trash message, forever
50
50
 
51
51
  class GMailer
52
52
 
53
- VERSION = "0.0.7"
53
+ VERSION = "0.0.8"
54
54
 
55
55
  @cookie_str
56
56
  @login
@@ -231,7 +231,7 @@ class GMailer
231
231
  # return bool
232
232
  # desc See if it is connected to GMail.
233
233
  #
234
- def is_connected()
234
+ def connected?
235
235
  !@cookie_str.empty?
236
236
  end
237
237
 
@@ -241,11 +241,11 @@ class GMailer
241
241
  # desc Fetch contents by URL query.
242
242
  #
243
243
  def __fetch(query)
244
- if is_connected()
244
+ if connected?
245
245
  Debugger::say("Start fetching query: " + query)
246
246
  query += "&zv=" + (rand(2000)*2147483.648).to_i.to_s
247
247
  np = Net::HTTP::Proxy(@proxy_host,@proxy_port,@proxy_user,@proxy_pass).new(GM_LNK_HOST, 80)
248
- # np.set_debug_output($stderr)
248
+ # np.set_debug_output($stderr)
249
249
  inbox = ''
250
250
  np.start { |http|
251
251
  response = http.get(GM_LNK_GMAIL + "?" + query,{'Cookie' => @cookie_str,'User-agent' => GM_USER_AGENT })
@@ -299,7 +299,7 @@ class GMailer
299
299
  #
300
300
  def fetch_box(type, box, pos)
301
301
 
302
- if is_connected()
302
+ if connected?
303
303
  case type
304
304
  when GM_STANDARD
305
305
  q = "search=" + box.downcase + "&view=tl&start=" + pos.to_s
@@ -398,7 +398,7 @@ class GMailer
398
398
  #
399
399
  def attachments_of(convs, path)
400
400
 
401
- if is_connected()
401
+ if connected?
402
402
  if (convs.class != Array)
403
403
  convs = [convs] # array wrapper
404
404
  end
@@ -428,7 +428,7 @@ class GMailer
428
428
  #
429
429
  def zip_attachments_of(convs, path)
430
430
 
431
- if is_connected()
431
+ if connected?
432
432
  if (convs.class != Array)
433
433
  convs = [convs] # array wrapper
434
434
  end
@@ -457,7 +457,7 @@ class GMailer
457
457
  #
458
458
  def attachment(attid, msgid, filename, zipped=false)
459
459
 
460
- if is_connected()
460
+ if connected?
461
461
  Debugger::say("Start getting attachment...")
462
462
 
463
463
  if !zipped
@@ -486,7 +486,7 @@ class GMailer
486
486
  # desc get label lists
487
487
  #
488
488
  def labels()
489
- if is_connected()
489
+ if connected?
490
490
  fetch(:standard=>"inbox") {|s| s.label_list }
491
491
  else
492
492
  nil
@@ -518,7 +518,7 @@ class GMailer
518
518
  # desc create label
519
519
  #
520
520
  def create_label(label)
521
- if is_connected()
521
+ if connected?
522
522
  perform_action(GM_ACT_CREATELABEL, '', validate_label(label))
523
523
  else
524
524
  false
@@ -531,7 +531,7 @@ class GMailer
531
531
  # desc create label
532
532
  #
533
533
  def delete_label(label)
534
- if is_connected()
534
+ if connected?
535
535
  perform_action(GM_ACT_DELETELABEL, '', validate_label(label))
536
536
  else
537
537
  false
@@ -545,7 +545,7 @@ class GMailer
545
545
  # desc create label
546
546
  #
547
547
  def rename_label(old_label,new_label)
548
- if is_connected()
548
+ if connected?
549
549
  perform_action(GM_ACT_RENAMELABEL, '',
550
550
  validate_label(old_label) +'^' + validate_label(new_label))
551
551
  else
@@ -560,7 +560,7 @@ class GMailer
560
560
  # desc apply label to message
561
561
  #
562
562
  def apply_label(id,label)
563
- if is_connected()
563
+ if connected?
564
564
  perform_action(GM_ACT_APPLYLABEL, id, validate_label(label))
565
565
  else
566
566
  false
@@ -574,7 +574,7 @@ class GMailer
574
574
  # desc remove label from message
575
575
  #
576
576
  def remove_label(id,label)
577
- if is_connected()
577
+ if connected?
578
578
  perform_action(GM_ACT_REMOVELABEL, id, validate_label(label))
579
579
  else
580
580
  false
@@ -587,7 +587,7 @@ class GMailer
587
587
  # desc remove label from message
588
588
  #
589
589
  def update_preference(hash_param)
590
- if is_connected()
590
+ if connected?
591
591
  args = {}
592
592
  hash_param.keys.each do |k|
593
593
  case k
@@ -622,7 +622,7 @@ class GMailer
622
622
  # desc apply star to a message
623
623
  #
624
624
  def apply_star(msgid)
625
- if is_connected()
625
+ if connected?
626
626
  perform_action(GM_ACT_STAR,msgid, '')
627
627
  else
628
628
  false
@@ -635,7 +635,7 @@ class GMailer
635
635
  # desc remove star from a message
636
636
  #
637
637
  def remove_star(msgid)
638
- if is_connected()
638
+ if connected?
639
639
  perform_action(GM_ACT_UNSTAR,msgid, '')
640
640
  else
641
641
  false
@@ -648,7 +648,7 @@ class GMailer
648
648
  # desc report a message as spam
649
649
  #
650
650
  def report_spam(msgid)
651
- if is_connected()
651
+ if connected?
652
652
  perform_action(GM_ACT_SPAM,msgid, '')
653
653
  else
654
654
  false
@@ -661,7 +661,7 @@ class GMailer
661
661
  # desc report a message as not spam
662
662
  #
663
663
  def not_spam(msgid)
664
- if is_connected()
664
+ if connected?
665
665
  perform_action(GM_ACT_UNSPAM,msgid, '')
666
666
  else
667
667
  false
@@ -674,7 +674,7 @@ class GMailer
674
674
  # desc delete a spam message forever
675
675
  #
676
676
  def delete_spam(msgid)
677
- if is_connected()
677
+ if connected?
678
678
  perform_action(GM_ACT_DELSPAM,msgid, '')
679
679
  else
680
680
  false
@@ -687,7 +687,7 @@ class GMailer
687
687
  # desc mark a message as read
688
688
  #
689
689
  def mark_read(msgid)
690
- if is_connected()
690
+ if connected?
691
691
  perform_action(GM_ACT_READ,msgid, '')
692
692
  else
693
693
  false
@@ -700,7 +700,7 @@ class GMailer
700
700
  # desc mark a message as unread
701
701
  #
702
702
  def mark_unread(msgid)
703
- if is_connected()
703
+ if connected?
704
704
  perform_action(GM_ACT_UNREAD,msgid, '')
705
705
  else
706
706
  false
@@ -713,7 +713,7 @@ class GMailer
713
713
  # desc move a message to trash
714
714
  #
715
715
  def trash_in(msgid)
716
- if is_connected()
716
+ if connected?
717
717
  perform_action(GM_ACT_TRASH,msgid, '')
718
718
  else
719
719
  false
@@ -726,7 +726,7 @@ class GMailer
726
726
  # desc move a message from trash to inbox
727
727
  #
728
728
  def trash_out(msgid)
729
- if is_connected()
729
+ if connected?
730
730
  perform_action(GM_ACT_UNTRASH,msgid, '')
731
731
  else
732
732
  false
@@ -739,7 +739,7 @@ class GMailer
739
739
  # desc delete a trash message forever
740
740
  #
741
741
  def delete_trash(msgid)
742
- if is_connected()
742
+ if connected?
743
743
  perform_action(GM_ACT_DELTRASH,msgid, '')
744
744
  else
745
745
  false
@@ -752,7 +752,7 @@ class GMailer
752
752
  # desc delete a message forever
753
753
  #
754
754
  def delete_message(msgid)
755
- if is_connected()
755
+ if connected?
756
756
  perform_action(GM_ACT_DELFOREVER,msgid, '')
757
757
  else
758
758
  false
@@ -765,7 +765,7 @@ class GMailer
765
765
  # desc archive a message
766
766
  #
767
767
  def archive(msgid)
768
- if is_connected()
768
+ if connected?
769
769
  perform_action(GM_ACT_ARCHIVE,msgid, '')
770
770
  else
771
771
  false
@@ -778,7 +778,7 @@ class GMailer
778
778
  # desc archive a message
779
779
  #
780
780
  def unarchive(msgid)
781
- if is_connected()
781
+ if connected?
782
782
  perform_action(GM_ACT_INBOX,msgid, '')
783
783
  else
784
784
  false
@@ -790,7 +790,7 @@ class GMailer
790
790
  # desc get preferences
791
791
  #
792
792
  def preference()
793
- if is_connected()
793
+ if connected?
794
794
  fetch(:preference=>"all").preference
795
795
  else
796
796
  nil
@@ -802,7 +802,7 @@ class GMailer
802
802
  # desc get message lists
803
803
  #
804
804
  def messages(hash_param)
805
- if is_connected()
805
+ if connected?
806
806
  fetch(hash_param) {|s| s.box }
807
807
  else
808
808
  nil
@@ -816,7 +816,7 @@ class GMailer
816
816
  #
817
817
  def dump(query)
818
818
  page = ''
819
- if is_connected()
819
+ if connected?
820
820
  Debugger::say("Dumping...")
821
821
  query += "&zv=" + (rand(2000)*2147483.648).to_i.to_s
822
822
  np = Net::HTTP::Proxy(@proxy_host,@proxy_port,@proxy_user,@proxy_pass).new(GM_LNK_HOST, 80)
@@ -852,6 +852,7 @@ class GMailer
852
852
  def send(*param)
853
853
  if param.length==1 && param[0].class==Hash
854
854
  param = param[0]
855
+ from = param[:from] || ''
855
856
  to = param[:to] || ''
856
857
  subject = param[:subject] || ''
857
858
  body = param[:body] || ''
@@ -864,12 +865,23 @@ class GMailer
864
865
  draft_id = param[:draft_id] || ''
865
866
  elsif param.length==10
866
867
  to, subject, body, cc, bcc, msg_id, thread_id, files, draft, draft_id = param
868
+ elsif param.length==11
869
+ from, to, subject, body, cc, bcc, msg_id, thread_id, files, draft, draft_id = param
867
870
  else
868
871
  raise ArgumentError, 'Invalid argument'
869
872
  end
870
873
 
871
- if is_connected()
874
+ if connected?
872
875
  Debugger::say("Starting to send mail...")
876
+ other_emails = fetch(:preference=>"all").other_emails
877
+ if other_emails.length>0
878
+ other_emails.each {|v|
879
+ from = v['email'] if from=='' && v['default']
880
+ }
881
+ from = @login + 'gmail.com' if from==''
882
+ else
883
+ from = nil
884
+ end
873
885
 
874
886
  postdata = {}
875
887
  if draft
@@ -884,6 +896,7 @@ class GMailer
884
896
  postdata["th"] = thread_id
885
897
  end
886
898
  postdata["msgbody"] = stripslashes(body)
899
+ postdata["from"] = stripslashes(from) if from
887
900
  postdata["to"] = stripslashes(to)
888
901
  postdata["subject"] = stripslashes(subject)
889
902
  postdata["cc"] = stripslashes(cc)
@@ -920,7 +933,7 @@ class GMailer
920
933
 
921
934
  np = Net::HTTP::Proxy(@proxy_host,@proxy_port,@proxy_user,@proxy_pass).new(GM_LNK_HOST, 80)
922
935
  response = nil
923
- # np.set_debug_output($stderr)
936
+ # np.set_debug_output($stderr)
924
937
  np.start { |http|
925
938
  response = http.post(GM_LNK_GMAIL, postdata,{'Cookie' => @cookie_str,'User-agent' => GM_USER_AGENT,'Content-type' => 'multipart/form-data; boundary=' + boundary } )
926
939
  }
@@ -942,7 +955,7 @@ class GMailer
942
955
  #
943
956
  def perform_action(act, id, para)
944
957
 
945
- if is_connected()
958
+ if connected?
946
959
  Debugger::say("Start performing action...")
947
960
 
948
961
  if (act == GM_ACT_DELFOREVER)
@@ -987,7 +1000,7 @@ class GMailer
987
1000
  end
988
1001
 
989
1002
  np = Net::HTTP::Proxy(@proxy_host,@proxy_port,@proxy_user,@proxy_pass).new(GM_LNK_HOST, 80)
990
- # np.set_debug_output($stderr)
1003
+ # np.set_debug_output($stderr)
991
1004
  np.start { |http|
992
1005
  response = http.post(link, postdata,{'Cookie' => @cookie_str,'User-agent' => GM_USER_AGENT} )
993
1006
  result = response.body
@@ -1068,7 +1081,7 @@ class GMailer
1068
1081
  #
1069
1082
  def invite(email)
1070
1083
 
1071
- if is_connected()
1084
+ if connected?
1072
1085
  Debugger::say("Start sending invite...")
1073
1086
 
1074
1087
  postdata = "act=ii&em=" + URI.escape(email)
@@ -1170,7 +1183,7 @@ class GMailSnapshot
1170
1183
  attr_reader :std_box_new, :have_invit, :label_list, :label_new
1171
1184
  attr_reader :box_name, :box_total, :box_pos, :box
1172
1185
  attr_reader :conv_title, :conv_total, :conv_id, :conv_labels, :conv_starred, :conv
1173
- attr_reader :contacts
1186
+ attr_reader :contacts, :other_emails
1174
1187
 
1175
1188
  def initialize(type, raw, charset='UTF-8')
1176
1189
 
@@ -1389,6 +1402,12 @@ class GMailSnapshot
1389
1402
  @label_list.push(v[0])
1390
1403
  @label_total.push(v[1])
1391
1404
  }
1405
+ @other_emails = []
1406
+ if raw["cfs"]
1407
+ raw["cfs"][1].each {|v|
1408
+ @other_emails.push({"name"=>decode(v[0]),"email"=>v[1],"default"=>(v[2]==1)})
1409
+ }
1410
+ end
1392
1411
  @filter = []
1393
1412
  @filter_rules = []
1394
1413
  raw["fi"][1].each { |fi|
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.10
3
3
  specification_version: 1
4
4
  name: gmailer
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.0.7
7
- date: 2005-08-30
6
+ version: 0.0.8
7
+ date: 2005-09-03
8
8
  summary: "An class interface of the Google's webmail service"
9
9
  require_paths:
10
10
  - ''