You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by si...@apache.org on 2008/11/27 16:57:19 UTC

svn commit: r721209 - in /labs/magma/trunk/email-commons: ./ src/ src/main/ src/main/java/ src/main/java/org/ src/main/java/org/apache/ src/main/java/org/apache/magma/ src/main/java/org/apache/magma/email/ src/main/resources/ src/test/ src/test/java/ s...

Author: simoneg
Date: Thu Nov 27 07:57:18 2008
New Revision: 721209

URL: http://svn.apache.org/viewvc?rev=721209&view=rev
Log:
LABS-218 : using commons email

Added:
    labs/magma/trunk/email-commons/pom.xml
    labs/magma/trunk/email-commons/src/
    labs/magma/trunk/email-commons/src/main/
    labs/magma/trunk/email-commons/src/main/java/
    labs/magma/trunk/email-commons/src/main/java/org/
    labs/magma/trunk/email-commons/src/main/java/org/apache/
    labs/magma/trunk/email-commons/src/main/java/org/apache/magma/
    labs/magma/trunk/email-commons/src/main/java/org/apache/magma/email/
    labs/magma/trunk/email-commons/src/main/java/org/apache/magma/email/CommonsEmail.java
    labs/magma/trunk/email-commons/src/main/java/org/apache/magma/email/InstallCommonsEmails.aj
    labs/magma/trunk/email-commons/src/main/resources/
    labs/magma/trunk/email-commons/src/test/
    labs/magma/trunk/email-commons/src/test/java/
    labs/magma/trunk/email-commons/src/test/resources/

Added: labs/magma/trunk/email-commons/pom.xml
URL: http://svn.apache.org/viewvc/labs/magma/trunk/email-commons/pom.xml?rev=721209&view=auto
==============================================================================
--- labs/magma/trunk/email-commons/pom.xml (added)
+++ labs/magma/trunk/email-commons/pom.xml Thu Nov 27 07:57:18 2008
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <parent>
+    <artifactId>magma-parent</artifactId>
+    <groupId>org.apache.magma</groupId>
+    <version>1</version>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.magma</groupId>
+  <artifactId>email-commons</artifactId>
+  <name>Magma Email implementation using Apache Commons</name>
+  <version>0.0.1-SNAPSHOT</version>
+  <description/>
+  <packaging>magma</packaging>
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.magma</groupId>
+      <artifactId>foundation-email</artifactId>
+      <version>0.0.1-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-email</artifactId>
+      <version>1.1</version>
+    </dependency>
+  </dependencies>
+</project>

