# java mail API, email versenden



## songbird (19. Mrz 2004)

Hallo!

Wir wollen mit click auf einen bestimmten button eine email versenden.

Haben dazu einen schönen Algorithmus gefunden, der scheinbar auch funktioniert.
Allerdings schlägt die Authorisierung fehl, da das Passwort fehlt. Daher haben wir uns gedacht, dass wir mit 
	
	
	
	





```
PasswordAuthentication password = new PasswordAuthentication(address.elementAt(4).toString(), String password/*hier kommt das Passwort rein*/);
```
 das Passwort setzten können und haben diese Zeile dem Code hinzugefügt. Allerdings bräuchte man jetzt wohl einen Befehl wie 
	
	
	
	





```
message.setPassword(String password);
```
Diesen Befehl gibt es aber nicht und wir haben in der Mail API auch nix vergleichbares gefunden.

Hinweis: nicht wundern, hinter address.elementAt(4) verbirgt sich die emailadresse des Absenders!

Hier die komplette Methode:


```
public void sendMail()
	{
		Properties props = new Properties();
		props.put("mail.smtp.host", "mail.gmx.de");
		Session session = Session.getDefaultInstance(props, null);
		session.setDebug(true);

		try
		{
			Message message = new MimeMessage(session);
			MimeBodyPart mimeBodyPart = new MimeBodyPart();
			Multipart multiPart = new MimeMultipart();
			InternetAddress addressFrom = new InternetAddress(address.elementAt(4).toString());
			InternetAddress addressTo = new InternetAddress("java-@gmx.de");
			PasswordAuthentication password = new PasswordAuthentication(address.elementAt(4).toString(), String password/*hier kommt das Passwort rein*/);
			
			message.setFrom(addressFrom);
			message.setRecipient(Message.RecipientType.TO, addressTo);
			message.setSubject("Meine Bestellung");
			
			mimeBodyPart.setText("Im Anhang finden Sie meine Bestellung. Bemerkungen: ");
			multiPart.addBodyPart(mimeBodyPart);
			
			String attachFiles = "order.txt";
			
			message.setContent(multiPart);
			Transport.send(message);
		}
		catch(javax.mail.MessagingException ex)
		{
			System.out.println("Messaging Fehler: " + ex);
		}
		catch(Exception ex)
		{
			System.out.println("General Exception: " + ex);
		}
	}
```

Die Fehlermeldung ist folgende: 
Messaging Fehler: javax.mail.SendFailedException: Sending failed;
  nested exception is:
	class javax.mail.MessagingException: 550 5.7.0 {mp004} Need to authenticate via SMTP-AUTH-Login

Hat jemand ne Idee, wie man dieses Problem lösen kann?


----------



## Roar (19. Mrz 2004)

hmm smtp server log in? bei mir gibts sowas nicht.. naja vielleicht hilft dir das weiter:


			
				JavaMail API Klasse Session hat gesagt.:
			
		

> void 	setPasswordAuthentication(URLName url, PasswordAuthentication pw)
> Save a PasswordAuthentication for this (store or transport) URLName.


----------



## songbird (19. Mrz 2004)

wie geht denn das bei dir ohne authorisierung?

und was muss man dann 
bei  void setPasswordAuthentication(URLName url, PasswordAuthentication pw)  als url eintragen? Die emailadresse?

danke auf jeden fall schonmal


----------



## songbird (19. Mrz 2004)

hab's jetzt mit 

```
session.setPasswordAuthentication(new URLName("www.gmx.de"), password);
```

versucht...

Geht aber auch net... gleicher fehler


----------



## Roar (19. Mrz 2004)

hmmm.. wies aussieht brauch ich bei meinem smtp server kein authentifizierung... ( ich hab einen eigenen) oder vielleicht muss man sich nur authentifizieren wenn man versucht mit einer absenderadresse zu versenden die dem hot nicht bekannt ist... ( oda so  :?: ) kein plan... bei mir gings jedenfalls ohne.


----------



## songbird (19. Mrz 2004)

hm, keine ahnung... aber wenn ich natürlich über mail.gmx.de versende, braucht man auch n passwort... gibt's noch öffentliche smtp-server auf denen man sich nicht authorisieren muss?? eher nicht oder?
sonst haben wir wohl ein ganz großen problem :-/

ist denn der quelltext soweit richtig?


----------



## schalentier (19. Mrz 2004)

da fehlt noch das eigentliche senden (Transport.send hat bei mir auch nich geklappt):

```
try
{
  Transport tr = session.getTransport("smtp");
  tr.connect("mail.gmx.net",
     "user, also die email addresse bei gmx",
     "pwd" );
  msg.saveChanges();
  tr.sendMessage(msg, msg.getAllRecipients() );
  tr.close();
} catch( MessagingException e1 )
{
//....
}
```

keine garantie, aber ich weis, dass es so mal funktioniert hat


----------



## songbird (19. Mrz 2004)

soooo. tataaaa, haben es jetzt hinbekommen 

jetzt noch ne frage:
weiß jemand, wie man ein attachment verschickt? haben schon so einiges ausprobiert, aber es klappt nicht... lieblings-exception: "no content"


----------



## songbird (24. Mrz 2004)

haben es hinbekommen


----------

