mail per smtp lokal in postfix einliefern

Sladda

Aktives Mitglied
Hallo.

Ich habe ein Java-Programm geschrieben, das auf einer ubuntu maschine, per Shell-Aufruf emails an den postfix übergibt, der die mails dann versendet.
Etwa so:
Java:
String cmd = "/usr/sbin/sendmail -t;

		Process p = Runtime.getRuntime().exec(cmd);					
					
		InputStream p_i_s = p.getInputStream();
		InputStream p_e_s = p.getErrorStream();
					
		OutputStream ops = p.getOutputStream();
		PrintWriter out = new PrintWriter(new OutputStreamWriter(ops));
		out.println(prepareEmail(to,subject,html,text, nid, rid));
		out.flush();
(prepareEmail baut einen String zusammen, der die Email im MIME-Format enthält).

Jetzt möchte ich die mail aber nicht mehr über den Shell-Aufruf mit sendmail an den postfix geben, sondern lokal per smtp, da das wesentlich schneller gehen soll (wir haben sehr viele mails zum versenden (Kein Spam! ^^)).

Leider weiß ich nicht wie das geht. JavaMail scheint mir dafür nicht geeignet oder zumindest finde ich da keinen Ansatz um die Mail lokal einzuliefern und kann mir auch nicht vorstellen, dass das schneller geht, als der Shellaufruf wenn man bedenkt wie viele Objekte da bei JavaMail erzeugt werden usw...

Kann mir jemand weiterhelfen?

Viele Grüße
sladda
 

Der Müde Joe

Top Contributor
Keine Ahnung was du jetzt genau machen willst?
Mails erstellen und versenden? JavaMail
Einen MailServer? James - Overview
oder was?

EDIT:
>zumindest finde ich da keinen Ansatz um die Mail lokal einzuliefern

Was heisst das? Mails kann man Senden und Empfangen. Irre liefert man ein.
Senden tut man mit dem SMTP Protokoll
Empfangen wahlweise mit POP3 oder IMAP

Das alles kann JavaMail.
 
Zuletzt bearbeitet:

Sladda

Aktives Mitglied
danke für die Antwort :)

Ich will Mails verschicken. In großen Mengen.
Dafür habe ich einen leistungsstarken root-server.
Auf diesem server soll eine java-Anwendung laufen, die die mails aus einer Datenbank holt und PER SMTP lokal an den postfix auf diesem server übergibt, der dann ja die mail versendet.

Momentan wird die mail per shell-cmd an den postfix übergeben. Funktioniert auch gut. Aber ich möchte ausprobieren, ob die Übergabe per SMTP schneller geht als per Shell-cmd.

Ich hoffe es ist jetzt deutlicher geworden was ich meine!?
 

Der Müde Joe

Top Contributor
>Ich will Mails verschicken.

Ok. Kling schön.

>In großen Mengen.

Ok. Kling dubios.

>Auf diesem server soll eine java-Anwendung laufen...

Wie liegen die Mails in der DB vor? flat mit header und body (.eml mässig?)
Könntest sie dann (via Stream) in eine MimeMessage packen (JavaMail) und
dann über Transport.send(...) an den postfix weiterleiten. Aber ob das schneller ist bezweifle ich.
 

Sladda

Aktives Mitglied
> Ok. Kling dubios.
Keine Sorge, es geht alles mit rechten Dingen zu :)

> Wie liegen die Mails in der DB vor? flat mit header und body (.eml mässig?)
Sie sind quasi gestückelt (zB ein Feld für Betreff, ein Feld für den Text, etc.) und werden in Java dann als String zusammengebastelt, sodass ein valides MIME-Format rauskommt.

> Könntest sie dann (via Stream) in eine MimeMessage packen (JavaMail) und dann über Transport.send(...) an den postfix weiterleiten.
Ok, dann setze ich einfach localhost als SmtpHost ein und verzichte auf Authentication!?

> Aber ob das schneller ist bezweifle ich.
Das gilt es herauszufinden....
Eine andere Möglichkeit das gleiche zu erreichen ohne JavaMail gibt es nicht?
 

Der Müde Joe

Top Contributor
Ich hab da so ein FAQ-Teil, das man schnell ummodeln kann für Test. Da es soweit ich sehe simple Mails sind und keine Multiparts, kann man gleich alles in die Message drücken (setText() oder so) und muss keine Multiparts erstellen.

Was dabei teuer ist (zeitaufwendig), ist das erstellen der Session! Aber selbst ist dem Mann. Einfach mal ein wenig rumspielen


Java:
package ch.dmj.faq.mail;

import java.io.File;
import java.io.IOException;
import java.util.Properties;

import javax.mail.Message;
import javax.mail.Message.RecipientType;
import javax.mail.MessagingException;
import javax.mail.NoSuchProviderException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.URLName;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;