Added: labs/magma/trunk/email-commons/src/main/java/org/apache/magma/email/CommonsEmail.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/email-commons/src/main/java/org/apache/magma/email/CommonsEmail.java?rev=721209&view=auto
==============================================================================
--- labs/magma/trunk/email-commons/src/main/java/org/apache/magma/email/CommonsEmail.java (added)
+++ labs/magma/trunk/email-commons/src/main/java/org/apache/magma/email/CommonsEmail.java Thu Nov 27 07:57:18 2008
@@ -0,0 +1,139 @@
+package org.apache.magma.email;
+
+import java.io.UnsupportedEncodingException;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.mail.internet.AddressException;
+import javax.mail.internet.InternetAddress;
+
+import org.apache.commons.mail.EmailException;
+import org.apache.commons.mail.HtmlEmail;
+import org.apache.magma.basics.MagmaException;
+import org.apache.magma.settings.Settings;
+
+public class CommonsEmail extends Email {
+
+	HtmlEmail mail = new HtmlEmail();
+
+	
+	@Override
+	protected void baseInit() {
+		super.baseInit();
+		String username = Settings.get("email.username");
+		String password = Settings.get("email.password");
+		if (username != null) {
+			if (password == null) password = "";
+			mail.setAuthentication(username, password);			
+		}
+		mail.setHostName(Settings.get("email.smtpHost"));
+		String port = Settings.get("email.smtpPort");
+		if (port != null) {
+			mail.setSmtpPort(Integer.parseInt(port));
+		}
+		String mode = Settings.get("email.smtpProtocol");
+		if (mode != null) {
+			if (mode.equalsIgnoreCase("ssl")) {
+				mail.setSSL(true);
+			} else if (mode.equalsIgnoreCase("tls")) {
+				mail.setTLS(true);
+			}
+		}
+	}
+	
+	public Email from(String address) {
+		InternetAddress addr = buildAddress(address);
+		try {
+			mail.setFrom(addr.getAddress(), addr.getPersonal());
+		} catch (EmailException e) {
+			throw new MagmaException(e, "Error setting {0}", address);
+		}
+		return this;
+	}
+	
+	public Email to(String address) {
+		InternetAddress addr = buildAddress(address);
+		try {
+			mail.addTo(addr.getAddress(), addr.getPersonal());
+		} catch (EmailException e) {
+			throw new MagmaException(e, "Error setting {0}", address);
+		}
+		return this;
+	}
+	public Email cc(String address) {
+		InternetAddress addr = buildAddress(address);
+		try {
+			mail.addCc(addr.getAddress(), addr.getPersonal());
+		} catch (EmailException e) {
+			throw new MagmaException(e, "Error setting {0}", address);
+		}
+		return this;
+	}
+	public Email bcc(String address) {
+		InternetAddress addr = buildAddress(address);
+		try {
+			mail.addBcc(addr.getAddress(), addr.getPersonal());
+		} catch (EmailException e) {
+			throw new MagmaException(e, "Error setting {0}", address);
+		}
+		return this;
+	}
+	public Email replyTo(String address) {
+		InternetAddress addr = buildAddress(address);
+		try {
+			mail.addReplyTo(addr.getAddress(), addr.getPersonal());
+		} catch (EmailException e) {
+			throw new MagmaException(e, "Error setting {0}", address);
+		}
+		return this;
+	}
+	public Email subject(String subject) {
+		mail.setSubject(subject);
+		return this; 
+	}
+	public Email bounce(String address) {
+		InternetAddress addr = buildAddress(address);
+		mail.setBounceAddress(addr.getAddress());
+		return this;
+	}
+	public Email content(String content) {
+		try {
+			mail.setTextMsg(content);
+		} catch (EmailException e) {
+			throw new MagmaException(e, "Error setting content");
+		}
+		return this; 
+	}
+	public Email html(String content) {
+		try {
+			mail.setHtmlMsg(content);
+		} catch (EmailException e) {
+			throw new MagmaException(e, "Error setting html content");
+		}
+		return this;
+	}
+
+	protected InternetAddress buildAddress(String value) {
+		try {
+			InternetAddress address = new InternetAddress(value);
+			if (address.getPersonal() == null) {
+				address.setPersonal(address.getAddress());
+			}
+			return address;
+		} catch (AddressException e) {
+			throw new MagmaException(e, "Invalid address {0}", value);
+		} catch (UnsupportedEncodingException e) {
+			throw new MagmaException(e, "Error parsing address {0}", value);
+		}
+	}
+	
+	@Override
+	public void send() {
+		try {
+			mail.send();
+		} catch (EmailException e) {
+			throw new MagmaException(e, "Error sending email");
+		}
+	}
+	
+}

Added: labs/magma/trunk/email-commons/src/main/java/org/apache/magma/email/InstallCommonsEmails.aj
URL: http://svn.apache.org/viewvc/labs/magma/trunk/email-commons/src/main/java/org/apache/magma/email/InstallCommonsEmails.aj?rev=721209&view=auto
==============================================================================
--- labs/magma/trunk/email-commons/src/main/java/org/apache/magma/email/InstallCommonsEmails.aj (added)
+++ labs/magma/trunk/email-commons/src/main/java/org/apache/magma/email/InstallCommonsEmails.aj Thu Nov 27 07:57:18 2008
@@ -0,0 +1,10 @@
+package org.apache.magma.email;
+
+
+public aspect InstallCommonsEmails {
+
+	Email around() : call(Email.new()) {
+		return new CommonsEmail();
+	}
+	
+}



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org