SMTP-Mail Inhalt ermitteln
Hallo Leute,
ich habe in Java einen SMTP-Server implementiert für den Empfang von Mail über SMTP.
Das funktioniert auch ales sehr gut. Ich habe nur das Problem, dass ich den eigentlichen Inhalt der Mail nach SMTP(DATA) nicht extrahieren kann, da ich nicht weis wo er beginnt.
Das Ende der Mail ist ja durch "354 Start mail input; end with ." beschrieben. aber wie kann ich eindeutig den Anfang des Inhaltes ermitteln?
Hat jemand Rat für mich?
ich habe in Java einen SMTP-Server implementiert für den Empfang von Mail über SMTP.
Das funktioniert auch ales sehr gut. Ich habe nur das Problem, dass ich den eigentlichen Inhalt der Mail nach SMTP(DATA) nicht extrahieren kann, da ich nicht weis wo er beginnt.
Das Ende der Mail ist ja durch "354 Start mail input; end with ." beschrieben. aber wie kann ich eindeutig den Anfang des Inhaltes ermitteln?
Hat jemand Rat für mich?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 151991
Url: https://administrator.de/contentid/151991
Ausgedruckt am: 26.11.2024 um 10:11 Uhr
10 Kommentare
Neuester Kommentar
Hallo,
du meintest senden, nicht empfangen
So, um etwas kleinkariert zu sein:
mit POP3 und IMAP nicht empfangen, sondern abgerufen. (Empfangen ist passiv, ich bekomme etwas zugestellt, abrufen aktiv, ich hole ab.)
Grüße
Zitat von @alexdgg:
Aber kein Mailserver wird über POP3 oder IMAP jemals Mails empfangen, weil dies auch nicht möglich ist.
Aber kein Mailserver wird über POP3 oder IMAP jemals Mails empfangen, weil dies auch nicht möglich ist.
du meintest senden, nicht empfangen
So, um etwas kleinkariert zu sein:
mit POP3 und IMAP nicht empfangen, sondern abgerufen. (Empfangen ist passiv, ich bekomme etwas zugestellt, abrufen aktiv, ich hole ab.)
Grüße
Hallo,
verstehe ich nicht.
Der Client sendet DATA, dein Server als Antwort daraufhin 354. Und genau dann fängt die Mail an.
Erst kommen die Header, dann eine Leerzeile, dann der Body (vielleicht meinst du das mit "eigentlichem Inhalt"). Irgendwann kommt eine Zeile, die nur einen . enthält, dann ist die Mail vorbei (bzw. schon am Ende der vorhergehenden Zeile). Aus einer Mail mit Attachments o.ä. den Text herauszufiltern ist nicht ganz trivial, dann müsstest du dich mal mit MIME auseinander setzen.
Gruß
Filipp
verstehe ich nicht.
Der Client sendet DATA, dein Server als Antwort daraufhin 354. Und genau dann fängt die Mail an.
Erst kommen die Header, dann eine Leerzeile, dann der Body (vielleicht meinst du das mit "eigentlichem Inhalt"). Irgendwann kommt eine Zeile, die nur einen . enthält, dann ist die Mail vorbei (bzw. schon am Ende der vorhergehenden Zeile). Aus einer Mail mit Attachments o.ä. den Text herauszufiltern ist nicht ganz trivial, dann müsstest du dich mal mit MIME auseinander setzen.
Gruß
Filipp
Aus einer Mail mit Attachments o.ä. den Text herauszufiltern ist nicht ganz trivial, dann müsstest du dich mal mit MIME auseinander setzen.
Was aber ein MTA gar nicht braucht.
Der Code ist ja ziemlich trivial:
<?php
function read_mail(&$con)
{
$buf = '';
while(($line = fgets($con)) != '.') {
$buf .= $line;
}
return $buf;
}
//... verbindungsaufbau
if(trim(fgets($con)) == 'DATA')
$mail = read_mail($con);
//... abhandlung
?>
Hi Alex,
ginge es denn nicht das Du im ersten Schritt feststellst welcher Client verwendet wird und dann erst die Behandlung für den Text losgeht?
Also erkenne Outlook Express als Client. Mailtext ab zeile 17
Erkenne Thunderbird als Client. Mailtext ab Zeile 9
und so weiter
Wobei Du dann natürlich ständig erweitern müsstest sowie sich ein "neuer" Mailclient verbreitet/durchsetzt. Und es müssten schon im Vorfeld alle verbreiteten Clienten in Diener Liste stehen.
OK OK, iss wohl nicht praktikabel
mfg
kowa
ginge es denn nicht das Du im ersten Schritt feststellst welcher Client verwendet wird und dann erst die Behandlung für den Text losgeht?
Also erkenne Outlook Express als Client. Mailtext ab zeile 17
Erkenne Thunderbird als Client. Mailtext ab Zeile 9
und so weiter
Wobei Du dann natürlich ständig erweitern müsstest sowie sich ein "neuer" Mailclient verbreitet/durchsetzt. Und es müssten schon im Vorfeld alle verbreiteten Clienten in Diener Liste stehen.
OK OK, iss wohl nicht praktikabel
mfg
kowa