class SimpleMail {

	// login data
	private static final String TYPE = "smtp";
	private static final String HOST = "localhost";
	private static final String USER = "sysadmin";
	private static final String PASSWD = "password";
	private static final int PORT = 25;
	// send data
	private static final String SENDER = "sysadmin@localhost";
	private static final String RECIPIENT = "test@localhost";

	public static void main(String[] args) throws Exception {
		sendMail();
	}

	private static void sendMail() throws NoSuchProviderException, MessagingException,
			AddressException, IOException {
		Properties props = new Properties();
		props.put("mail.smtp.starttls.enable", "true");
		Session session = Session.getDefaultInstance(props);
		session.setDebug(false);
		Transport tr = session.getTransport(new URLName(TYPE, HOST, PORT, null, USER, PASSWD));
		Message message = new MimeMessage(session);
		message.addRecipient(RecipientType.TO, new InternetAddress(RECIPIENT));
		message.addFrom(new InternetAddress[] { new InternetAddress(SENDER) });
		//subject
		message.setSubject("the subject");
		//the multipart
		MimeMultipart multiPart = new MimeMultipart("mixed");
		// a plaintext part
		MimeBodyPart body1 = new MimeBodyPart();
		body1.setContent("blub", "text/plain");
		multiPart.addBodyPart(body1);
		// a html part
		MimeBodyPart body2 = new MimeBodyPart();
		body2.setContent("<b>hallo welt</b>", "text/html");
		multiPart.addBodyPart(body2);
		// a picture
		MimeBodyPart body3 = new MimeBodyPart();
		body3.attachFile(new File("/home/user/Desktop/picture"));
		multiPart.addBodyPart(body3);
		// set the content to the multipart
		message.setContent(multiPart);
		//send
		tr.connect();
		tr.sendMessage(message, message.getAllRecipients());
		tr.close();
	}
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
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
I Eigenes Mail-Programm schreiben Allgemeine Java-Themen 21
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
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
S Java Mail IOException Allgemeine Java-Themen 13
B Mail mit Java Allgemeine Java-Themen 2
S Java mail weiterleitung funktioniert nicht Allgemeine Java-Themen 2
L E-Mail Auswertung mit Servlet (Excel) Allgemeine Java-Themen 3
G Probleme beim Mail-Api mit BCC Allgemeine Java-Themen 2
S Mail mit zip-Attachment Allgemeine Java-Themen 2
G mail body parsen (->attachment & filename) Allgemeine Java-Themen 2
C [javax.mail] Betreff vergleichen Allgemeine Java-Themen 5
C [javax.mail] Folder not open Allgemeine Java-Themen 2
G Probleme mit java.mail Allgemeine Java-Themen 2
M javax.mail – Sending failed – Invalid Addresses Allgemeine Java-Themen 8
R Java Mail Abrufen von Mails Allgemeine Java-Themen 2
P Inhalt einer Mail anzeigen Allgemeine Java-Themen 5
S E-Mail ueber Exchange Server schicken! Allgemeine Java-Themen 3
P Streams per Mail mit JavaMailAPI versenden Allgemeine Java-Themen 3
S java mail API, email versenden Allgemeine Java-Themen 8
S mail von server mittels mailapi löschen Allgemeine Java-Themen 2
F Log4j2 SMTP Appender Beispiel Allgemeine Java-Themen 3
L SMTP Java Allgemeine Java-Themen 17
S SMTP-Limit bei Newsletter-Client Allgemeine Java-Themen 5
K Mails verschicken ohne SMTP-Server Allgemeine Java-Themen 18
D JavaMail SMTP Fehlermeldung Allgemeine Java-Themen 2
M SMTP-Server ohne Konto/Authenticator Allgemeine Java-Themen 2
S SMTP-AUTH-Login Allgemeine Java-Themen 2
M Test geht auf Travis und mit Github Action schief aber nicht lokal Allgemeine Java-Themen 3
D Input/Output Datei wird lokal aber nicht vom Webserver ausgelesen... Allgemeine Java-Themen 2
L Erste Schritte Eclipse und Lokal funktioniert - in HTML nicht! Allgemeine Java-Themen 2
L JSP: Datei lokal speichern Allgemeine Java-Themen 2
S Applet funktioniert online - nur nicht lokal..? Allgemeine Java-Themen 2
J Zeilenumbrüche in eingelesenen Dateien (lokal & ftp) Allgemeine Java-Themen 5
P Passwort lokal speichern Allgemeine Java-Themen 5
R Dateien lokal kopieren Allgemeine Java-Themen 6
C Passwörter sicher (verschlüsselt) lokal speichern Allgemeine Java-Themen 3
B Pfade des Webservers lokal nachbauen Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben