From: Kazuhiro NISHIYAMA Date: 2000-09-13T18:13:00+09:00 Subject: [ruby-list:24945] Re: HTML to MAIL Makoto Ozawa wrote: > 指定したURLのHTMLファイルをとってきて、テキストに変換し、指定したメールア > ドレス宛てに送るCGIをRubyで書きました。 > > http://www.musubime.com/i/ > http://www.musubime.com/i/http2mail.txt (ソース) > > 途中で、HTMLファイルとテキストファイルを作ってしまうのですが、作らないで済 > む方法はあるのでしょうか? > 他にも速度面など色々と問題があるかもしれませんが、ご教授下されば幸いです。 つぎはぎだらけの修正になってますが、とりあえずライブラリの 中で使われているwriteを特異メソッドでごまかしたStringの オブジェクトをFileオブジェクトの代わりに使うという方法で なんとかできそうです。 #!/usr/bin/ruby require "html-parser" require "formatter" require 'url-parse' require 'http-access' require "cgi-lib" require 'kconv' input = CGI.new mailstr = input["mail"] urlstr = input["url"] print "Content-type: text/html\n\n" print "" content = '' def content.write(str) self.concat str end result = '' def result.write(str) self.concat str end begin url = URL.new(urlstr) h = HTTPAccess.new(url.netloc) h.request_get(url.path) # file = File.open("result.html","w") # h.get_data() {|data| file.write(data)} h.get_data() {|data| content.concat data} # file.close rescue print "URLが間違っています。
" print '* 戻る。' print "\n" exit end #def htmltest(data) def htmltest(data, result) # file = File.open("result.txt","w") w = DumbWriter.new(result) f = AbstractFormatter.new(w) p = HTMLParser.new(f) p.feed(data) p.close # file.close end #fp = open('result.html', 'r') #data = fp.read() #fp.close #htmltest(content) htmltest(content, result) #send = open("| /usr/sbin/sendmail -t","w") send = File.open("result.txt","w") send.print 'To: ', mailstr, "\n" send.print 'Subject: ', urlstr, "\n" send.print 'Reply-To: ozawa@musubime.com', "\n" send.print 'Content-Type: text/plain; charset=iso-2022-jp', "\n\n" #result = File.open("result.txt","r") #data = result.read() #for line in data for line in result send.print Kconv::tojis(line) end #result.close send.close print "[#{mailstr}]に[#{urlstr}]を送りました。
" print <他にも送る。 EOF --- ZnZ(ゼット エヌ ゼット) 西山和広(Kazuhiro Nishiyama) mailto:zn@mbf.nifty.com