Netcos AG   XCP™ Blackboard
ext Tip 2  Tip 2
Tip No. 1   Versenden einer Mail aus XCP

Aufgabenstellung

Ein Webmaster möchte die folgende Funktionalität auf seiner Website implementieren:
Ein Besucher der Website soll die aktuelle Seite an einen Freund per E-Mail weiterempfehlen können.
Dazu wird ein neues Fenster geöffnet,
der Besucher kann ein Formular ausfüllen,
und die Nachricht mit dem Link der aktuellen Seite wird an den Freund versandt.
Ablauf der Implementierung:
  • 1. Jar-Dateien für Java-Mail installieren
  • 2. Hilfsklasse, HTML-Formular und Antwortseite erstellen
  • 3. Einbinden des Mailversandes in ein XCP-Modul
  • Ein Live-Demo der Funktionalität finden Sie direkt unter Abschicken Abschicken mit Anfrageformular auf unserer Website.
Voraussetzungen:
Ein Mailserver, der die Mails an den Empfänger ausliefern kann.
Achten Sie darauf, dass der Mailserver dies überhaupt erlaubt und dafür richtig konfiguriert ist!

Die Jar-Dateien für Java-Mail installieren

1. Laden Sie die Java-Mail API unter http://java.sun.com/products/javamail/ herunter.

2. Die Mail API benötigt die Datei activation.jar.
Sie finden die Datei im Java Activation Framework unter http://java.sun.com/products/javabeans/glasgow/jaf.html

3. Entpacken Sie die API's
und kopieren Sie die Java-Mail Jar-Dateien und die Datei activation.jar aus dem Activation Framework in Ihr iXSQL-Verzeichnis unter WEB-INF/lib.

4. Stoppen und starten Sie Ihren Applicationsserver (z.B. Tomcat), damit die Libraries gefunden werden können.

up

Hilfsklasse

1. Erstellen Sie die folgende Hilfsklasse und speichern Sie die Klasse unter WEB-INF/xcpsources ab: Download SendMail.java

2. Starten Sie den Übersetzungsvorgang mit iXSQL unter dem Menüpunkt "Java4XCP Compiler":


import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;

public class SendMail
{
  private final int OK=1;
  private final int ERROR=-1;
  private final String TOKEN=",";

  private String host="localhost";
  private String senderNetcos ="info@netcos.de";
  private String senderNameNetcos ="Netcos AG";

  private String  senderEmail;
  private String  senderName;
  private Vector resiverlist=new Vector();
  private String  text;
  private String subject;


  public SendMail()
  {
  }
  /**
   *  Angabe des Mail Hosts und des Default Absenders
   */
   public SendMail(String host)
  {
    this.host=host;

  }

  /**
   * setze den Absender
   */
  public void setSender(String senderEmail, String senderName)
  {
    this.senderEmail=senderEmail;
    this.senderName=senderName;
  }
/**
 * Liste mit , trenner für die Empfänger
 */
  public void setreceiverlist(String mailAdresses)
  {
     // Liste in Tockens zerlegen und im Vector abspeichern
     System.out.println("Building List :");
     StringTokenizer st;
     st = new StringTokenizer(mailAdresses,TOKEN);
     while(st.hasMoreTokens()) {
        resiverlist.addElement(st.nextToken());
         System.out.println("add List :");
     }
  }


  public void settext(String text)
  {
    this.text=text;
  }

  /**
   * Betreff setzen
   */
 public void setSubject(String subject)
 {


   this.subject=subject;
 }
/**
 * Versende die MAil
 */
 public int sendMail()
 {
    System.out.println("START Sending :");

   String reciver;
    // Über alle Empfänger je eine Mail versenden
    Enumeration e = resiverlist.elements();
    while ( e.hasMoreElements())
    {

     reciver =  (String) e.nextElement();
     System.out.println("found reciver "+reciver);

     // Mail api einbinden
     try {


      Properties properties = System.getProperties();
      properties.put("mail.smtp.host", host);

      Session session = Session.getDefaultInstance(properties, null);

      MimeMessage message = new MimeMessage(session);

      message.setFrom(new InternetAddress(senderNetcos,senderNameNetcos));

      message.addRecipient(Message.RecipientType.TO, new InternetAddress(reciver));

      InternetAddress[] replys= new InternetAddress[1] ;
      replys[0] = new InternetAddress(senderEmail);
      message.setReplyTo(replys);

      message.setSubject(subject);
      message.setText(text);

      Transport.send(message);
    }
     catch(Exception ex) {
      System.out.println("Error Sending:");
      System.out.println(ex.getMessage().toString());
     }
    }

    System.out.println("End sending :");
  return OK   ;
 }


}

			

up

Einbinden in ein XCP-Modul

Nach der erfolgreichen Übersetzung der Hilfsklasse können Sie die Klasse in einem XCP-Modul verwenden:
<?xml version='1.0' encoding='ISO-8859-1'?>
<xcp:page >

 <xcp:code>
   <![CDATA[
      String mailAdresses  = pci_request.get_string_param("mailAdresses");
      String senderName    = pci_request.get_string_param("senderName");
      String senderEmail   = pci_request.get_string_param("senderEmail");
      String page          =  pci_request.get_string_param("page");
      String senderRemark  =  pci_request.get_string_param("senderRemark");



      String text = "Guten Tag,\n"
                  + "Sie erhalten im Auftrag von "
                  + senderName
                  + " ("
                  + senderEmail
                  + ") eine interessante Seite der Netcos AG zugesandt.\n"
                  + " \n"
                  + "Link zur Seite :   " +page+"\n"
                  + " \n"
                  + "Nachricht von "+senderName
                  +" \n"
                  + "Nachricht: \n"
                  + senderRemark;

   try{

      SendMail mail = new SendMail("mail.IhreMailserver.de");
      mail.setSender(senderEmail,senderName);
      mail.setreceiverlist(mailAdresses);
      mail.settext(text);
      mail.setSubject(senderName+" sendet Ihnen eine interessante Seite der Netcos AG zu");
      mail.sendMail();

   } catch ( Exception e){
       out.println(e.getMessage());
   }

   this.out.println("Mail wurde versandt");

 ]]>
 </xcp:code>

 </xcp:page>

	

up