Skip to content

Instantly share code, notes, and snippets.

@slevine
Created December 24, 2009 19:29
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save slevine/263323 to your computer and use it in GitHub Desktop.
Save slevine/263323 to your computer and use it in GitHub Desktop.
Groovy Mailer
import javax.mail.Session
import javax.mail.Message
import javax.mail.internet.MimeMessage
import javax.mail.internet.InternetAddress
@Grapes([
@Grab(group = 'javax.activation', module = 'activation', version = '1.1'),
@Grab(group = 'javax.mail', module = 'mail', version = '1.4')
])
class Mailer {
static def s_config = new ConfigSlurper("message").parse(new File('MailProperties.groovy').toURL())
static def deliverIpAddressChangeMessage(ipAddress) {
def subject = "IP Address Changed to ${ipAddress}"
def message = "IP Address changed to ${ipAddress}.\nPlease update your configurations."
sendMail("${s_config.message.to}".toString(), "${s_config.message.from}".toString(), subject, message)
}
static private sendMail(to, from, subject, message) {
def session = Session.getDefaultInstance(s_config.toProperties(), null)
def mimeMessage = new MimeMessage(session)
mimeMessage.setRecipients Message.RecipientType.TO, to
mimeMessage.setSubject subject
mimeMessage.setFrom new InternetAddress(from)
mimeMessage.setContent message.toString(), "text/plain"
def transport = session.getTransport("smtp")
transport.connect "${s_config.mail.username}".toString(), "${s_config.mail.password}".toString()
transport.sendMessage mimeMessage, mimeMessage.allRecipients
}
}
#!/usr/bin/env groovy
// IP Address Regex http://www.regular-expressions.info/examples.html
currentIp = ("http://whatsmyip.us/".toURL().text =~ /\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b/)[0]
println currentIp
def ipLog = new File("ip-log.txt")
recentIp = ipLog.readLines().last().tokenize(",").last().trim()
if (currentIp != recentIp) {
Mailer.deliverIpAddressChangeMessage currentIp
println "IP Address has changed, it is now: ${currentIp}. Sending Message."
ipLog << "${new Date()}, ${currentIp}\n"
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment