Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

...

  • Check Geronimo console System Modules for a component name beginning with org.apache.geronimo.configs/javamail. This module is present and started by default in the javaee5 instances of the server (both jetty and tomcat).
  • If, for some reason, the module is not started or not present then you can start the module via:
    • Use the Web Console: Applications > System Modules > Click 'Start' link beside the JavaMail module ID (you may have to enable expert mode)
    • Use command line deployer:
      Code Block
      xml
      xml
      borderStylesolidxml
      cd <geronimo_home>\bin
      java -jar deployer.jar --user system --password manager start org.apache.geronimo.configs/javamail/2.X/car
      
    • Stop the server. Modify <geronimo_home>\var\config\config.xml and set JavaMail module load attribute to 'true':
      Code Block
      xml
      xml
      borderStylesolidxml
      ...
      <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>
      ...
      

...

Code Block
xml
xml
sendmail.war
  + index.jsp
  + WEB-INF
    + web.xml
    + geronimo-web.xml

web.xml:

Code Block
xml
xml
borderStylesolid
titleweb.xmlxml
<?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.html</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: This deployable is using Geronimo 2.0's JavaMail component, so it needs to specify where to look. It does this under the <dependencies> tag. As Geronimo changes, these paths need to be changed accordingly to ensure that it refers to the same things. Under the <resource-ref> element, it is referring to a JavaMail session. This is what allows the developer to reference resources that resides on the server. The <ref-name> element is used in the web.xml so the two must be consistent. The <resource-link> element specifies the default Geronimo mail session.

Code Block
xml
xml
borderStylesolid
titlegeronimo-web.xmlxml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://geronimo.apache.org/xml/ns/j2ee/web-1.1">
    <environment>
        <moduleId>
            <groupId>${pom.groupId}</groupId>
            <artifactId>${pom.artifactId}</artifactId>
            <version>${version}</version>
            <type>war</type>
        </moduleId>   
        <dependencies>
            <dependency>
                <groupId>org.apache.geronimo.configs</groupId>
                <artifactId>javamail</artifactId>
                <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
xml
xml
borderStylesolid
titleindex.jspxml
<%@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">&nbsp;<input type="reset"></td>
                    </td>
                </tr>
            </table>
        </form>
        <%= resultMsg %>
    </body>
</html>

...

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
xml
xml
borderStylesolidxml
Result:
Message sent: Fri Dec 15 01:10:05 PST 2006
To: manny@pacquiao.com
From: chris@cardona.com