Skip to content

Instantly share code, notes, and snippets.

@netzpirat
Created March 18, 2010 23:56
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save netzpirat/337073 to your computer and use it in GitHub Desktop.
Save netzpirat/337073 to your computer and use it in GitHub Desktop.
Send email to all email addresses from a MySQL table
#!/usr/bin/env ruby
#
# Send mass emails to the users of my small private email server
# with TLS.
#
# Queries the MySQL database for my vhost users and sends an
# email with ActionMailer to them.
#
# Install dependencies with `gem install mysql actionmailer`
#
# Author: Michael Kessler aka netzpirat
#
# MIT LICENSE
#
require 'rubygems'
require 'mysql'
require 'action_mailer'
ActionMailer::Base.smtp_settings = {
:tls => true,
:address => 'mail.netzpiraten.ch',
:port => 587,
:domain => 'netzpiraten.ch',
:authentication => :plain,
:user_name => 'michi@netzpiraten.ch',
:password => '******'
}
class Mailer < ActionMailer::Base
def mail(to)
recipients to
from 'michi@netzpiraten.ch'
subject "Deine Email #{ to } bei mail.netzpiraten.ch"
body <<MAIL
Hoi #{ to.split('@').first.capitalize }
Du hast dein E-Mail Konto auf dem Mail-Server mail.netzpiraten.ch.
Falls du seit gestern Probleme hast E-Mails zu Versenden, könnte
das Problem an der lieben Swisscom liegen.
Die Swisscom hat im Kampf gegen Spam in ihrem gesamten Netzwerk den
E-Mail-Versandt über Port 25 gesperrt:
http://www.swisscom.ch/res/hilfe/sicherheit/spam25/index.htm
Desshalb wurde auf mail.netzpiraten.ch zusätzlich der Port 587
freigeschalten, wodurch das Senden von E-Mails im Swisscom Netzwerk
(Bluewin, Green) wieder möglich ist.
Du musst also einfach in deinem E-Mail Programm den SMTP Server auf
Port 587 umstellen.
Hier noch einmal die gesamten Angaben für den Mail-Server:
Posteingang
-----------
Server: mail.netzpiraten.ch
Port: 143
Typ: IMAP
Benutzername: #{ to }
Sicherheit: SSL (TLS)
Postausgang:
------------
Server: mail.netzpiraten.ch
Port: 587
Typ: SMTP
Benutzername: #{ to }
Sicherheit: SSL (TLS)
Als Alternative zum E-Mail Programm und für das Lesen von E-Mails
auf Reisen steht das Webmail zur Verfügung: https://webmail.netzpiraten.ch
Bei Problemen einfach melden...
Liebe Grüsse
Michi
(Diese Mail wurde automatisch generiert)
MAIL
end
end
begin
handler = Mysql.real_connect('localhost', 'mailer', '******', 'mail')
result = handler.query("SELECT email from users")
while row = result.fetch_row do
puts "Send mail to #{ row[0] }"
Mailer.deliver_mail(row[0])
end
puts "#{result.num_rows} mails sent."
result.free
rescue Mysql::Error => e
puts "Error accessing the database: #{ e.message }"
rescue Exception => e
puts "Error sending mail: #{ e.message }"
ensure
handler.close if handler
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment