# Mailing error in Rails 2.3.2

**URL:** <https://www.ruby-forum.com/t/mailing-error-in-rails-2-3-2/226038>\
**Category:** Rails\
**Created:** [April 9, 2009, 3:10pm UTC](https://www.ruby-forum.com/t/mailing-error-in-rails-2-3-2/226038 "2009-04-09T15:10:39Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Siddu](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/43a26b/32.png) [@Siddu](https://www.ruby-forum.com/u/Siddu)\
**Post date:** [April 9, 2009, 3:10pm UTC](https://www.ruby-forum.com/t/mailing-error-in-rails-2-3-2/226038/1 "2009-04-09T15:10:39Z")

</div>

Hi,

My mails were working with the earlier version of rails ie. Rails  
2.0.2. But recently when i upgraded my environment to 2.3.2 the mails  
stopped working and gave  
“Error: End of file reached”.  
But if i send mails independent of my rails app the mailing code works  
fine.

My Environment:  
Windows Xp  
Ruby 1.8.7  
actionmailer (2.3.2)  
actionpack (2.3.2)  
activerecord (2.3.2)  
activeresource (2.3.2)  
activesupport (2.3.2)  
archive-tar-minitar (0.5.2)  
cgi\_multipart\_eof\_fix (2.5.0)  
color (1.4.0)  
dbd-odbc (0.2.4)  
dbi (0.4.0)  
deprecated (2.0.0)  
gem\_plugin (0.2.3)  
hoe (1.8.2)  
mongrel (1.1.5)  
pdf-writer (1.1.8)  
rails (2.3.2)  
rake (0.8.4)  
rubyforge (1.0.2)  
transaction-simple (1.4.0)

## Here is my test mails code:

sample\_mail.rb →

class SampleMail  
require ‘send\_email’  
def sample\_mail()  
to\_addr = ‘removed\_email\_address@domain.invalid’  
subject = ‘Mail Testing’  
body = ‘This is a mail to test the mails.’  
hsh={:to=\> to\_addr, :subject=\> subject, :body=\> body}  
SendEMail.send\_email(hsh)  
end  
end

s = SampleMail.new  
s.sample\_mail()

* * *

send\_email.rb →

#!/usr/bin/env ruby  
require ‘rubygems’  
gem ‘actionmailer’  
require ‘action\_mailer’  
require ‘openssl’  
require ‘net/smtp’

module SendEMail

@user\_name= ‘removed\_email\_address@domain.invalid’  
@domain=‘@somedomain.com’  
@password=‘password’

def SendEMail.send\_email(hsh)

raw\_attachments = []  
if hsh.has\_key?(:raw\_attachment)  
raw\_attachments.push(hsh[:raw\_attachment])  
end

mail=TMail::Mail.new  
mail.to=hsh[:to]  
mail.date=Time.now  
mail.from=@user\_name  
mail.subject=hsh[:subject]

main=mail  
main=TMail::Mail.new  
main.body = hsh[:body]  
puts main.body  
main.set\_content\_type(‘text/plain’, nil, ‘charset’=\>‘utf-8’)  
mail.parts.push(main)

for raw\_attachment in raw\_attachments  
part = TMail::Mail.new  
transfer\_encoding=raw\_attachment[:transfer\_encoding]  
body=raw\_attachment[:body]  
case (transfer\_encoding || “”).downcase  
when “base64” then  
part.body = TMail::Base64.folding\_encode(body)  
when “quoted-printable”  
part.body = [body].pack(“M\*”)  
else  
part.body = body  
end

part.transfer\_encoding = transfer\_encoding  
part.set\_content\_type(raw\_attachment[:mime\_type], nil, ‘name’ =\>  
raw\_attachment[:filename])  
part.set\_content\_disposition(“attachment”, “filename”=\>raw\_attachment  
[:filename])  
mail.parts.push(part)  
end

mail.set\_content\_type(‘multipart’, ‘mixed’)  
ActionMailer::Base.deliver(mail)

end

ActionMailer::Base.smtp\_settings = {  
:address =\> ‘[smtp.gmail.com](http://smtp.gmail.com)’,  
:domain =\> @domain,  
:authentication =\> :plain,  
:port =\> 587,  
:user\_name =\> @user\_name,  
:password =\> @password  
}

Net::SMTP.class\_eval do  
private  
def do\_start(helodomain, user, secret, authtype)  
raise IOError, ‘SMTP session already started’ if @started  
#check\_auth\_args user, secret, authtype if user or secret  
check\_auth\_args user, authtype if user or secret  
sock = timeout(@open\_timeout) { TCPSocket.open(@address, @port) }  
@socket = Net::InternetMessageIO.new(sock)  
@socket.read\_timeout = 60 #@read\_timeout  
@socket.debug\_output = STDERR #@debug\_output

check\_response(critical { recv\_response() })  
do\_helo(helodomain)

raise ‘openssl library not installed’ unless defined?(OpenSSL)  
starttls  
ssl = OpenSSL::SSL::SSLSocket.new(sock)  
ssl.sync\_close = true  
ssl.connect  
@socket = Net::InternetMessageIO.new(ssl)  
@socket.read\_timeout = 60 #@read\_timeout  
@socket.debug\_output = STDERR #@debug\_output  
do\_helo(helodomain)

authenticate user, secret, authtype if user  
@started = true  
ensure  
unless @started

# authentication failed, cancel connection.

```
 @socket.close if not @started and @socket and not @socket.closed?

```

@socket = nil  
end  
end

def do\_helo(helodomain)  
begin  
if @esmtp  
ehlo helodomain  
else  
helo helodomain  
end  
rescue Net::ProtocolError  
if @esmtp  
@esmtp = false  
@error\_occured = false  
retry  
end  
raise  
end  
end

def starttls  
getok(‘STARTTLS’)  
end

def quit  
begin  
getok(‘QUIT’)  
rescue EOFError, OpenSSL::SSL::SSLError  
end  
end  
end  
end

* * *

This code works if not included with my rails app and run through  
command prompt.  
If this code is integrated in rails app it gives me "Error: End of  
file reached "

If anyone has any idea please help…

---

<div class="post-metadata">

**Author:** ![Siddu](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/43a26b/32.png) [@Siddu](https://www.ruby-forum.com/u/Siddu)\
**Post date:** [April 9, 2009, 3:28pm UTC](https://www.ruby-forum.com/t/mailing-error-in-rails-2-3-2/226038/2 "2009-04-09T15:28:49Z")

</div>

Here is the stack trace

c:/ruby-1.8.7/lib/ruby/1.8/net/protocol.rb:135:in `sysread' c:/ruby-1.8.7/lib/ruby/1.8/net/protocol.rb:135:in`rbuf\_fill’  
c:/ruby-1.8.7/lib/ruby/1.8/timeout.rb:62:in `timeout' c:/ruby-1.8.7/lib/ruby/1.8/timeout.rb:93:in`timeout’  
c:/ruby-1.8.7/lib/ruby/1.8/net/protocol.rb:134:in `rbuf_fill' c:/ruby-1.8.7/lib/ruby/1.8/net/protocol.rb:116:in`readuntil’  
c:/ruby-1.8.7/lib/ruby/1.8/net/protocol.rb:126:in `readline' c:/ruby-1.8.7/lib/ruby/1.8/net/smtp.rb:911:in`recv\_response’  
D:/rails/india/pistachio/pistachio/app/controllers/send\_email.rb:  
111:in `do_start' c:/ruby-1.8.7/lib/ruby/1.8/net/smtp.rb:921:in`critical’  
D:/rails/india/pistachio/pistachio/app/controllers/send\_email.rb:  
111:in `do_start' c:/ruby-1.8.7/lib/ruby/1.8/net/smtp.rb:525:in`start’  
c:/ruby-1.8.7/lib/ruby/gems/1.8/gems/actionmailer-2.3.2/lib/  
action\_mailer/base.rb:681:in `perform_delivery_smtp' c:/ruby-1.8.7/lib/ruby/gems/1.8/gems/actionmailer-2.3.2/lib/ action_mailer/base.rb:523:in` **send** ’  
c:/ruby-1.8.7/lib/ruby/gems/1.8/gems/actionmailer-2.3.2/lib/  
action\_mailer/base.rb:523:in `deliver!' c:/ruby-1.8.7/lib/ruby/gems/1.8/gems/actionmailer-2.3.2/lib/ action_mailer/base.rb:429:in`deliver’  
D:/rails/india/pistachio/pistachio/app/controllers/send\_email.rb:76:in  
`send\_email’

---

<div class="post-metadata">

**Author:** ![Siddu](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/43a26b/32.png) [@Siddu](https://www.ruby-forum.com/u/Siddu)\
**Post date:** [April 10, 2009, 8:31am UTC](https://www.ruby-forum.com/t/mailing-error-in-rails-2-3-2/226038/3 "2009-04-10T08:31:03Z")

</div>

Here is the Stack trace…

c:/ruby-1.8.7/lib/ruby/1.8/net/protocol.rb:135:in `sysread' c:/ruby-1.8.7/lib/ruby/1.8/net/protocol.rb:135:in`rbuf\_fill’  
c:/ruby-1.8.7/lib/ruby/1.8/timeout.rb:62:in `timeout' c:/ruby-1.8.7/lib/ruby/1.8/timeout.rb:93:in`timeout’  
c:/ruby-1.8.7/lib/ruby/1.8/net/protocol.rb:134:in `rbuf_fill' c:/ruby-1.8.7/lib/ruby/1.8/net/protocol.rb:116:in`readuntil’  
c:/ruby-1.8.7/lib/ruby/1.8/net/protocol.rb:126:in `readline' c:/ruby-1.8.7/lib/ruby/1.8/net/smtp.rb:911:in`recv\_response’  
D:/rails/india/pistachio/pistachio/app/controllers/send\_email.rb:  
111:in `do_start' c:/ruby-1.8.7/lib/ruby/1.8/net/smtp.rb:921:in`critical’  
D:/rails/india/pistachio/pistachio/app/controllers/send\_email.rb:  
111:in `do_start' c:/ruby-1.8.7/lib/ruby/1.8/net/smtp.rb:525:in`start’  
c:/ruby-1.8.7/lib/ruby/gems/1.8/gems/actionmailer-2.3.2/lib/  
action\_mailer/base.rb:681:in `perform_delivery_smtp' c:/ruby-1.8.7/lib/ruby/gems/1.8/gems/actionmailer-2.3.2/lib/ action_mailer/base.rb:523:in` **send** ’  
c:/ruby-1.8.7/lib/ruby/gems/1.8/gems/actionmailer-2.3.2/lib/  
action\_mailer/base.rb:523:in `deliver!' c:/ruby-1.8.7/lib/ruby/gems/1.8/gems/actionmailer-2.3.2/lib/ action_mailer/base.rb:429:in`deliver’  
D:/rails/india/pistachio/pistachio/app/controllers/send\_email.rb:76:in  
`send\_email’

---

<div class="post-metadata">

**Author:** ![Siddu](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/43a26b/32.png) [@Siddu](https://www.ruby-forum.com/u/Siddu)\
**Post date:** [May 1, 2009, 4:27am UTC](https://www.ruby-forum.com/t/mailing-error-in-rails-2-3-2/226038/4 "2009-05-01T04:27:54Z")

</div>

I m facing the same problem…  
if u know the solution, kindly reply me

thanks in advance.  
shranu
