Files
gtav-src/tools_ng/techart/script/Ruby/Global/email/email.rb
T
2025-09-29 00:52:08 +02:00

125 lines
2.7 KiB
Ruby
Executable File

# File:: email.rb
# Description:: Simple .Net Email sending functions.
#
# Author:: Mark Harrison-Ball <mark.harrison-ball@rockstargames.com>
# Date:: 28 May 2013
#
include System::Net::Mail
include System::IO
# Set Img src to Content ID path
def setContentID(contentID)
# cid:'#{src}'
return "cid:#{contentID}"
end
# Generate s content ID
def getContentID(path)
return System::IO::Path.GetFileName(path).Replace(".", "")
end
# Update HTML text to refernce Image COntetns and Embed our images
# i.e
# <img src='x:/temp/HAO_MCS_1_rotation.png' alt='logo' />
def collectEmbedImages(htmlContent)
# lets split our content by line and scan each line
cidlist = Array.new()
newhtmlContent = htmlContent.gsub(/(.+img\ssrc=).(.+).(\salt=.+)/){
|m|
# Generate a COntetn ID
contID = getContentID($2)
cidlist << {:Path => $2, :ID => contID}
# Replace image Path with our CiontentID
m = "#{$1}#{setContentID(contID)}#{$3}"
}
return cidlist, newhtmlContent
end
# Send our Email
def send_email(from, to_list, subject, message, localhost = "smtp.rockstar.t2.corp")
begin
mail = System::Net::Mail::MailMessage.new()
@FromAddress = System::Net::Mail::MailAddress.new(from)
mail.From = @FromAddress
if to_list.is_a?(Array) then
to_list.each do |addss|
mail.To.Add(addss.to_s)
end
else
mail.To.Add(to_list)
end
# Check the html content to see if we have any images we wh to embed
contentImgList, newhtmlContent = collectEmbedImages(message)
# Create our Html Message
htmlView = System::Net::Mail::AlternateView.CreateAlternateViewFromString(newhtmlContent, nil, "text/html")
# Add any embedded images
if contentImgList then
contentImgList.each do |img|
hmlImage = System::Net::Mail::LinkedResource.new(img[:Path])
hmlImage.ContentId = img[:ID] # filename ID
htmlView.LinkedResources.Add(hmlImage)
end
end
# Build our Email
mail.Subject = subject
mail.AlternateViews.Add(htmlView)
# Create email Client
smtp = System::Net::Mail::SmtpClient.new(localhost)
#puts 'test email'
smtp.Send(mail)
rescue => e
raise "Exception occured: #{e.message} in #{e.backtrace} "
end
end
=begin
def send_email(from, to_list, subject, message)
msgstr = <<END_OF_MESSAGE
From: <#{from}>
To: <#{to_list.is_a?(Array) ? to_list.join(', ') : to_list}>
MIME-Version: 1.0
Content-type: text/html
Subject: #{subject}
#{message}
END_OF_MESSAGE
begin
Net::SMTP.start(@localhost, 25) do |smtp|
smtp.send_message msgstr,
from,
to_list
end
rescue => e
raise "Exception occured: #{e} "
end
end
=end