AtNotes Übersicht Willkommen Gast. Bitte einloggen oder registrieren.
05.12.21 - 17:20:56
Übersicht Hilfe Regeln Glossar Suche Einloggen Registrieren
News:
Schnellsuche:
+  Das Notes Forum
|-+  Lotus Notes / Domino Sonstiges
| |-+  Java und .NET mit Notes/Domino (Moderatoren: Axel, m3)
| | |-+  Aus einer URL die zugehörige Mail erhalten?
« vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: Aus einer URL die zugehörige Mail erhalten?  (Gelesen 3968 mal)
DaHias
Aktives Mitglied
***
Offline Offline

Beiträge: 132


« am: 03.11.09 - 08:29:47 »

Hi zusammen,

Ich stehe vor folgendem Problem: Ich will an einer Stelle Mails per Drag&Drop fallen lassen und dort eben anstatt der URL zu der Mail das Notes-Document haben. Aber wie mache ich das?

Code:
public void drop(DropTargetEvent event)
   {
   
    final String[] sourceNames = (String[]) event.data;
    final String destName = getTargetFile(event);
    if(sourceNames == null || destName == null)
    return;
               
    for(int i = 0; i<sourceNames.length; i++)
    {
    File sourceFile = new File(sourceNames[i]);
    File destFile = new File(destName + "/" + sourceFile.getName());

Soweit bin ich (bzw. den Code gibts sowieso, ist also nicht von mir) und jetzt will ich eben, dass in SourceFile ned nur eine URL zu der Mail ist, sondern dass ich daraus mir das Dokument holen kann.

Wie kann ich das machen?

Grüße,
Mathias
Gespeichert
Sebastianh
Gast
« Antworten #1 am: 03.11.09 - 13:33:25 »

Hi,

evtl. :
db.getDocumentByURL()?

Gruß,

Sebastian
« Letzte Änderung: 03.11.09 - 14:56:39 von Sebastianh » Gespeichert
MatthiasK
Frischling
*
Offline Offline

Beiträge: 14


« Antworten #2 am: 25.11.09 - 15:24:08 »

Hi zusammen,

genau dasselbe bräuchte ich auch und zwar aus Notes 8.5 heraus eine Mail per D&D in eine Dokumentenverwaltung hinein.
Wenn ich das jetzt mache wird als Dokument eben nur eine URL Datei exportiert. Wenn ich das ganze als TXT oder noch besser als html oder PDF rausziehen könnte wäre perfekt....aber text reicht zur not ;-)

seht ihr da eine Möglichkeit? muss leider gestehen dass ich von Notes nicht wiklich viel ahnung habe...

danke vorab für jedwede hilfe...
Gespeichert
Sebastianh
Gast
« Antworten #3 am: 26.11.09 - 08:55:27 »

Hi,

du kannst mit der Klasse dxlexporter das Dokument aus dem Notesclient heraus exportieren und in (quasi) Domino-XML abspeichern. Das sollte Dir weiterhelfen, wenn ich Dich richtig verstanden habe.

Grüße,

Sebastian
Gespeichert
flaite
Gold Platin u.s.w. member:)
*****
Offline Offline

Beiträge: 2966


WWW
« Antworten #4 am: 26.11.09 - 22:20:38 »

Mit der URL kannst du zumindest dir zumindest per jakarta HTTP Client die Mail als HTML besorgen. Damit hast du sämtliche Formatierungsinformationen der Domino HTTP Engine.
Die Attachments kannst du dir auch besorgen, indem du das html der Mail parst. Es gäbe da sicher auch einen anderen Weg über die Notes API.
Schwieriger wird es schon mit eventuell eingebetteten COM Objekten.

Es gibt afaik keinen einfacheren Weg.
Gespeichert

Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile
MatthiasK
Frischling
*
Offline Offline

Beiträge: 14


« Antworten #5 am: 27.11.09 - 08:21:44 »

das klingt schonmal nicht schlecht, den anhang bräuchte ich noch nichtmal...

gibts da irgendeine art step-by-step anleitung oder so? ich hab mir den jakarta client zwar schon besorgt aber weiß ehrlich gesagt jetzt nichts damit anzufangen...müsste ich den in einen apache einbinden oder wie geht das vor sich?

vielen dank vorab
Gespeichert
flaite
Gold Platin u.s.w. member:)
*****
Offline Offline

Beiträge: 2966


WWW
« Antworten #6 am: 27.11.09 - 09:20:55 »

In HTTP Client sind Beispiele dabei. Du brauchst einen GET Request.

Hier noch ein wenig Code von mir allerdings für einen Post Request mit ein paar Besonderheiten. Hab Kommentare reingeschrieben:
ProxyAuthConfig und HostAuthConfig sind einfach ein paar JavaBeans (Java Klassen mit gettern und settern).

Code:
public InputStream excecute() throws ConfigurationException, HttpException,
IOException, HttpConnectionNotOkException {
if (url == null) {
throw new ConfigurationException("url must be set.");
}
if (bodyEntity == null) {
throw new ConfigurationException("body Entity is not filled");
}
HttpClient client = new HttpClient();
initProxyAuth(client, this.proxyAuthConfig);
initHostAuth(client, this.hostAuthConfig);

PostMethod postMethod = new PostMethod(url);
               
// wirst du nicht brauchen - Start
Iterator itKey = httpHeader.keySet().iterator();
while (itKey.hasNext()) {
String headerName = itKey.next().toString();
String headerValue = httpHeader.get(headerName).toString();
postMethod.addRequestHeader(headerName, headerValue);
}

postMethod.setRequestEntity(bodyEntity);
// wirst du nicht brauchen ENDE

int ret = client.executeMethod(postMethod); // request abfeuern
if (ret != 200) {
String retAsString = postMethod.getResponseBodyAsString();

throw new HttpConnectionNotOkException("Return code was: " + ret + "\nmsg=" + retAsString);
}

InputStream is = postMethod.getResponseBodyAsStream();
return is;

}

private void initProxyAuth(HttpClient client, ProxyAuthConfig config) {
if (config != null) {
client.getHostConfiguration().setProxy(config.getHost(),
config.getPort());
HttpState state = client.getState();
AuthScope authScope = new AuthScope(config.getHost(), config
.getPort(), AuthScope.ANY_REALM);
state.setProxyCredentials(authScope,
new UsernamePasswordCredentials(config.getUser(), config
.getPwd()));
client.getParams().setAuthenticationPreemptive(true);

}
}

/**
* Authentification for remote service.
*
* @param host
*            remote host
* @param port
*            remote port
* @param hostUserName
*            remote user
* @param hostPwd
*            remote password
*/
private void initHostAuth(HttpClient client, HostAuthConfig config) {
if (config != null) {
HttpState state = client.getState();
AuthScope authScope = new AuthScope(config.getHost(), config
.getPort(), AuthScope.ANY_REALM);
state.setCredentials(authScope, new UsernamePasswordCredentials(
config.getUser(), config.getPwd()));
client.getParams().setAuthenticationPreemptive(true);
}

}


/// der aufrufende Code von excecute in einer anderen Klasse.

private Object sendSoap(String body) throws HttpException,
ConfigurationException, IOException, HttpConnectionNotOkException,
JDOMException {
Object ret = null;
String strMsg = "Module " + agtModule + ", sendSoap():";

InputStream is = null;
// 2. soap an Server, response
post = new DoPost();

// Set the SOAP action and security
post.setUrl(SOAPUrlTarget + SOAPUrlParams);
post.setProxyAuth(wsProxyAuth);
post.setHostAuth(wsHostAuth);

// Set the Body, generated for each document
post.setBodyEntity(body);

post.addHttpHeader("Content-Type", "text/xml; charset=utf-8");
post.addHttpHeader("Accept",
"application/soap+xml, application/dime, multipart/related, text/*");
post.addHttpHeader("User-Agent", "Axis/1.4");
post.addHttpHeader("Cache-Control", "no-cache");
post.addHttpHeader("Pragma", "no-cache");
post.addHttpHeader("SOAPAction",
"http://sap.com/xi/WebService/soap1.1");

// SPIErrorHandler.logAction(strMsg + " Post object: \t" +
// post.toString(), dbCurrent);

try {

is = post.excecute();
// 3. soapResponse verarbeiten.
SoapSapToBean parser = new SoapSapToBean();
// SoapToString bean = new SoapToString(); -> for debug purposes
/**
* The Response bean contains the jdom xpath results of the SOAP
* return message
*/
ResponseBean bean = new ResponseBean();

ret = parser.process(is, bean);

is.close();
is = null;

} finally {
/*
* It is very urgent to close the stream in a controlled way, to
* avoid problems on the OS
*/
if (is != null) {
try {
is.close();
} catch (java.io.IOException ioe) {
//ioe.printStackTrace();
SPIErrorHandler.handleError(ioe.toString(), dbCurrent);
}
} // end if

}

// transfer the SOAP result to the next level
return ret;

}

Nicht vergessen den InputStream in der aufrufenden Methode im finally zu schliessen!
Den InputStream kannst du dann in ein File schreiben. Oder einen StringWriter. In meinem Fall übergeb ich es an ein selbstgeschriebenes XML-To-Bean Framework. Was auch immer.

Zum Testen kannst du auch erstmal einen String zurückgeben. Wie in dem Exception-Zweig von dem excecute:
Code:
String retAsString = postMethod.getResponseBodyAsString();

Gibt natürlich ein Sicherheitsproblem. Um dich am Domino Server zu autorisieren, eine Mail-NSF zu lesen, musst du Leserechte auf sie haben. Bei deiner Mailbox sollte das kein Problem darstellen. Gilt aber nicht unbedingt für die Mailboxen anderer Leute. Du kannst username / pwd eines Users einer Admingruppe nehmen. Aber der sollte auch nicht so allgemein bekannt sein.
Möglich ist etwa dir mit Bouncy-Castle Code ein bischen Verschlüsselungscode zu basteln. Dann können Passwortkundige dieses Superusers das Passwort verschlüsselt speichern. Falls du mit einem JSR168/286 Portalserver arbeitest gibts da weitere Single Sign On und sonstige Möglichkeiten. Aber das ist eigentlich schon das nächste Thema.

Frag mich, wenn du was nicht verstehst. Möglicherweise mußt du HTTP redirects folgen. Wird von HTTPClient unterstützt. Versuch google
follow redirects HttpClient
Das Beispiel ist mit HTTP-Post. Du brauchst GET. Aber das ist sehr ähnlich. Schau in die API oder die Beispiele, die bei HTTP Client dabei sind.

Gruß
Gespeichert

Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile
Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006, Simple Machines Prüfe XHTML 1.0 Prüfe CSS
Impressum Atnotes.de - Powered by Syslords Solutions - Datenschutz | Partner: