how do you add attachments in tmail

A

Adam Akhtar

hi im trying to create an email in tmail which i will then send off via
smtp but how do i go around specifying files to be attached in it. i
looked on tmail but couldnt find anything of the sort
 
A

Adam Akhtar

anyone? Ive been googling like mad but cant find anything. It must be
able to support this.
 
R

Reid Thompson

Adam said:
anyone? Ive been googling like mad but cant find anything. It must be
able to support this.


may be of use

http://maanpaa.blogspot.com/2006/08/ruby-email-with-authentication-and.html

Ville Maanpaa on weekdays

thoughts on coding, Ruby etc.
Tuesday, August 22, 2006
Ruby email with authentication and attachments

#!/usr/bin/ruby
#
# smtp_auth.rb
# Ville Maanpaa - email with authentication including attachments
# This is the Linux version - on windows add gems and use tmail in Rails directory
#
require 'base64'
require 'tmail'
require 'net/smtp'
require 'getopts'


def usage( status, msg = nil )
output = (status == 0 ? $stdout : $stderr)
output.puts msg if msg
output.print(<
Usage: #{File.basename $0} [-s ] [-f ]
--subject="release notes" --tolist="toListProd.txt" --data2="errors"
--attach1="ReleaseNotes_Servers.doc" --attach2="ReleaseNotes_Clients.doc"
--attach3="ReleaseNotes_Web.

-h,--host=addr SMTP server address. (default=imap.nexatech.com)
-s,--subject=sbj subject of the message. (default=(none))
-f,--from=from from address. (default=usernmae)

EOS
exit status
end

def main
attachments=[]
to=[]
ARGV.each do |a|
if a.index("attach")
attachments << a.split("=")[1]
elsif a.index("@")
to << a
end
end
ARGV.delete_if{|x|x.index("attach")}
getopts(nil, 'from:', 'f:', 'tolist:', 'subject:', 'data2:')
smtphost = $OPT_host || $OPT_h || 'smtp.server.com'
subject = $OPT_subject || $OPT_s
data2=""
if $OPT_data2
if FileTest.exists?($OPT_data2)
File.open($OPT_data2, "r") do |f|
f.each_line { |line| data2 << line }
end
end
end

tolist = $OPT_tolist || 'tolist.txt'
from = $OPT_from || $OPT_f || '(e-mail address removed)'
usage(1, 'Sender address not given') unless from
if FileTest.exists?(tolist)
File.open(tolist, "r") do |f|
f.each_line { |line| to << line }
end
end
usage(1, 'Receipt address(es) not given') if to.empty?
send_mail smtphost, setup_mail(from, to, subject, data2, attachments)
end

def setup_mail( from, to, subject, body, attachments)
mail = TMail::Mail.new
mail.date = Time.now
mail.from = from
if to.class.to_s.index("Array") #this is where we read toList.txt file
toarr=[]
bcc=[]
cc=[]
to.each do |addr|
if addr.index("#")
#this is a comment
elsif addr.index("bcc:")
bcc << addr[4..-1]
mail.bcc=bcc
elsif addr.index("cc:")
cc << addr[3..-1]
mail.cc=cc
else
toarr<
mail.to=toarr
end
end
else
mail.to = to
end
mail.subject = subject if subject
mail.mime_version = '1.0'
mail.set_content_type 'multipart', 'mixed'
mailpart1=TMail::Mail.new
mailpart1.body = body
mailpart1.set_content_type 'text', 'plain'
mail.parts << mailpart1
attachments.each do |att|
if FileTest.exists?(att)
content=IO::readlines(att, nil)
mailpart=TMail::Mail.new
mailpart.body = Base64.encode64(content.to_s)
mailpart.transfer_encoding="Base64"
mailpart['Content-Disposition'] = "attachment; filename=#{att}"
mail.parts << mailpart
end
end
mail
end

def send_mail( host, mail )
msg = mail.encoded
$stderr.print msg if $DEBUG

smtp = Net::SMTP.new(host, 25)
smtp.set_debug_output $stderr if $DEBUG
smtp.start('your.serve.com', 'username', 'password', :login) { #CHANGE THESE TO
FIT YOUR ENV
smtp.send_mail msg, mail.from_address, mail.destinations
}
end

main

posted by Ville at 11:21 AM
0 Comments:

Post a Comment

<< Home
About Me

Name: Ville
Location: United States Minor Outlying Islands

Blogging on Programming and Dana Point for now

View my complete profile
Previous Posts

* Locate Technology on the Map
* Ruby script to send email with authentication and ...
* Ajax
* programming - GUI toolkits

Powered by Blogger
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,768
Messages
2,569,574
Members
45,051
Latest member
CarleyMcCr

Latest Threads

Top