Ruby can be used to send emails by making delivery applications. Ruby also provides an email delivery tool called Action Mailer.
Ruby provides a built-in class named Net::SMTP
for SMTP that handles sending and routing emails between mail servers.
An SMTP instance includes multiple parameters that define the content, address, port number, domain, and other valuable information about an email (defined in Code - Example 02 below).
Note: SMTP allows us to write an email and define functions to perform operations as we desire. But, this is a drawback as well, as it slows down the operating speed if we start to write an email from scratch.
Let’s observe the following code example that shows how to write a simple email using SMTP:
require 'net/smtp'message = <<END_OF_MESSAGEFrom: Person A <sender@example.com>To: Person B <receiver@example.com>Subject: SMTP email in RubyDate: 8th July, 2021 Thursday 02:00 amHello Sir! This email is sent through smtp in Ruby :DEND_OF_MESSAGENet::SMTP.start('your.smtp.server', 25) do |smtp|smtp.send_message message, 'sender@example.com','receiver@example.com'end
The above code represents an HTML-based email using SMTP.
The top line states what class is required to run the code below it. The body of the code includes a message
with some headers: From,
To,
Subject
and Date.
The Net::SMTP
class includes parameters such as the server name, your.smtp.server
, and the port number. 25
is the default port number in SMTP.
The Action Mailer is a ROR component that allows sending and receiving emails, though we have to configure the component according to the project needs.
If we want to send an email in HTML format, we should include the following line of code as well:
ActionMailer::Base.default_content_type = "text/html"
If we want to send the message in plain text, we include the following line in the config file:
ActionMailer::Base.default_content_type = "text/plain"
To configure the Action Mailer in ROR, we need to include the following line of code in the environment.rb
file inside the config
folder:
config.action_mailer.delivery_method = :smtpconfig.action_mailer.smtp_settings = {address: 'example_address.com',port: 3306,domain: 'example_domain.com',user_name: '<user>',password: '<pass>',authentication: 'plain',enable_starttls_auto: true}
The first line of code above represents the delivery method of the action mailer, i.e., smtp
: Simple Mail Transfer Protocol.
The parameters inside the braces {}
specify the port number, mailing address, domain name, authentication, etc.
These parameters are in the form of hash, i.e., (key, value pair), and every parameter should have values according to your project.
Free Resources