require 'net/smtp'
require 'open-uri'
require 'open-uri'
def send_email_with_attachment(subject, body, to_email)
user = 'mailsender@gmail.com'
pwd = 'Mail123Pa55word'
to = to_email
from = 'noreply@baliw.com'
subject = "#{subject}"
filename = "Excel_Attachment.xlsx"
filename = "xlsTemplate.xls"
filename = "xlsxTemplate.xlsx"
filename = "xlsTemplate.xls"
filename = "xlsxTemplate.xlsx"
# Read a file and encode it into base64 format
filecontent = File.binread(filename)
encodedcontent = [filecontent].pack("m") # base64
marker = "AUNIQUEMARKER"
body = <<EOF
This is a test email to send an attachement using net/smpt.
EOF
This is a test email to send an attachement using net/smpt.
EOF
# Define the main headers.
part1 = <<EOF
From: No Reply <#{from}>
To: A Test User <#{to}>
Subject: Sending Excel Attachement test123
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary = #{marker}
--#{marker}
EOF
part1 = <<EOF
From: No Reply <#{from}>
To: A Test User <#{to}>
Subject: Sending Excel Attachement test123
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary = #{marker}
--#{marker}
EOF
# Define the message action
part2 = <<EOF
Content-Type: text/plain
Content-Transfer-Encoding:8bit
part2 = <<EOF
Content-Type: text/plain
Content-Transfer-Encoding:8bit
#{body}
--#{marker}
EOF
--#{marker}
EOF
# Define the attachment section
part3 = <<EOF
Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; name = \"#{filename}\"
Content-Transfer-Encoding:base64
Content-Disposition: attachment; filename="#{File.basename filename}"
part3 = <<EOF
Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; name = \"#{filename}\"
Content-Transfer-Encoding:base64
Content-Disposition: attachment; filename="#{File.basename filename}"
#{encodedcontent}
--#{marker}--
EOF
--#{marker}--
EOF
message = part1 + part2 + part3
puts message
smtp = Net::SMTP.new 'smtp.gmail.com', 587
smtp.enable_starttls
smtp.start('gmail.com', user, pwd, :login)
smtp.send_message(message, from, to)
smtp.finish
end
puts message
smtp = Net::SMTP.new 'smtp.gmail.com', 587
smtp.enable_starttls
smtp.start('gmail.com', user, pwd, :login)
smtp.send_message(message, from, to)
smtp.finish
end
#send_email_with_attachment("test 123 subject w/ excel attachment", "test 123 body with excel", "baliw@gmail.com")
Comments
Post a Comment