Skip to content

BPeti/email_sender

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

EmailSender Library

EmailSender is an easy to use library to send email based on Net::SMTP. It supports the well-known encryption and authentication methods, and you can use it very easily with Gmail account.

require 'email_sender'

mailer = EmailSender.new(server: "smtp.mail.com", from: "sender@mail.com")
mailer.send(to: "receiver@mail.com", subject: "Test mail", content: "This is a test mail.")

Usage

You can specify the connection parameters to SMTP server at initialization:

# simple connection
mailer = EmailSender.new(server: "smtp.mail.com", from: "Sender Name <sender@mail.com>")

# encripted and authenticated connection
mailer = EmailSender.new(server: "smtp.mail.com", from: "Sender Name <sender@mail.com>",
                         enctype: :ssl_tls, authtype: :plain, username: "user.name", password: "secret")

Easier way to using Gmail account:

# minimal configuration
mailer = EmailSender.new_gmail(username: "user.name", password: "secret")
mailer = EmailSender.new_gmail(from: "user.name", password: "secret")

# with full sender name
mailer = EmailSender.new_gmail(from: "Sender Name <user.name@gmail.com>", password: "secret")

# with another sender email address and another domain (not gmail.com) account
mailer = EmailSender.new_gmail(from: "Sender Name <sender@othermail.com>",
                               username: "user.name@company.com", password: "secret")

You can modify easily the parameters of mailer object:

mailer = EmailSender.new(server: "smtp.mail.com", from: "sender@mail.com")

# modify parameters
mailer.renew(server: "smtp.mail.com", from: "Sender Name <sender@mail.com>")

# modify parameters to a Gmail account
mailer.renew_gmail(from: "Sender Name <user.name@gmail.com>", password: "secret")

Send the mail to the :to, :cc and :bcc addresses with attachment:

mailer.send(to: "Receiver Name <receiver@mail.com>", subject: "Test mail",
            content: "This is a test mail.", attachment: "/path/to/file")

The :to, :cc and :bcc keys accept an email address array so you can send the message to many receivers. And the :attachment key accepts also file path array so you can attach more file:

mailer.send(to: ["Receiver Name 1 <receiver1@mail.com>", "Receiver Name 2 <receiver2@mail.com>"],
            cc: ["Receiver Name 3 <receiver3@mail.com>", "Receiver Name 4 <receiver4@mail.com>"],
            bcc: [receiver5@mail.com, "receiver6@mail.com", "receiver7@mail.com"],
            subject: "Test mail", content: "This is a test mail.",
            attachment: ["/path/to/file1", "/path/to/file2", "/path/to/file3"])

If there are not specified the :to, :cc and :bcc addresses on sending use the initialized default addresses:

# create a mailer with default addresses
mailer = EmailSender.new(server: "smtp.mail.com", from: "Sender Name <user.name@gmail.com>",
                         to: "Receiver Name 1 <receiver1@mail.com>",
                         cc: ["Receiver Name 2 <receiver2@mail.com>", "Receiver Name 3 <receiver3@mail.com>"])

# send email to the default addresses
mailer.send(subject: "Test mail", content: "This is a test mail.")

You can specify the content type which is +‘text/plain’+ by default:

mailer.send(to: "Receiver Name <receiver@mail.com>", subject: "The Ruby programming language",
            content: "<img src='http://upload.wikimedia.org/wikipedia/commons/7/73/Ruby_logo.svg'/>",
            conttype: "text/html")

The library has implemented threadsafe and support the character encoded messages.

Installation

gem install email_sender

Requirements

ruby1.9.1 or greater

License

Copyright © 2012 Peter Bakonyi

EmailSender is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License (LGPL) version 3.0 as published by the Free Software Foundation.

About

Easy to use Ruby library to send email

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages