# E-Mails versenden



## Gerhard (18. Okt 2006)

Hallo!

Habe folgendes Problem:

Ich möchte gerne ein Programm schreiben, welches (ähnlich wie Outlook) meine E-mails von einem Exchange Server abruft und verschickt. Bin gerade dabei das Verschicken zu testen. Habe dazu mal das Forum durchsucht und bin darauf gestoßen, dass man einen exchange server wie einen smtp-server behandeln soll (?). hier mal mein code:


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


public class Main
{
  public static void postMail( String recipient,
                               String subject,
                               String message, String from )
    throws MessagingException
  {
    Properties props = new Properties();
    props.put( "mail.smtp.host", "mail.java-tutor.com" );
    Session session = Session.getDefaultInstance( props );
    Message msg = new MimeMessage( session );
    InternetAddress addressFrom = new InternetAddress( from );
    msg.setFrom( addressFrom );
    InternetAddress addressTo = new InternetAddress( recipient );
    msg.setRecipient( Message.RecipientType.TO, addressTo );
    msg.setSubject( subject );
    msg.setContent( message, "text/plain" );
    Transport.send( msg );
  }
  public static void main( String[] args ) throws Exception
  {
    postMail( "gerhard.schrittesser@bbstveit.at",
              "test",
              "test geklappt",
              "gerhard.schrittesser@bbstveit.at");
  }
}
```

so. was muss ich jetzt aber anstelle von mail.smtp.host und mail.java-tutor.com schreiben?? oder funkt. das mit java und einem exchange server nicht??

vielen dank schon mal!!
liebe grüße 
gerhard


----------



## Gast (18. Okt 2006)

hat der exchange server keine addresse?


----------



## motschow (18. Okt 2006)

der code is aus Java ist auch eine Insel dort werden auch die benötigten Vorbereitungen beschrieben. für mail.java-tutor.com müsste dann wahrscheinleich dein smtp-Server rein.
Grüße, motschow

edit: oh, stimmt ja, du brauchst nen exchange-server. aber versuch halt einfach  mal die adresse von dem da rein zuschreiben


----------



## Gerhard (18. Okt 2006)

hallo!! 

danke einmal für die antworten. ja ist richtig der code ist aus java ist auch eine insel. das hat meine suche ja ergeben. bin ja erst am testen. und der exchange server hat folgende adresse: rzsmail01.bbaustria.at. würde dann heißen ich schreibe folgendes:


```
props.put( "mail.smtp.host", "rzsmail01.bbaustria.at" );
```

und anstelle von mail.smtp.host? ich hab das buch leider nicht. deswegen kann ich das auch nicht nachlesen   

hoffe ihr könnt mir weiterhelfen!!!

VIELEN DANK SCHONMAL!!!

lg 
gerhard


----------



## SlaterB (18. Okt 2006)

falls es hilft:
http://www.galileocomputing.de/openbook/javainsel5/

(edit: oh, schon gelinkt  )


----------



## Gerhard (19. Okt 2006)

hab mich jetzt mal da durchglesen! Danke für den Link.
Allerdings konnte ich trotzdem nicht daraus schlau werden da ja das ganze auf smtp aufgebaut ist.
vielleicht kann mir ja jemand auf meine oben gestellte frage eine antwort geben, was ich da anstelle von "mail.smtp.host" eintragen soll.

weiters würd mich interessieren wie das mit der anmeldung am konto läuft?! dann bei uns melden wir uns am exchange server mit dem active directory konto an!?

vielleicht kennt von euch ja wer einen link wo die verbindung mittels java auf einen exchange server beschrieben ist?!

wäre super!!!

VIELEN LIEBEN DANK!!!!

mfg gerhard


----------



## motschow (20. Okt 2006)

Verbessert mich, wenn ich was Falsches sage, aber Exchange (MS Exchange server?) is doch eigendlich nur ein Mailserver während die E-Mails ja weitehin über das SMTP-Protokoll verschickt werden. Das heißt man muss da auch mail.smtp.host verwenden.


----------



## robertpic71 (20. Okt 2006)

motschow hat gesagt.:
			
		

> Verbessert mich, wenn ich was Falsches sage, aber Exchange (MS Exchange server?) is doch eigendlich nur ein Mailserver während die E-Mails ja weitehin über das SMTP-Protokoll verschickt werden. Das heißt man muss da auch mail.smtp.host verwenden.



100% korrekt

@Gerhard
Am besten du sieht bei deinem e-Mail-Client nach, was dort als SMTP-Server eingetragen ist. Bei Outlook findet man diese Einstellung unter: Extras/Konten/Eigenschaften/Server/Ausgangsserver-SMTP

Nimm den Namen des Postausgangsservers und setze diesen, in dein Programm ein.

Normalerweise sollte das reichen, außer Exchange will auch eine Anmeldung. Dann müsste bei den Eigenschaften das "Postaugsgangsserver erfordert Authentifizierung" angekreuzt sein. Wenn das so ist: schreib noch einmal. 

Robert


----------



## millinär (17. Jan 2007)

aber normalerweise brauch man doch ein passwort wie macht man dass dann?


----------



## robertpic71 (18. Jan 2007)

millinï¿½r hat gesagt.:
			
		

> aber normalerweise brauch man doch ein passwort wie macht man dass dann?



Da behaupte ich einmal das Gegenteil: Für das Senden von e-Mails, brauchen die meisten SMTP-Server *keine* Anmeldung. Das Passwort braucht man nur für das Abrufen der e-Mails via POP3 oder IMAP. 

Aber wenn du schon fragst, die Sun-Mail-API bietet mehrer Möglichkeiten an, hier eine:

Nach _props.put( "mail.smtp.host", "mail.java-tutor.com" );_ 

```
String protocol = "smtp";
props.put("mail." + protocol + ".auth", "true");
```

einfï¿½gen, und die Zeile:


```
Transport.send(msg);
```

mit


```
Transport t = session.getTransport(protocol);
try {
     t.connect(username, password);
     t.sendMessage(msg, msg.getAllRecipients());
} finally {
     t.close();
}
```

ersetzen.

Weiterführende Infos gibt es noch in der Sun Mail FAQ.


----------



## DP (6. Feb 2007)

robertpic71 hat gesagt.:
			
		

> Da behaupte ich einmal das Gegenteil: Für das Senden von e-Mails, brauchen die meisten SMTP-Server *keine* Anmeldung. Das Passwort braucht man nur für das Abrufen der e-Mails via POP3 oder IMAP.



wo stehen denn solch weisheiten geschrieben?

smtp after pop funktioniert nur wenn man sich vorher per pop sich authentifiziert hat. 

ansonsten *muss* eine authentifizierung via smtp auth ablaufen, wenn es kein open relay ist.


----------



## robertpic71 (6. Feb 2007)

DP hat gesagt.:
			
		

> robertpic71 hat gesagt.:
> 
> 
> 
> ...



>> wo stehen denn solch weisheiten geschrieben?
Das steht nirgends geschrieben - das sind meine Erfahrungen aus dem *Arbeits*alltag. Aber stimmt schon, die Behauptung von oben ist so nicht ganz richtig, deshalb:

Für das Senden von e-Mails, brauchen die meisten SMTP-Server keine Anmeldung - wenn man aus dem Netzwerk des Providers sendet. Das betrifft jetzt die ganzen firmeninternen STMP-Server als auch die SMTP-Dienste der Internetprovider.

Da die Webmail-Anbieter (sowie gmx) kein eigenes Netzwerk haben benötigen diese immer eine Anmeldung.

Da meine EDIFACT-Workflow-Lösung im _Firmenumfeld_ eingesetzt wird, stimmt mein *Meistens* also nicht unbedingt für die Allgemeinheit..


----------



## DP (6. Feb 2007)

jau, dann ist ja alles bello.

die ganzen internen clients werden im mailserver selbst über die ip zum senden authorisiert.


----------

