Note: This was tested on trunk and should be the same steps for Geronimo v1.2 and v2.0 with minor changes specifically references to JavaMail module ID.
1. Download Apache JAMES from: http://apache2.openmirrors.org/james/server/binaries/james-2.3.0.zip
2. Unzip file and run JAMES by executing: \james-2.3.0\bin\run.bat. You should see something like this:
Code Block |
---|
|
Phoenix 4.2
James Mail Server 2.3.0
Remote Manager Service started plain:4555
POP3 Service started plain:110
SMTP Service started plain:25
NNTP Service started plain:119
FetchMail Disabled
|
3. Make sure JavaMail module is started:
- For trunk and v2.0-M1: org.apache.geronimo.configs/javamail/2.0-SNAPSHOT/car (by default this is started)
- For v1.2-beta: org.apache.geronimo.configs/javamail/1.2-beta/car (by default this is not started)
- To start the module you can:
a. Use the Web Console: Applications > System Modules > Click 'Start' link beside the JavaMail module ID
b. Use command line deployer:
Code Block |
---|
|
cd <geronimo_home>\bin
java -jar deployer.jar --user system --password manager start org.apache.geronimo.configs/javamail/2.0-SNAPSHOT/car
|
c. Stop the server. Modify <geronimo_home>\var\config\config.xml and set JavaMail module load attribute to 'true':
Code Block |
---|
|
...
<module load="true" name="org.apache.geronimo.configs/javamail/2.0-SNAPSHOT/car">
<gbean name="SMTPTransport">
<attribute name="host">localhost</attribute>
<attribute name="port">25</attribute>
</gbean>
</module>
...
|
Note: You can configure the SMTP transport's host and port by overriding the values of the SMTPTransport GBean attrbitues. For our test we will use the default. This will allow us to connect to JAMES running in localhost and using port 25 (the default SMTP port).
3. Create a simple webapp (sendmail.war - attached in this issue) containing the following files:
Code Block |
---|
|
sendmail.war
+ index.jsp
+ WEB-INF
+ web.xml
+ geronimo-web.xml
|
web.xml:
Code Block |
---|
|
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<display-name>Send Mail Webapp</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<resource-ref>
<!-- Used in index.jsp -->
<res-ref-name>mail/testMailSession</res-ref-name>
<res-type>javax.mail.Session</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
</web-app>
|
geronimo-web.xml:
Code Block |
---|
|
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://geronimo.apache.org/xml/ns/j2ee/web-1.1">
<environment>
<moduleId>
<groupId>test</groupId>
<artifactId>sendmail</artifactId>
<version>1.0</version>
<type>car</type>
</moduleId>
<dependencies>
<dependency>
<groupId>org.apache.geronimo.configs</groupId>
<artifactId>javamail</artifactId>
<version>2.0-SNAPSHOT</version>
<type>car</type>
</dependency>
</dependencies>
</environment>
<context-root>/sendmail</context-root>
<resource-ref>
<!-- Used is web.xml -->
<ref-name>mail/testMailSession</ref-name>
<!-- Default Geronimo mail session -->
<resource-link>mail/MailSession</resource-link>
</resource-ref>
</web-app>
|
index.jsp:
Code Block |
---|
|
<%@page import="java.util.Date,
javax.mail.Message,
javax.mail.Session,
javax.mail.Transport,
javax.mail.internet.InternetAddress,
javax.mail.internet.MimeMessage,
javax.naming.InitialContext" %>
<%
String resultMsg = "";
String action = request.getParameter("action");
if ("Send".equals(action)) {
String from = request.getParameter("from");
String to = request.getParameter("to");
String subject = request.getParameter("subject");
String content = request.getParameter("message");
// Get mail session and transport
InitialContext context = new InitialContext();
// Mail session from web.xml's resource reference
Session mailSession = (Session) context.lookup("java:comp/env/mail/testMailSession");
Transport transport = mailSession.getTransport("smtp");
// Setup message
MimeMessage message = new MimeMessage(mailSession);
// From address
message.setFrom(new InternetAddress(from));
// To address
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
// Subject
message.setSubject(subject);
// Content
message.setText(content);
// Send message
transport.connect();
transport.send(message);
// Build result message
resultMsg = "<b>Result:</b>";
resultMsg += "<br>Message sent: " + new Date();
resultMsg += "<br>To: " + to;
resultMsg += "<br>From: " + from;
}
%>
<html>
<head>
<title>Send Mail</title>
</head>
<body>
<form>
<table>
<tr>
<td align="center" colspan="2"><b>Send Mail</b></td>
</tr>
<tr>
<td align="right">From:</td>
<td><input type="text" name="from"></td>
</tr>
<tr>
<td align="right">To:</td>
<td><input type="text" name="to"></td>
</tr>
<tr>
<td align="right">Subject:</td>
<td><input type="text" name="subject"></td>
</tr>
<tr>
<td align="right">Message:</td>
<td><textarea rows="5" cols="20" name="message"></textarea></td>
</tr>
<tr>
<td align="right" colspan="2">
<input type="submit" name="action" value="Send"> <input type="reset"></td>
</td>
</tr>
</table>
</form>
<%= resultMsg %>
</body>
</html>
|
4. Deploy sendmail.war:
a. Using Web Console: Applications > Deploy New > Set 'Archive:' to sendmail.war and click 'Install'
b. Using command line deployer:
Code Block |
---|
|
cd <geronimo_home>\bin
java -jar deployer.jar --user system --password manager deploy sendmail.war
|
5. Test send mail webapp by going to: http://localhost:8080/sendmail
Fill up the form (From, To, Subject, Message fields) and click 'Send' button. You should get a similar message if the mail was sent successfully:
Code Block |
---|
|
Result:
Message sent: Fri Dec 15 01:10:05 PST 2006
To: manny@pacquiao.com
From: chris@cardona.com
|