mboost-dp1
Java: Starte email-klient med vedhæftning.
- Forside
- ⟨
- Forum
- ⟨
- Programmering
Hej kloge hoveder!
Jeg er kommet i vanskeligheder igen..igen..
Jeg er igang med en applikation, hvori brugeren skal have mulighed for at trykke på en knap, hvorefter vedkommendes email-klient skal starte op med en adresse, et emne samt en vedhæftet fil.
Det er det sidste jeg er i bekneb over..
Javas bibliotek inderholder "java.awt.Desktop".
Ved hjælp af Desktop-objektet er det muligt, såfremt det er understøttet af platformen, at tilgå standardprogrammer på computeren.
Således starter følgende kode, email klienten på computeren.
mail()-metoden kan ligeledes modtage en URI som følger standarden for mailto-protokollen.
Der er det muligt at tilføje elementer såsom "to", "cc", "subject" og "body". Men altså ikke "attachments"..
Søgninger på min ven, google, siger at der var en mulighed i det gamle outlook 2003 men at det er blevet lukket.
Desuden er min søgning kommet forbi JavaMail API'en, men jeg ønsker ikke at applikationen skal sende emails direkte, da jeg er tilhænger af ikke at forvirre brugeren. Hvis han er vant til at sende email med Outlook, skal det blive ved sådan.
Desuden så kan jeg se problemer i at TDC endnu engang skifter SMTP-server og brugeren selv skal stå for at ændrer dette i applikationen..
Er der nogen som har en godt ide må de gerne komme med den.
Eventuelt noget med Runtime.. det kan lade sig gøre med følgende:
Problemet er at jeg her bliver nødt til at vide hvilket program der er installeret på computeren, og hvor det ligger. Desuden kan jeg ikke finde nogle switch til at tilføje adresser eller emne.
Kan I..?
God aften!
Kenn
Jeg er kommet i vanskeligheder igen..igen..
Jeg er igang med en applikation, hvori brugeren skal have mulighed for at trykke på en knap, hvorefter vedkommendes email-klient skal starte op med en adresse, et emne samt en vedhæftet fil.
Det er det sidste jeg er i bekneb over..
Javas bibliotek inderholder "java.awt.Desktop".
Ved hjælp af Desktop-objektet er det muligt, såfremt det er understøttet af platformen, at tilgå standardprogrammer på computeren.
Således starter følgende kode, email klienten på computeren.
Desktop d = Desktop.getDesktop()
d.mail()
mail()-metoden kan ligeledes modtage en URI som følger standarden for mailto-protokollen.
Der er det muligt at tilføje elementer såsom "to", "cc", "subject" og "body". Men altså ikke "attachments"..
Søgninger på min ven, google, siger at der var en mulighed i det gamle outlook 2003 men at det er blevet lukket.
Desuden er min søgning kommet forbi JavaMail API'en, men jeg ønsker ikke at applikationen skal sende emails direkte, da jeg er tilhænger af ikke at forvirre brugeren. Hvis han er vant til at sende email med Outlook, skal det blive ved sådan.
Desuden så kan jeg se problemer i at TDC endnu engang skifter SMTP-server og brugeren selv skal stå for at ændrer dette i applikationen..
Er der nogen som har en godt ide må de gerne komme med den.
Eventuelt noget med Runtime.. det kan lade sig gøre med følgende:
c:\program files (x86)\microsoft office\office12\outlook.exe /a "c:\file.txt"
Problemet er at jeg her bliver nødt til at vide hvilket program der er installeret på computeren, og hvor det ligger. Desuden kan jeg ikke finde nogle switch til at tilføje adresser eller emne.
Kan I..?
God aften!
Kenn
Nok en dead end men et alternativ :
Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler mailto:"+"address");
Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler mailto:"+"address");
Det er så en platform specifik løsning (til Windows)røvskæg (2) skrev:Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler mailto:"+"address");
Et bedre alternativ er bare:
Runtime.getRuntime().exec("mailto: " + address)
Da det så er op til systemet at have en mailto handler installeret. Hvilket vist er meget normalt :)
Man kan så append de parameter der blev foreslået i #3
@Windcape
Helt enig. Det er fy fy, at lave en platform specifik løsning med java.
Men så vidt jeg husker virker "Runtime.getRuntime().exec("mailto: " + address)" ikke i fx. XP - eller hvad ?
I de programmer hvor jeg har skulle lave noget, der åbnede en browser, har jeg smagt på platform og så benyttet forskellige metoder derefter.
Men der har kravet også været, at det skulle være kompatibelt med min. jre 1.4. Det var før Desktop class'en.
Helt enig. Det er fy fy, at lave en platform specifik løsning med java.
Men så vidt jeg husker virker "Runtime.getRuntime().exec("mailto: " + address)" ikke i fx. XP - eller hvad ?
I de programmer hvor jeg har skulle lave noget, der åbnede en browser, har jeg smagt på platform og så benyttet forskellige metoder derefter.
Men der har kravet også været, at det skulle være kompatibelt med min. jre 1.4. Det var før Desktop class'en.
#6
Forbedring til #6
Overstående virker også, og er måske mere generisk end xdg-email!
Kan også bruges med de parameter fra #3
Husk quotationstegn!
Forbedring til #6
xdg-open "mailto:[email protected]"
Overstående virker også, og er måske mere generisk end xdg-email!
Kan også bruges med de parameter fra #3
xdg-open "mailto:[email protected]?subject=my report&body=see attachment"
Husk quotationstegn!
Windcape (7) skrev:#6
Forbedring til #6
xdg-open "mailto:[email protected]"
Jeg kan bekræfte, at ovenstående også fungerer i OpenSUSE med KDE, så den burde virke i alle gængse distributioner.
Hej I to..
Løsningerne i har nævnt løser jo netop ikke mit problem, sådan som jeg kan se det..
Mit problem er jo at mailto-protokollen ikke understøtter attachments..
Overstående er vel den korrekte måde at gøre tingene på, hvis vi ser på platformuafhængighed.
Det virker også glimrende.. der kan bare ikke vedhæftes elementer..
Følgende giver ingen fejl, men vedhæfter heller ikke filen:
Jeg håber I forstår hvad jeg mener..
Løsningerne i har nævnt løser jo netop ikke mit problem, sådan som jeg kan se det..
Mit problem er jo at mailto-protokollen ikke understøtter attachments..
Desktop d = Desktop.getDesktop();
URI uri = new URI("mailto:" + address + "?SUBJECT=" + subject);
d.mail(uri);
Overstående er vel den korrekte måde at gøre tingene på, hvis vi ser på platformuafhængighed.
Det virker også glimrende.. der kan bare ikke vedhæftes elementer..
Følgende giver ingen fejl, men vedhæfter heller ikke filen:
Desktop d = Desktop.getDesktop();
URI uri = new URI("mailto:" + address + "?SUBJECT=" + subject+"&ATTACHMENT='C:/file.txt'");
d.mail(uri);
Jeg håber I forstår hvad jeg mener..
Det eneste jeg umiddelbart kan finde er at lave en ny e-mail og gemme den som .eml, og så bagefter åbne den. Ellers siger alle andre at det ikke er muligt.
Jeg ved godt det måske lyder som en lidt hackish løsning, men jeg har ikke kunne finde andre.
Kunne du ikke konstruere hele e-mailen som en midlertidig fil, hvor du på forhånd encoder din attachment efter gældende standard, og så åbner systemets default mail-program med den midlertidige mail-fil ?
Edit: Hov, der var markjensen lige lidt hurtigere :)
Kunne du ikke konstruere hele e-mailen som en midlertidig fil, hvor du på forhånd encoder din attachment efter gældende standard, og så åbner systemets default mail-program med den midlertidige mail-fil ?
Edit: Hov, der var markjensen lige lidt hurtigere :)
Protokollen er fint specificeret, og SUN har biblioteket JavaMail som også kan danne dem.tazimn (13) skrev:Jow... det har jeg selv tænkt på..
Men er der nogle guides til at lave disse..?
Det er dog et super elendigt API, og rigtig træls at bruge. (Men hey, det er Java, what to expect :p)
Jeg checkede lige op på mailto. I Thunderbird betragtes det som et sikkerhedshul
Så du skal nok ikke forvente at det vil virke i noget som helst program. Hvad er formålet i første omgang anyway?
Så du skal nok ikke forvente at det vil virke i noget som helst program. Hvad er formålet i første omgang anyway?
Windcape (18) skrev:
Hvad er formålet i første omgang anyway?
Applikationen er et faktureringsystem, hvori brugeren skal kunne sende ordrebekræftelser, fakturaer osv, til diverse kunder i kundekartoteket..
Jeg ved at det kan lade sig gøre, da min forhenværende arbejdsplads har et faktureringsystem som kan gøre det..
#19
"som kan gøre det", siger intet om det er noget som er bygget til kun at integerer med Outlook.
Anyway, http://stackoverflow.com/questions/81862/how-do-i-... er nok den eneste løsning på dit problem.
"som kan gøre det", siger intet om det er noget som er bygget til kun at integerer med Outlook.
Anyway, http://stackoverflow.com/questions/81862/how-do-i-... er nok den eneste løsning på dit problem.
Nej, det er klart.. Og jeg tror faktisk også at det er lavet til at interagere udelukkende med Office pakken..
Men derfor burde det jo stadig kunne lade sig gøre.. dog bliver det kun muligt på Windows platformen, og såfremt brugeren har Outlook eller Live Mail installeret..
Men derfor burde det jo stadig kunne lade sig gøre.. dog bliver det kun muligt på Windows platformen, og såfremt brugeren har Outlook eller Live Mail installeret..
#21
Jeps, så ideen med en platformsuafhænging løsning går fløjten. (Og så er en programflade i Java pludselig en dårlig ide, da det giver en meget ringere brugeroplevelse.)
Hvorfor ikke bare automatisk gemme fakturaerne i en mappe i ~/My Documents/ og så lade brugeren automatisk attache den?
Hvis det er fuldautomatisk, så kan du ligeså godt implementere en mini-mailklient med JavaMail.
(Og JDIC er jo sådan set heller ikke cross-platform, medmindre du selv distributere det!)
Jeps, så ideen med en platformsuafhænging løsning går fløjten. (Og så er en programflade i Java pludselig en dårlig ide, da det giver en meget ringere brugeroplevelse.)
Hvorfor ikke bare automatisk gemme fakturaerne i en mappe i ~/My Documents/ og så lade brugeren automatisk attache den?
Hvis det er fuldautomatisk, så kan du ligeså godt implementere en mini-mailklient med JavaMail.
(Og JDIC er jo sådan set heller ikke cross-platform, medmindre du selv distributere det!)
Windcape (22) skrev:#21
Hvorfor ikke bare automatisk gemme fakturaerne i en mappe i ~/My Documents/ og så lade brugeren automatisk attache den
Du mener vel manuelt..?
Ellers kunne jeg godt tænke mig at vide hvordan..?
Er det måske muligt at placere filen i udklipsholderen, åbne emailklienten med adresse og emne, og derefter bruge en makro til at trykke Ctrl+V..?
Longshot i know.. :/
arne_v (26) skrev:1) Drop standard mail klient og send det fra Java via Java Mail API.
Dette ser jeg helst undgået, da det hindre brugeren i at kunne bruge sin egen mailklient til at se hvilke tilbud, ordre eller faktura der er sendt til hvilke kunder..
arne_v (26) skrev:2) Skift fra Java til noget der kan scripte Outlook (noget der kan snakke COM)
Det skulle vel være muligt at skrive en klasse i C++, og derefter kalde den ved hjælp af JNI..?
arne_v (29) skrev:KISS==CC
Jeg synes bare at brugervenligheden går fløjten, når der skal forklares at de mails, han har sendt ikke ligger i "sendte mails", men i indbakken.. Det er jo på ingen måde logisk..
Men det er helt klart den nemmeste løsning..
arne_v (30) skrev:Ja.
Men har du prøvet at bruge COM i C++?
Nææ.. det har jeg ikke.. Er det da umuligt..?
http://support.microsoft.com/kb/259298
tazimn (31) skrev:
Nææ.. det har jeg ikke.. Er det da umuligt..?
http://support.microsoft.com/kb/259298
Det er fuldt understøttet.
Og jeg tror ikke engang at du vil skulle skrive særligt meget kode.
Men at lære COM for at forstå hvordan koden virker er en rimelig omfattende opgave.
Developer's Workshop to COM and ATL 3.0 / Andrew Troelsen
giver en god introduktion.
Og jeg mener at den kan findes på nettet som PDF lovligt.
Men det er tungt stof !
arne_v (33) skrev:tazimn (31) skrev:
Nææ.. det har jeg ikke.. Er det da umuligt..?
http://support.microsoft.com/kb/259298
Det er fuldt understøttet.
Og jeg tror ikke engang at du vil skulle skrive særligt meget kode.
Men at lære COM for at forstå hvordan koden virker er en rimelig omfattende opgave.
Developer's Workshop to COM and ATL 3.0 / Andrew Troelsen
giver en god introduktion.
Og jeg mener at den kan findes på nettet som PDF lovligt.
Men det er tungt stof !
Jamen for helvede da også.. :-)
Hvorfor er ingenting ligetil.. ;-)
Jeg kan trøste mig med at funktionen ligger en del sprints forude, så der er tid nok til at overveje hvordan det skal virke.. Eventuelt går kunden med til at applikationen selv sender de mails, og at han får en kopi i sin indbakke.. Det ville i hvert fald være den nemmeste løsning..
#36
Men skal det ikke forestille at være dit 5 semesterprojekt du har gang i nu ? (Er det forresten så dit speciale/hovedeopgave, eller skal du i praktik før du er færdig?)
Sproget er en mindre betydning, og i skulle da gerne være blevet undervist i C# (eller et andet sprog end Java, men det er jo typisk C# eller C++).
Men skal det ikke forestille at være dit 5 semesterprojekt du har gang i nu ? (Er det forresten så dit speciale/hovedeopgave, eller skal du i praktik før du er færdig?)
Sproget er en mindre betydning, og i skulle da gerne være blevet undervist i C# (eller et andet sprog end Java, men det er jo typisk C# eller C++).
#(C#)
C# (eller VB.NET hvis man foretrækker) er ikke noget dårlig bud til Outlook integration.
.NET kommer med indbygget support for COM (folk der ikke forstår COM kommer dog ofte i problemer alligevel, men der skal skrives mindre kode og nemmere kode end i unmanaged C++).
C# (eller VB.NET hvis man foretrækker) er ikke noget dårlig bud til Outlook integration.
.NET kommer med indbygget support for COM (folk der ikke forstår COM kommer dog ofte i problemer alligevel, men der skal skrives mindre kode og nemmere kode end i unmanaged C++).
COM er heller ikke så smertefuldt i C# 4 som det plejede at være.
Men jeg tror det ville være godt at sætte udviklingen på pause, og finde ud af de relevante platforms- krav og muligheder.
Hvem siger at hele jeres applikation ikke bare kunne være en Thunderbird eller Outlook extension :) Og husk for guds skyld at lave en deployment plan!
Men jeg tror det ville være godt at sætte udviklingen på pause, og finde ud af de relevante platforms- krav og muligheder.
Hvem siger at hele jeres applikation ikke bare kunne være en Thunderbird eller Outlook extension :) Og husk for guds skyld at lave en deployment plan!
Windcape (37) skrev:#36
Men skal det ikke forestille at være dit 5 semesterprojekt du har gang i nu ? (Er det forresten så dit speciale/hovedeopgave, eller skal du i praktik før du er færdig?)
Sproget er en mindre betydning, og i skulle da gerne være blevet undervist i C# (eller et andet sprog end Java, men det er jo typisk C# eller C++).
Det er praktikopholdet vi har gang i nu.. Men opgaven kan godt udvides til at blive hovedopgave..
Vi er kun blevet undervist i Java og JSP..
#39
Platformskravet er Windows..
Vi laver denne applikation for en lille et-mands virksomhed, og det er derfor ikke de store krav til platforme, da det skal erstatte det excel-ark han bruger til at fakturer med..
Ah, og jeres specialiseringsforløb var 100% valgfrit, hvor jeg gætter på ingen så valgte at lære C# (eller et andet sprog)tazimn (40) skrev:Vi er kun blevet undervist i Java og JSP
Ikke særlig fornuftigt! Århus og København har et lidt mere explicit forløb lagt ud.
Ah, den slags opgave....tazimn (40) skrev:Vi laver denne applikation for en lille et-mands virksomhed, og det er derfor ikke de store krav til platforme, da det skal erstatte det excel-ark han bruger til at fakturer med..
Windcape (41) skrev:Ah, og jeres specialiseringsforløb var 100% valgfrit, hvor jeg gætter på ingen så valgte at lære C# (eller et andet sprog)
Held og lykke med at "lære" et andet sprog på 2 måneder, sideløbende med andre projekter.. Det er højst muligt, for 95% af eleverne, at få kendskab til det pågældende sprog.
Desuden var det ikke helt valgfrit.. Der var nogle som spurgte opm det var muligt bare at omkrive en eksisterende applikation, til et andet sprog.. Men det var ikke "udfordrende nok", da det kun var at "lære en anden syntakst"..
Så det var nok 70% valgfrit.
Windcape (41) skrev:Ah, den slags opgave....tazimn (40) skrev:Vi laver denne applikation for en lille et-mands virksomhed, og det er derfor ikke de store krav til platforme, da det skal erstatte det excel-ark han bruger til at fakturer med..
Aner jeg lidt sarkasme..?
Det lykkedes da helt fint for min klasse =) Men vi havde også 5 måneder til det.tazimn (42) skrev:Held og lykke med at "lære" et andet sprog på 2 måneder, sideløbende med andre projekter.. Det er højst muligt, for 95% af eleverne, at få kendskab til det pågældende sprog.
Meget :)tazimn (42) skrev:Aner jeg lidt sarkasme..?
Gå til top
Opret dig som bruger i dag
Det er gratis, og du binder dig ikke til noget.
Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.