# E-Mails versenden.



## sCythe (25. Mrz 2005)

Hi, also ich versuche eigentlich einen Server zu programmieren zur Zeit.

Es soll ein kleines RAT werden.
(Applikation)

Meine Lage sieht so aus:
Ich habe 2 Files: 
File [1] Hier wird die IP und der Hostname der Maschine ausgelesen auf welcher der Server gestartet wurde.
File [2] Hier sollen die ausgelesenen Daten per eMail verschickt werden.

Das ganze funktioniert auch wenn ich das Programm im JBuilder 10 Enterprise ausführe.
Sobald ich aber eine EXE mit dem Wizard erstelle oder eine JAR File geht das ganze nicht mehr.
Die IP und der Host werden zwar ausgelesen aber die Mail verschickt er nicht.
Muss ich etwas spezielles noch in die File einbinden ? Und wenn ja, dann wie ?


Screenshot:
http://img112.exs.cx/img112/3707/error3tg.jpg



Ich bin neu und hoffe hier Hilfe zu finden.
Freue mich schon auf eure Antworten.



MfG
sCythe


----------



## DP (25. Mrz 2005)

du musst die benötigten jar-files in deinen classpath aufnehmen


----------



## Dukel (26. Mrz 2005)

Wäre das mit Dydnsn nicht einfacher?


----------



## sCythe (26. Mrz 2005)

Welche JAR-Files ?
In den Ordner wo die Classen sind welche ICH erstellt habe ?

Und was ist Dydnsn ?


----------



## DP (26. Mrz 2005)

ja die jarfiles die du benutzt (z.b. die javamail-geschichten)


----------



## sCythe (27. Mrz 2005)

Sorry, aber ich habe bis jetzt noch nie so ein Problem gehabt und musste niemals irgendwelche jar Files einbinden.
Ich habe auch keine diesmal eingebunden.

Woher weiss ich welche ich in die exe einbinden muss.
Wo steht das?

Bin mit meinen Nerven am Ende, helft mir bitte mit ausführlichen Antwortn .


----------



## Dukel (28. Mrz 2005)

sCythe hat gesagt.:
			
		

> Welche JAR-Files ?
> In den Ordner wo die Classen sind welche ICH erstellt habe ?
> 
> Und was ist Dydnsn ?



http://www.dyndns.org

Das ist ein Dienst, welcher aus einer Dynamischen Ip eine Dns Addresse macht. Man meldet sich an, zieht einen Client, konfiguriert den und jedes mal bei ner neuen IP schickt der Client diese hoch und man ist so mit einer "Dynamischen Dns Addresse" unterwegs.

Da braucht man dann nichts eigenes Basteln, was einem die IP zuschickt.


----------



## sCythe (28. Mrz 2005)

Aha, danke für die Erklärung!
Aber das muss so funktionieren wie ich es programmiere, da soll noch mehr Code reinkommen.


Ich poste mal die 3 Files und hoffe das jemand mir sagen kann welche Files ich genau einbinden muss damit ich eine funktionierende jar / exe bekomme.


GetIP.java

```
import java.io.*;
import java.net.*;

public class GetIP
{
  String ipaddr, hostname;

  public GetIP() // Konstruktor
  {
    try
    {
      InetAddress localaddr = InetAddress.getLocalHost();

      ipaddr = "Local IP Address : " + localaddr.getHostAddress() + "\n";
      hostname = "Local hostname : " + localaddr.getHostName() + "\n";
      System.err.println(ipaddr + hostname);
    }
    catch (UnknownHostException e)
    {
      System.err.println("Can't detect localhost : " + e);
    }
  }
}
```

SendMail.java

```
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;
import java.io.*;

public class SendMail
{
  private static final String SMTP_HOST_NAME = "smtp.web.de";
  private static final String SMTP_AUTH_USER = "sCythe2k@web.de";
  private static final String SMTP_AUTH_PWD = "****"; // password

  // public static String emailMsgTxt = "xxxx";
  private static final String emailSubjectTxt = "IP Address + Hostname";
  private static final String emailFromAddress = "sCythe2k@web.de";

  // Add List of Email address to who email needs to be sent to
  private static final String[] emailList =
      {
      "sCythe2k@hotmail.com"};

  public void doIT() throws Exception
  {
    GetIP ip = new GetIP(); // get IP + Host

    SendMail smtpMailSender = new
        SendMail();
    // Send IP + Host
    smtpMailSender.postMail(emailList, emailSubjectTxt, ip.ipaddr + ip.hostname,
                            emailFromAddress);
    System.out.println("Sucessfully Sent mail to All Users");
  }

  public void postMail(String recipients[], String subject,
                       String message, String from) throws MessagingException
  {
    boolean debug = false;

    //Set the host smtp address
    Properties props = new Properties();
    props.put("mail.smtp.host", SMTP_HOST_NAME);
    props.put("mail.smtp.auth", "true");

    Authenticator auth = new SMTPAuthenticator();
    Session session = Session.getDefaultInstance(props, auth);

    session.setDebug(debug);

    // create a message
    Message msg = new MimeMessage(session);

    // set the from and to address
    InternetAddress addressFrom = new InternetAddress(from);
    msg.setFrom(addressFrom);

    InternetAddress[] addressTo = new InternetAddress[recipients.length];
    for (int i = 0; i < recipients.length; i++)
    {
      addressTo[i] = new InternetAddress(recipients[i]);
    }
    msg.setRecipients(Message.RecipientType.TO, addressTo);

    // Setting the Subject and Content Type
    msg.setSubject(subject);
    msg.setContent(message, "text/plain");
    Transport.send(msg);
  }

  /**
   * SimpleAuthenticator is used to do simple authentication
   * when the SMTP server requires it.
   */
  private class SMTPAuthenticator
      extends javax.mail.Authenticator
  {

    public PasswordAuthentication getPasswordAuthentication()
    {
      String username = SMTP_AUTH_USER;
      String password = SMTP_AUTH_PWD;
      return new PasswordAuthentication(username, password);
    }
  }
}
```

Main.java

```
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;
import java.io.*;

public class Main
{
  public Main() throws Exception
  {
    sendInfo();
  }

  private void sendInfo() throws Exception
  {
    SendMail y = new SendMail();
    y.doIT();
  }

  public static void main(String args[]) throws Exception
  {
    Main m = new Main();
  }
}
```



Hoffentlich könnt ihr mir jetzt weiter helfen .


----------



## Roar (28. Mrz 2005)

du musst die mail.ajr und die activation.jar als classpath attribut im manifest deiner jar bekanntgeben. wie das mit dem jbuidler exe wizard (baaahhhh) funktinoiert kann ich dir nicht sagen


----------



## DP (28. Mrz 2005)

der wizard fragt dich doch welche abhängigkeiten in die exe eingebunden werden sollen...


----------



## sCythe (28. Mrz 2005)

Also ich habe kA was ich sonst machen soll, also habe ich vom Wizard Screenshots gemacht.
Hoffentlich helfen die euch dabei mir zu helfen. Danke schon an dieser Stelle für eure Hilfe, finde ich super.


Screenshots:

[1] http://img232.exs.cx/img232/2913/wizard17my.jpg
[2] http://img232.exs.cx/img232/8090/wizard20au.jpg
[3] http://img232.exs.cx/img232/114/wizard34vs.jpg
[4] http://img232.exs.cx/img232/8991/wizard41uc.jpg
[5] http://img232.exs.cx/img232/6223/wizard55dp.jpg
[6] http://img232.exs.cx/img232/6002/wizard68rc.jpg
[7] http://img232.exs.cx/img232/8356/wizard74zn.jpg

 :roll:


----------

