# Trying to send an email with attachments

**URL:** <https://www.ruby-forum.com/t/trying-to-send-an-email-with-attachments/105628>\
**Category:** Ruby\
**Created:** [May 31, 2007, 9:20pm UTC](https://www.ruby-forum.com/t/trying-to-send-an-email-with-attachments/105628 "2007-05-31T21:20:59Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![grooveska](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/34f0e0/32.png) [@grooveska](https://www.ruby-forum.com/u/grooveska)\
**Post date:** [May 31, 2007, 9:20pm UTC](https://www.ruby-forum.com/t/trying-to-send-an-email-with-attachments/105628/1 "2007-05-31T21:20:59Z")

</div>

I am working on a script that will send an email with a .csv file  
attachment. I can get everything set correctly, and the email gets  
sent properly. The problem is with the attachments. This maybe a MIME  
thing instead of something wrong with my script. My script is based  
on an example from Hal F.'s The Ruby Way book. If anyone has any  
suggestions or see something I did wrong I would greatly appreciate  
it. Below is my script. Below that is what the email I receive looks  
like.

Thanks!

_ **Begin Script** _

require ‘time’  
require ‘net/smtp’  
require ‘date’

##################################################################

# This portion of the code assembles the filenames of the files

# to be attached in the email

##################################################################

time = Time.now #set time object to the current time  
month = time.month #grab the number of the month from the  
current time  
day = time.day #grab the day of the current time  
year = time.year #grab the year of the current time

month = month + 1 #to match the format of Ian’s file names

if month \< 10 #formatting  
fullmonth = “0” + month.to\_s  
else  
fullmonth = month.to\_s  
end

if day \< 10  
fullday = “0” + day.to\_s  
else  
fullday = day.to\_s  
end #end of formatting

filename1 = “pagecount-” + year.to\_s + fullmonth + fullday + “.csv”  
#assemble file name

#####################################

# Attach files and send the email

####################################

def text\_plus\_attachment (subject, body, filename)  
marker = “MIME\_boundary”  
middle = “–#{marker}\n”  
ending = “–#{middle}–\n”  
content = “Content-Type: Multipart/Related; " + “boundary=#{marker};  
" + “typw=text/plain”  
head1 = \<\<-EOF  
MIME-Version: 1.0  
#{content}  
Subject: #{subject}  
EOF  
binary = File.read(filename)  
encoded = [binary].pack(“u”) # base64 econding  
head2 = \<\<-EOF  
Content-Description: “#{filename}”  
Content-Type: text/plain; name=”#{filename}”  
Content-Transfer-Encoding: Uencode  
Content-Disposition: attachment; filename="#{filename}"

EOF

#Return

head1 + middle + body + middle + head2 + encoded + ending

end

body = \<\<EOF  
The GFIFax Monthly report is attached.  
EOF

mailtext = text\_plus\_attachment(“GFIFax Service Monthly Report”, body,  
filename1)

Net::SMTP.enable\_tls(OpenSSL::SSL::VERIFY\_NONE)  
Net::SMTP.start(‘smtp.umr.edu’, ‘25’, ‘umr.edu’, ‘removed\_email\_address@domain.invalid’,  
‘UMRf@xit1’, :plain) do |smtp|  
smtp.sendmail(mailtext, ‘removed\_email\_address@domain.invalid’, [‘removed\_email\_address@domain.invalid’])  
end

_ **End Script** _

_ **Begin Email results** _ (This is all in the body of the email  
instead of in the headers)

MIME-Version: 1.0  
Content-Type: Multipart/Related; boundary=MIME\_boundary; typw=text/  
plain  
Subject: GFIFax Service Monthly Report --MIME\_boundary The GFIFax  
Monthly report is attached.  
–MIME\_boundary  
Content-Description: “pagecount-20070631.csv”  
Content-Type: text/plain; name=“pagecount-20070631.csv”  
Content-Transfer-Encoding: Uencode  
Content-Disposition: attachment; filename=“pagecount-20070631.csv”

## M4V5N="!&87AE\<RPL+`I5<V5R240L(%!A9V5S(%-E;G0L($QI;6ET+"!/=F5R M86=E"C4W,S(P,C(Q,30L,BPU,"PP"C4W,S(P,C(Q,34L-"PU,"PP"C4W,S,T M,3<X-#8L,2PU,"PP"@H*4F5C96EV960@1F%X97,L+"P*57-E<DE$+%!A9V5S M(%)E8V5I=F5D+"!,:6UI="P@3W9E<F%G90HU-S,S-#$V,C,S+#$R+#$P,"PP M"C4W,S(P,C(Q,30L,RPQ,#`L,`HU-S,S-#$T.#@Y+#(Q.2PQ,#`L,3$Y"C4W M,S,T,38R-S$L.#@L.3DY.2PP"C4W,S(P,C(S.3(L,C`U+#DY.3DL,`HU-S,R E,#(R,SDW+#4T+#DY.3DL,`HU-S,R,#(R,SDV+#$Q+#$P,“PP”@`` ----MIME\_boundary

**End Email** ’

I hope someone can help me out!

Thanks!
