Forum: Ruby Save an attachment file into the folder

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
D2f4861bb915581c2aca4fc9f2c8015d?d=identicon&s=25 Deepa Rajendran (deeparaj)
on 2009-02-23 12:39
Hai friends,
         I received an attachment file in a encoding format but i want
to get it as s text file.And those file want to store it in a specified
Folder.
Here the coding is:


require 'rubygems'
   require 'net/pop'
    require 'tlsmail'
    require 'net/smtp'



  BASE_DIR = "C:\Documents and Settings\mpf18.MPFD18\Desktop\attachment"
username = 'username'
password = 'password'

Net::POP3.enable_ssl(OpenSSL::SSL::VERIFY_NONE)
conn = Net::POP3.new('pop.gmail.com',Net::POP3.default_pop3s_port)
conn.start(username, password)

conn.each_mail do |msg|


  # Print the 'From:' header line
  #puts msg.header.split("\r\n").grep(/^From: /)
  filename=msg.header.split("\r\n").grep(/^From: /)
  puts filename
   # File.open(File.join("#{BASE_DIR}/#{filename}"),
File::CREAT|File::TRUNC|File::WRONLY) do |f|
    #     f.write(msg)
  # Put message to $stdout (by calling <<)

  puts "\nFull message:\n"
  msg.all($stdout)

 #end
end
666b4e17b4bb0e2d999037a25f65a7cb?d=identicon&s=25 Heesob Park (phasis)
on 2009-02-23 13:26
(Received via mailing list)
Hi,

2009/2/23 Deepa Rajendran <deeparaj12@gmail.com>:
>    require 'net/smtp'
>
>  # Put message to $stdout (by calling <<)
>
>  puts "\nFull message:\n"
>  msg.all($stdout)
>
>  #end
> end
I recommend you install tmail library(gem install tmail)
If you installed tmail, you can try this:

require 'net/pop'
require 'tmail'

Net::POP3.enable_ssl(OpenSSL::SSL::VERIFY_NONE)
Net::POP3.start('pop.gmail.com', 995, username, password) do |pop|
  if pop.mails.empty?
    puts 'No mail.'
  else
    pop.each_mail do |message|
      string = message.pop
      mail = TMail::Mail.parse( string )
      if mail.multipart? then
         mail.parts.each do |m|
           if m.disposition
             filename = m.disposition_param('filename')
             if filename[0,2]=='=?'
               filename.gsub!(/=\?[^\?]+\?(.)\?([^\?]+)\?=$/){$1=='B' ?
$2.unpack('m*') : $2.unpack('M*')}
             end
             puts filename
             File.open(filename,'wb') {|f|f.write(m.body)}
           end
         end
      end

    end
  end
end


Regards,
Park Heesob
D2f4861bb915581c2aca4fc9f2c8015d?d=identicon&s=25 Deepa Rajendran (deeparaj)
on 2009-02-24 07:10
Hi,

       I got the file name but I want to store that file in the
specified folder.Thanks for helping me........
This topic is locked and can not be replied to.