Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

net-smtp-proxy

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

net-smtp-proxy

  • 2.0.0
  • Rubygems
  • Socket score

Version published
Maintainers
1
Created
Source

net-smtp-proxy

Proxy support for Ruby's Net::SMTP library.

Installation

gem install net-smtp-proxy

or put it in your Gemfile:

gem 'net-smtp-proxy'

Once it's available in your project, require it like so:

require 'net/smtp/proxy'

What is this Thing?

This gem allows you to connect to an SMTP server by way of an HTTP proxy. Why would you want to do that? I'm sure a number of use-cases exist, but I specifically needed to connect to the Gmail SMTP relay service in order to send an email from a company-wide alias. Normally, Gmail requires you to provide the credentials for the sender's account when sending an email. The relay service however replaces the usual password authentication with IP whitelisting. You provide Google with a static IP address that all your SMTP requests will come from. The SMTP relay service also allows you to send email from company-wide email aliases, i.e. accounts that don't have a login. In our case, we wanted to send an email from the Platform Engineering Team as opposed to one specific member of that team. We already had Squid set up as a reverse proxy with a static IP, so we whitelisted the IP with Google and wrote this gem to send SMTP requests through the proxy.

Usage

Instantiate an instance of the Proxy class and use it to make SMTP requests:

address = 'smtp-relay.gmail.com'
port = 587
proxy_address = 'http://myproxy.mydomain.com'
proxy_port = 1234

proxy = Net::SMTP::Proxy.new(address, port, proxy_address, proxy_port)

proxy.start do |smtp|
  smtp.helo('mydomain.com')
end

You can also use the .start method to accomplish the same thing:

Net::SMTP::Proxy.start(address, port, proxy_address, proxy_port) do |smtp|
  smtp.helo('mydomain.com')
end

Integration with the Mail Gem

The DeliveryMethod class provides an easy way to integrate with the Mail gem. Simply pass the class in as the delivery method, providing the same options hash you would pass to the SMTP delivery method (plus the proxy options):

Mail.deliver do
  delivery_method Net::SMTP::Proxy::DeliveryMethod, {
    address: address,
    port: port,
    proxy_address: proxy_address,
    proxy_port: proxy_port,
    domain: 'mydomain.com'
  }

  from    'from@mydomain.com'
  to      'to@mydomain.com'
  subject 'Mail is cool'
  body    "Look ma, I'm sending email!"
end

License

Licensed under the MIT license. See LICENSE for details.

Authors

FAQs

Package last updated on 09 Oct 2018

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc