Thorbjørn und symcbean haben beide zur Verfügung gestellt viele nützliche Informationen, aber es kann in seiner Vollständigkeit überwältigend sein.Ich werde versuchen, es ansprechbarer zu machen:
Über das Schlimmste, was Sie tun können, ist ein SMTP-Client in Ihrer Anwendung zu bauen und darauf verlassen, um E-Mail an irgendwo in der Welt zu senden. Eine viel bessere Lösung ist es, einen "Standard" -MTA- und/oder SMTP-Server auf Ihrer eigenen Box lokal oder im schlimmsten Fall in Ihrem eigenen Netzwerk zu betreiben.
Ihre App muss also nur E-Mails erhalten, so weit wie Ihr eigener Mail-Server, der hoffentlich auf Port 25 auf demselben Rechner sein wird. Keine SSL-Verschlüsselung, keine Spam-Filterung, nicht viele Dinge, die schiefgehen können. Wenn sich Ihr E-Mail-Server auf dem gleichen Computer wie Ihre App befindet, sind beide (beide) entweder nicht erreichbar oder beide auf dem neuesten Stand.
Sobald Ihre App ihre E-Mails in Ihren lokalen E-Mail-Server verschoben hat (was schnell und nahezu idiotensicher ist), ist es das Problem dieses Servers, die E-Mail an das endgültige Ziel zu senden. Auf einem Linux-Server ist etwas wie Sendmail, qmail, exim oder postfix installiert; unter Windows weiß ich nicht.
Jeder dieser "out of the box" -Mail-Server ist sehr kompetent, um E-Mails zu erhalten. Eine automatische Wiederholung ist bereits eingebaut, mit Wiederholungen nach (z. B.) 1 Stunde, 2 Stunden, 4, 12, 24 und 48 Stunden. Ihr E-Mail-Server wird versuchen, Ihre E-Mails zu übermitteln, und zwar ohne zusätzlichen Aufwand. Fehlgeschlagene Versuche werden im Protokoll des Mail-Servers angezeigt. Sie können dies analysieren und Ihre Schlussfolgerungen ziehen. Wenn es nach dem letzten möglichen Versuch fehlschlägt, wird dies auch in der Protokolldatei vermerkt, und Sie können daraus schließen, dass auf der Empfängerseite etwas nicht stimmte. All diese Kraft ist bereits eingebaut, und Sie sollten nicht einmal daran denken, es zu einem eigenen Mail-Client zu machen.
Schlussbemerkung: Es ist möglich, dass die Übertragung physisch erfolgreich ist, d. H. Die Nachricht wurde geliefert, aber dann wurde sie vom Mailserver oder Client des Empfängers als Spam behandelt; oder der (menschliche) Empfänger löschte es einfach durch Zufall. Keine Software wird dieses Problem mit Sicherheit lösen.
Erste Java-Mail über einen Google SMTP-Server senden finden erfordert ein wenig Java Voodoo und ein Konto zur Autorisierung mit. Ich habe das selbst nicht gemacht, aber ich wäre ziemlich sicher, dass die Frage auf StackOverflow gestellt wurde. –