Skip to content

Instantly share code, notes, and snippets.

@cmaggiulli
Created July 20, 2018 21:33
Show Gist options
  • Save cmaggiulli/11d6062ecbbcd6bc07ca90bf9152dda6 to your computer and use it in GitHub Desktop.
Save cmaggiulli/11d6062ecbbcd6bc07ca90bf9152dda6 to your computer and use it in GitHub Desktop.
A groovy rabbitmq consumer
@Grapes([
@Grab(group='com.rabbitmq', module='amqp-client', version='3.6.5'),
@Grab(group = 'com.sun.mail', module = 'javax.mail', version = '1.6.0')
])
import com.rabbitmq.client.*
import groovy.json.JsonSlurper
import javax.mail.Message
import javax.mail.Session
import javax.mail.Transport
import javax.mail.internet.InternetAddress
import javax.mail.internet.MimeMessage
def factory = new ConnectionFactory()
factory.setHost("192.168.5.185")
factory.setUsername("test")
factory.setPassword("test")
def connection = factory.newConnection();
def channel = connection.createChannel();
channel.basicConsume("ESCALATE", true, new DefaultConsumer(channel) {
@Override
public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) {
def payload = new String(body, "UTF-8");
println " [x] Received '" + payload + "'"
def jsonSlurper = new JsonSlurper()
def msg = jsonSlurper.parseText(payload)
sendEmail(msg.EMAIL_ADDRESSES, msg.CUSTOMER_SERVICE_EMAIL, msg.HTML_SUBJECT, msg.HTML_BODY)
}
})
def sendEmail(to, from = "[email protected]", subject, body) {
def session = Session.getDefaultInstance(new Properties())
def message = new MimeMessage(session)
message.setFrom(from)
message.setRecipients(Message.RecipientType.TO, new InternetAddress(to))
message.setSubject(subject)
message.setText(body, "utf-8", "html");
def transport = session.getTransport("smtp")
transport.connect("email.hostaccount.com", 587, from, "Ex@mple1")
transport.sendMessage(message, message.getAllRecipients())
println " [x] Message sent successfully"
transport.close()
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment