Eigenes Mail-Programm schreiben

IwiS

Bekanntes Mitglied
Hallo zusammen,

ich habe mir vorgenommen ein eigenes Mail-Programm zuschreiben. Allerdings habe ich noch kA wie ich das genau angehen soll. Ich möchte, dass ich mit meinem Programm Mails schreiben und vorallem empfangen kann. Könnte mir jemand ein paar Stichpunkte zur Vorgehensweise geben, das würde mir völlig ausreichen.

Vielen Danke im Vorraus,
IwiS
 
M

Marcinek

Gast
@Marcinek
POP3 vergessen ... nicht jeder hat den luxus von IMAP

Ich denke das ist eher ein Muss. Ich hoste mein MTA selber aber die meisten Provider bieten das an, weil es weniger Traffic verursacht. Bei Leuten, die POP3 nutzen + Option "lass mail auf server" wird immer overhead für synchronisation verbraucht. ;D - Oder liefert hier der Server immer alle Mails und der Client entscheidet, was der dann wirklich speichert - Ich weiß es nicht genau ;) :bahnhof:
 

irgendjemand

Top Contributor
@Marcinek
wie gesagt ... nicht jeder hat den luxus ...

nehmen wir mal einen der größten deutschen provider : Web.de ...

will man hier IMAP nutzen so muss man erst "Premium Web.de Club" bezahlen ...

ich kann mir vorstellen das es bei manchen providern ähnliche "fallen" gibt ...

bei g-mail z.b. ist es zwar nicht kostenpflichtig ... muss aber vor erstmaliger verwendung durch den user explizit aktiviert werden ...


du merkst also : auch wenn IMAP immer größere popularität erhält ... so der wirkliche standard ist es immer noch nich ...
außerdem sollte für den anfang POP3 erstmal reichen ... anstatt sich gleich mit IMAP rumzuschlagen
 

IwiS

Bekanntes Mitglied
Guten Tag,

ich habe das Senden eine Mail geschafft, es funktioniert. Jetzt möchte ich mich an das Empfangen der Mails machen. Ich habe dazu folgenden Code:
Java:
public void Empfangen()
 {
  try
  {
   Properties info = System.getProperties();
   info.put("pop3.mail.host", server);
   info.put("pop3.mail.auth", "true");
   Authenticator auth = new Authenticator();
   Session verbindung = Session.getDefaultInstance(info, auth);
   verbindung.setDebug(false);
   Store store = verbindung.getStore("pop3");
   store.connect();
   Folder folder = store.getFolder("INBOX");
   folder.open(Folder.READ_ONLY);
   Message message[] = folder.getMessages();
   for(int i=0;i<message.length;i++)
   {
    Message m = message[i];
    if( m.isMimeType("text/plain"))
    {
     System.out.println(m.getContent());
    }
   }
  }
  catch(Exception e)
  {
   e.printStackTrace();
  }
 }

Dabei bekomme ich die Fehlermeldung von Eclipse bei Authenticatior:
Code:
Cannot instantiate the type Authenticator

lg IwiS
 

irgendjemand

Top Contributor
versuche mal "pop3s" ... gerade bei Web.de und Google-Mail notwendig ...
hier mal ein für g-mail und text/plain messages optimierter code ... dürfte als grundlage reichen

Java:
import java.io.ByteArrayOutputStream;
import java.util.Properties;
import javax.mail.Address;
import javax.mail.Flags;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Store;
public class GetMailTLS
{
	public static void main(String[] args) throws Exception
	{
		String host="pop.gmail.com";
		int port=995;
		String user="recent:USERNAME@googlemail.com";
		String pass="PASSWORD";
		
		Properties props=new Properties();
		
		Session session=Session.getInstance(props);
		Store store=session.getStore("pop3s");
		store.connect(host, port, user, pass);
		
		Folder inbox=store.getFolder("INBOX");
		if(inbox==null)
		{
			System.out.println("NO INBOX");
			store.close();
			System.exit(1);
		}
		inbox.open(Folder.READ_WRITE);
		
		Message[] messages=inbox.getMessages();
		for(Message message : messages)
		{
			Address[] fromAddresses=message.getFrom();
			for(Address fromAddress : fromAddresses)
			{
				System.out.println("FROM : "+fromAddress.toString());
			}
			Address[] toAddresses=message.getRecipients(Message.RecipientType.TO);
			for(Address toAddress : toAddresses)
			{
				System.out.println("TO : "+toAddress.toString());
			}
			System.out.println("SUBJECT : "+message.getSubject());
			System.out.println("TYPE : "+message.getContentType());
			System.out.println("");
			System.out.println("MESSAGE");
			System.out.println("");
			if(message.getContentType().contains("text/plain"))
				System.out.println((String)message.getContent());
			else
				System.out.println("NO text/plain MESSAGE");
			
			message.setFlag(Flags.Flag.DELETED, true);
		}
		
		inbox.close(true);
		store.close();
	}
}
 

IwiS

Bekanntes Mitglied
Hallo,

ich habe jetzt folgenden Code zum Senden der Mail:
Java:
public void Empfangen()
 {
  try
  {
   Properties info = System.getProperties();
   info.put("imap.mail.host", server);
   info.put("imap.mail.auth", "false");
   Session verbindung = Session.getDefaultInstance(info);
   verbindung.setDebug(false);
   Store store = verbindung.getStore("imaps");
   store.connect(server2, port2, benutzer2, passw2);
   Folder folder = store.getFolder("INBOX");
   folder.open(Folder.READ_ONLY);
   Message message[] = folder.getMessages();
   for(int i=0;i<message.length;i++)
   {
    Message m = message[i];
    if( m.isMimeType("text/plain"))
    {
     System.out.println(m.getContent());
    }
   }
  }
  catch(Exception e)
  {
   e.printStackTrace();
  }
 }

Und bekomme jetzt folgende Fehlermeldung:
Code:
javax.mail.AuthenticationFailedException: authentication failed
	at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:660)
	at javax.mail.Service.connect(Service.java:295)
	at Mail.Empfangen(Mail.java:137)
	at Mail$4.actionPerformed(Mail.java:96)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.awt.EventQueue.access$000(Unknown Source)
	at java.awt.EventQueue$1.run(Unknown Source)
	at java.awt.EventQueue$1.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue$2.run(Unknown Source)
	at java.awt.EventQueue$2.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)

Was kann ich dagegen tun?

lg IwiS
 
M

Marcinek

Gast
Etwas anderes programmieren.

Sorry, aber deine Fähigkeiten in Java sind momentan nicht ausgereift genug um sowas schweres, wie einen Mail Client zu bauen.

---

Ansonsten würde ich noch vorschlagen mehr Eigeninitiative in dieses Projekt zu stecken. Ich meine du bekommst als Fehler "authentification exception" hmmmmmmmmmmmmmmmmmmmmmmmmm. Was könnte das bedeuten?

Und wenn man es nciht weiß, wie könnte man es herausfinden, ohne sofort ein Forenbeitrag zu machen.
 

IwiS

Bekanntes Mitglied
Hallo,

wozu glaubst du, dass das Forum da ist - soll man hier keine Fragen stellen?! Außerdem habe ich nicht gefragt, was das bedeutet, sondern wie man das Problem beheben kann.
 
M

Marcinek

Gast
Auf jedenfall dazu da um Fragen zu stellen, schonmal nicht 100000 mal in allen Formen und Faben durchgekaut worden sind.

GENAU dieses Problem hatte Generic1 vor 3 Tagen oder so.:rtfm:
 

IwiS

Bekanntes Mitglied
Hallo,

ich konnte mit der Forensuche keinerlei Erfolge verzeichnen, daher würde ich dich ersuchen mir zu helfen. Falls du nicht die Möglichkeit oder Lust hast meiner Bitte nachzukommen, habe ich dafür volles Verständnis.

Trotzallem ein Danke im Vorraus,
Mit freundliche Grüßen,
IwiS
 
M

Marcinek

Gast
Ich finde es wichtiger die Methodik beizubringen, statt einfach die Lösung zu posten, damit der TO innerhalb von Sekunden wieder hier ein Posting schreibt mit der gleichen Frage ;D

Wenn man sich nun die Fehlermeldung anschaut: authentication failed

Was bedeutet das? - Naja der Server weiß nicht wessen mails er verschicken soll und da tut er das lieber nicht ;) - Spart auch Traffic. Aber dafür müsste man sich auch mal mit SMTP und MTA und Protokollen beschäftigen. Nun wir wollen ja nur mails verschicken.

Ich schlage vor du googelst nach "javax Mail Server authentification".

---

Ich habe erst gerade gesehen, dass da wohl ein auth info dabei ist: store.connect(server2, port2, benutzer2, passw2);

Da muss man sich fragen, kommt der Code bis dahin oder bricht er schon vorher weg?

sind die Variablen richtig belegt?

Das sind alles Sachen, da braucht man kein Forum für.
 

madlion

Mitglied
Was mir dazu spontan aufgefallen ist...
Java:
info.put("imap.mail.auth", "false");
Das klingt so danach als würde die imap Authentifizierung abgeschaltet werden.

Hat das eigentlich einen Grund weshalb du die System Properties holst, diese veränderst und dann bei der Erzeugung der Session mitgibst?
Erscheint mir etwas eigenartig. Ich hätte ehrer erwartet daß du ein neues Properties erzeugst und dort die benötigten Properties setzt.
 

IwiS

Bekanntes Mitglied
Hallo,

ich habe in Google mit deinem (Marcinek) Vorschlage gesucht, doch leider nur Ergebenisse zum Verschicken von Mails gefunden, und nicht zum Empfangen von Mails, hat mich also leider nicht weitergebracht. Auch die Forensuche hatte nur Ergebnisse zum Verschicken von Mails zu verzeichnen.
Das andere Problem ist, sobald ich in Eclipse bei meinem Code
Java:
Authenticator auth = new Authenticator();
eingebe, kommt die Fehlermeldung: "Cannot instatiate the type Authenticator". Ich habe aber kA, wie ich das beheben soll, daher habe ich die Authentication auf "false" gesetzt.

lg IwiS
 

c_sidi90

Top Contributor
Ich wäre ja vorsichtig beim herunterladen von Mailclients ohne beigelegtem Source :p ohne jemanden etwas unterstellen zu wollen natürlich :D
 
M

Marcinek

Gast
"Cannot instatiate the type Authenticator". Ich habe aber kA, wie ich das beheben soll, daher habe ich die Authentication auf "false" gesetzt.

lg IwiS


Du kämpfst hier an zwei Fronten. 1. Java und OO. 2. Gegen nicht 100 % triviale Technologie + fehlender Kenntnisse in IT. Letzteres führt dazu, dass du Quellen aus dem Internet nicht hinsichtlich der Relevanz beurteilen kann.

Mach doch was einfacheres, wie einen Taschenrechner. Wichtig ist hier zu begreifen, was ist OOP und wie wende ich es korrekt an. Hierzu ist weitere Literatur und ein intensiveres Studium dessen notwendig.

Oder noch was einfachers:

Versuch ein Modell auf zwei verschiedenen Art und Weisen zu speichern. Einmal als CSV und einmal als Pro Zeile ein Wert. Und dann diese Möglichkeiten austauschbar machen ohne viel Code zu ändern.
 

irgendjemand

Top Contributor
Authenticator ist abstract...
sogar auf wikipedia findet man ein Beispiel
JavaMail ? Wikipedia

mal davon abgesehen das das beispiel auch nicht gerade sauber ist *static Transport.send(Message) call -> EVIL !* ...


@TO

vielleicht hilft es dir wenn ich dir sage das es NICHT

[c]imap.mail.*[/c]

heißt ... sondern wenn überhaupt

[c]mail.imap.*[/c]

und genau so falsch ist auch

[c]pop3.mail.*[/c]

auch hier muss es wenn überhaupt

[c]mail.pop3.*[/c]

heißen ...

wenn du dir mal die mühe gemacht hättest in die DOCs zu schauen welche dem zip beiliegen hättest du das auch selbst rausbekommen können ...

denn in der package-description von javax.mail steht eindeutig in der tabelle

mail.protocol.*

wobei protocol durch das protocol *pop3(s), smtp(s), imap(s), etc* zu ersetzen ist ...

so langsam glaub ich das der post von Marcinek einen gewissen wahrheits gehalt hat : wir ballern dich mit antworten zu und du stellst immer wieder die selben fragen weil du immer wieder die selben fehler machst ...

ich schätze du bist wirklich noch nicht so weit dieses projekt umzusetzen ... suche dir lieber etwas anderes und vor allem einfacheres ... sonst endet das nachher darin das wir dir dein programm schreiben ... und darauf hat hier niemand lust *zumindest nicht un-endgeldlich
 

IwiS

Bekanntes Mitglied
Guten Tag zusammen,

nachdem ich mich jetzt dazu entschieden habe mein Vorhaben zu beenden, werde ich mich einem Taschenrechner zuwenden. Vielleicht könnte, sobald er fertig ist, mal jemand von euch drübergucken, ob der Rechner i. O. ist, oder ob man da noch was verbessern könnte, wäre sehr nett.

lg IwiS
 

irgendjemand

Top Contributor
hmm ... dazu besteht kein anlass ...

nutze bitte mal die forensuche und zieh dir sämtliche threads zum thema "taschenrechner" rein ...
denn ich denke alle nur erdenklichen fehler die man dabei machen kann wurden hier bereits mehrfach erörtert ... ergo : du hast mit der SuFu hier genug stoff um sämtliche fehler selbst lösen zu können ...
extra über den code drüber schauen würden hier sicher einige machen ... aber entweder verweisen sie dich dann auf die entsprechenden threads oder reagieren wie ich ... nämlich so gut wie garnicht


wenn du wirklich programmieren lernen willst ... speziell java ... dann google dir "java ist auch eine insel" ... lege dir zusätzlich noch 4 oder 5 java bücher zu ... und fang dann ganz unten bei den basics an ... dann irgendwann mal OOP ... und dann alles weitere ...

ich denke der taschenrechner wird dich schon lange genug quälen ... und wir werden da sicher noch einiges von dir zu höhren bekommen auf das man dann eigentlich immer wieder nur mit "SUFU" antworten könnte ...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Interface Design von HookUp oder Callback Methoden für eigenes Framework Allgemeine Java-Themen 9
L Variablen Eigenes Objekt wie z.B. einen Integer zuweisen Allgemeine Java-Themen 3
S Eclipse Github Projekt in eigenes Projekt einbinden und nutzen Allgemeine Java-Themen 13
B eigenes Consumer Interface Allgemeine Java-Themen 0
Thallius Eigenes Message Center erstellen Allgemeine Java-Themen 3
M eigenes Seekarten-Tool (oder PlugIn?) Allgemeine Java-Themen 2
Z LanguageTool in eigenes GUI einbetten Allgemeine Java-Themen 0
W String Parsen und auf eigenes Muster anwenden (kein Regex) Allgemeine Java-Themen 11
O log4j - eigenes Log für einzelne Klasse Allgemeine Java-Themen 5
M Eigenes Eventsystem Allgemeine Java-Themen 2
T Code durch eigenes Frame pausieren (ähnlich JDialog) Allgemeine Java-Themen 4
J Swing Eigenes Button-design Allgemeine Java-Themen 2
S import meine.eigenes.import Allgemeine Java-Themen 6
N eigenes Bildformat Allgemeine Java-Themen 2
J Eigenes Produkt Upgrade / Update-fähig halten? Allgemeine Java-Themen 16
M Erstes eigenes Projekt Allgemeine Java-Themen 5
D Simples eigenes Logfile Allgemeine Java-Themen 18
J Eigenes Objekt sichern Allgemeine Java-Themen 9
R Eigenes Objekt - clone() Allgemeine Java-Themen 2
G eigenes ChangeEvent Allgemeine Java-Themen 4
P Installationsroutine für eigenes Java-Programm Allgemeine Java-Themen 3
G eigenes Actionevent Allgemeine Java-Themen 8
M Eigenes Java-Server-Programm unter Linux steuern? Allgemeine Java-Themen 13
G eigenes dateiformat als zip Allgemeine Java-Themen 2
M Eigenes Synchronisationstool? Allgemeine Java-Themen 2
E Wie: Eigener Listener, eigenes Event (möglichst einfach) Allgemeine Java-Themen 29
ToNyXXL Als Mauszeiger eigenes Bild verwenden! Allgemeine Java-Themen 3
S eigenes Zahlensystem? Allgemeine Java-Themen 5
K Eigenes Protokoll (abc:[url]http://abc.de[/url]) Allgemeine Java-Themen 2
A Eigenes jar file in projekt einbinden Allgemeine Java-Themen 4
B eigenes look and feel Allgemeine Java-Themen 11
K eigenes Tool jar - maskieren der Methoden Allgemeine Java-Themen 3
T eigenes Browser Plugin Allgemeine Java-Themen 6
T Eigenes Installationsprogramm Allgemeine Java-Themen 17
Z E-Mail senden Allgemeine Java-Themen 2
C Probleme mit javax.mail.Session Allgemeine Java-Themen 8
jumichel Eclipse The package javax.mail is not accessible Allgemeine Java-Themen 3
N E-Mail Validator (ohne Regex!) Allgemeine Java-Themen 7
TechnikTVcode Mail Programm Allgemeine Java-Themen 2
N E-Mail per Java verschicken Allgemeine Java-Themen 2
C javax.mail.Message message.setreplyto() null setzen (keine replyto Adresse) Allgemeine Java-Themen 25
B Java Mail: Prüfung auf neue Emails Allgemeine Java-Themen 1
B Java Mail: Emails sortieren? Allgemeine Java-Themen 5
B Java Mail: Prüfen, ob Email hat ein Anhang oder nicht Allgemeine Java-Themen 2
B Mail: Nicht vorhandener Empfänger ermitteln Allgemeine Java-Themen 4
B Java Mail: Unterscheidung bei Attachments und eingefügte Bilder in Email Allgemeine Java-Themen 18
T java mail 1.4.2| ssl Allgemeine Java-Themen 2
E javax.mail sene Type ändern Allgemeine Java-Themen 2
R Compiler-Fehler Bild per E-Mail versenden Allgemeine Java-Themen 3
H IDEA IntelliJ Java Mail funktioniert nach Export nicht mehr! Allgemeine Java-Themen 1
D JPanel in Mail darstellen Allgemeine Java-Themen 30
D Mail aus GUI generieren Allgemeine Java-Themen 2
U javax.mail.Folder.list() zeigt nicht alle Ordner Allgemeine Java-Themen 5
KeVoZ_ Java Mail senden - geht nicht Allgemeine Java-Themen 4
K Input/Output E-mail Zusammenfassen Senden Allgemeine Java-Themen 2
F Java Mail Problem: Authentifizierung wird nicht immer mitgeschickt Allgemeine Java-Themen 1
M Java Mail verwenden Allgemeine Java-Themen 20
X Mail versenden mit java.mail Allgemeine Java-Themen 14
L Java Mail Allgemeine Java-Themen 0
H Java Mail Fehlermeldung: java.lang.NoClassDefFoundError: javax/mail/internet/AddressException Allgemeine Java-Themen 5
B Java Mail Client als Outlook ausgeben Allgemeine Java-Themen 2
F E-Mail aus JAVA senden nach Umstellung auf Netbean 7.4 mit Java 7U45 nicht mehr möglich Allgemeine Java-Themen 4
T popup für e-mail Allgemeine Java-Themen 2
Z Java E-Mail Client mit End-to-End-Verschlüsselung Allgemeine Java-Themen 4
P javax.mail MessageCount Allgemeine Java-Themen 13
C E-Mail: Authenticator.getPasswordAuthentication() wird nicht gerufen Allgemeine Java-Themen 2
GUI-Programmer Java Mail - Proxy für Verbindung einstellen Allgemeine Java-Themen 2
P Mail wird nicht gesendet - Muss ich kein PW angeben ? Allgemeine Java-Themen 13
U Mailclient über getDesktop.mail vorbereiten, Problem beim Anhang: Allgemeine Java-Themen 3
S Mail Adressen Syntax prüfen Allgemeine Java-Themen 22
S Java Mail Allgemeine Java-Themen 3
G Problem Java Mail API: CC wird nicht berücksichtigt Allgemeine Java-Themen 7
R php hat mail() und java? Allgemeine Java-Themen 5
B Per BatchScript Mail versenden Allgemeine Java-Themen 27
S mail per smtp lokal in postfix einliefern Allgemeine Java-Themen 6
Mike90 Graph in einer Mail verschicken Allgemeine Java-Themen 7
N Java Mail Allgemeine Java-Themen 5
F Spam-Mail-Programm gesucht Allgemeine Java-Themen 11
N Java Mail Allgemeine Java-Themen 7
M [Java Mail] Multipart beim Senden funktioniert nicht. Allgemeine Java-Themen 11
S Shell-Befehl: mail Allgemeine Java-Themen 6
W mail senden mit java Allgemeine Java-Themen 4
C Desktop.mail Problem. IO Exception: Failed to open. Allgemeine Java-Themen 3
P Mail Notifier Allgemeine Java-Themen 9
J String auf E-Mail überprüfen Allgemeine Java-Themen 4
S E-Mail an nicht-RFC822-formatierte Adresse Allgemeine Java-Themen 4
M Desktop mail attachments Allgemeine Java-Themen 3
S E-Mail-Links: geklickten Link ermitteln Allgemeine Java-Themen 4
F Umlaute: E-Mail per JavaMail und Textfile Allgemeine Java-Themen 5
C Mail Api http Protokoll? Allgemeine Java-Themen 5
C E-Mail Versand Allgemeine Java-Themen 3
0x7F800000 e-mail mit einer virtuellen datei schicken? Allgemeine Java-Themen 3
J Mail schicken über mailx Allgemeine Java-Themen 3
G E-Mail versenden Allgemeine Java-Themen 6
L Infos zu java.mail Allgemeine Java-Themen 5
H Java Mail hängt sich unregelmässig auf Allgemeine Java-Themen 8
G Mail Konten (E-Mails holen) Allgemeine Java-Themen 5
P welche java version für javax.mail? Allgemeine Java-Themen 7
S JavaMail --> HTML-Mail verschicken? Allgemeine Java-Themen 7
S Ungelesene Mails mit Java Mail abholen Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben