22. januar 2003 - 15:31
Der er
20 kommentarer og 1 løsning
Mail fra jsp (igen) med user og pass
Det har været oppe og vende nogen gange, men efter at have læst alle svar igennem (og afprøvet en del), er det stadig ikke lykkedes mig, at finde noget 100% brugbart. Problemet er administrationsdelen, til en hjemmeside, hvor jeg har lavet en login-del. I det tilfælde, at en bruger så forsøger at logge på databasen og denne er nede, skal der så automatisk sendes en fejl-mail til Admin. Og her er så problemet: SMTP-serveren kræver brugernavn og password, for at en bruger kan logge på. Jeg er klar over, at jeg skal bruge put("mail.smpt.auth", "true"); men har rodet med det hele dagen og stadig ikke fået noget til at virke. En færdig test løsning, med både jsp og servlet ville være kanon ;-) Derfor: Hjæælp, Disky :-) og resten herinde.
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
22. januar 2003 - 16:18
#2
Du erstatter: Properties props = System.getProperties(); props.put("mail.smtp.host", "din-mailserver"); Session session = Session.getDefaultInstance(props, null); MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress("fra-adressen")); message.addRecipient(Message.RecipientType.TO, new InternetAddress("til-adressen")); message.setSubject("emne-linien"); message.setText("teksten"); Transport.send(message); med: Properties props = System.getProperties(); props.put("mail.smtp.host", "din-mailserver"); props.put("mail.smtp.auth","true"); Session session = Session.getDefaultInstance(props, null); MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress("fra-adressen")); message.addRecipient(Message.RecipientType.TO, new InternetAddress("til-adressen")); message.setSubject("emne-linien"); message.setText("teksten"); Transport transport = session.getTransport("smtp"); transport.connect(host, "dit-brugernavn", "dit-kodeord"); transport.sendM(message); (jeg kan ikke teste det da jeg ikke har adgang til en sådan mail-server)
22. januar 2003 - 16:20
#3
Hov. Der røg et ekstra M ind i den sidste linie. det skal naturligis ikke være der.
22. januar 2003 - 16:23
#4
Skidt pyt. Den er forkert alligevel. Korrekt er: Properties props = System.getProperties(); props.put("mail.smtp.host", "din-mailserver"); props.put("mail.smtp.auth","true"); Session session = Session.getDefaultInstance(props, null); MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress("fra-adressen")); message.addRecipient(Message.RecipientType.TO, new InternetAddress("til-adressen")); message.setSubject("emne-linien"); message.setText("teksten"); Transport transport = session.getTransport("smtp"); transport.connect(host, "dit-brugernavn", "dit-kodeord"); transport.sendMessage(message, message.getAllRecipients());
22. januar 2003 - 21:26
#5
Hej Galaxy :) Arne's svar skulle virke så vidt jeg lige kan se uden at teste det. Men helt ærligt synes du ikke 150 point er lige i overkanten for sådanne et spørgsmål ?
22. januar 2003 - 23:52
#6
Jeg kan desværre først teste det ordentligt i morgen tidlig, når jeg er i skole, men kigger da lige på det nu. Mht. point. Jo, det har du ret i, men i eftermiddags, var jeg sq ved at blive halvdesperat efter en færdig løsning ;-)
23. januar 2003 - 07:58
#7
Når du engang synes du skal afslutte problemmet, svar selv og behold en del point selv. F.eks. 30 point for denne opgave er helt fair, husk 60 point er for en svær opgave, og 30 er for en alm. opgave.
23. januar 2003 - 08:29
#8
Og
http://www.eksperten.dk/spm/285033 var værd 100 point p.g.a. at den
var så meget sværere, fordi der ikke skulle angives brugernavn/password ????
23. januar 2003 - 10:24
#9
Jeg går i gang nu... men hvorfor er det lige, at du vil have, at jeg skal lave om på den ?? Vi har jo user og pass autentikationen længere nede i den originale ? Og bare rolig Arne... Når jeg har udlovet 150 points, så uddeles de også :-)
23. januar 2003 - 10:40
#10
Du mener hvorfor jeg lavede om fra: transport.send(message); til: transport.sendMessage(message, message.getAllRecipients()); ? Det første compiler ikke ! Af uransagelige årsager har Transport klassen en statisk send med 1 argument og en ikke-statistisk sendMessage med 2 argumenter.
23. januar 2003 - 10:49
#11
jep, men koden på den side du henviser til bruger også sendMessage. vi er enige om, at det er denne kode vi taler om ikke: import java.util.Properties; import javax.mail.*; import javax.mail.internet.*; public class MailExample { public static void main (String args[]) throws Exception ,MessagingException{ String host = "smtp.263.net"; String from = "zong_feng@263.net"; String to = "zfvc@163.com"; // Get system properties Properties props = System.getProperties(); // Setup mail server props.put("mail.smtp.host", host); props.put("mail.smtp.auth","true"); // Get session Session session = Session.getDefaultInstance(props, null); // Define message MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress(from)); message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); message.setSubject("Hello JavaMail"); message.setText("Welcome to JavaMail"); message.saveChanges(); // Send message Transport transport = session.getTransport("smtp"); transport.connect(host, "zong_feng","111111"); transport.sendMessage(message, message.getAllRecipients()); } }
23. januar 2003 - 10:55
#12
Ja. transport.sendMessage med 2 argumenter virker. transport.send med 1 argument virker ikke. (med i tilfældet uden username/password virker Transport.send med 1 argument)
23. januar 2003 - 11:20
#13
Point givet og det virker kanon (uden ændringer) Jeg siger mange tak ;-)
23. januar 2003 - 14:54
#14
tjah... det virker som alm. applikation, men kan ikke få det til at køre som servlet :-(
23. januar 2003 - 16:06
#15
Er der ikke lige en af jer der kan klappe det ind i panden på mig med en stor hammer. public static void main (String args[]) throws Exception ,MessagingException{ skal jo laves om... men til hvad ??
23. januar 2003 - 16:25
#16
Jeg ville ikke begynde at konvertere den applikation til en servlet. Jeg ville tage de relevante linier og kopiere dem ind i den servlet som jeg formoder, at du allerede har.
23. januar 2003 - 16:26
#17
Altså cirka de her linier: Properties props = System.getProperties(); props.put("mail.smtp.host", "din-mailserver"); props.put("mail.smtp.auth","true"); Session session = Session.getDefaultInstance(props, null); MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress("fra-adressen")); message.addRecipient(Message.RecipientType.TO, new InternetAddress("til-adressen")); message.setSubject("emne-linien"); message.setText("teksten"); Transport transport = session.getTransport("smtp"); transport.connect(host, "dit-brugernavn", "dit-kodeord"); transport.sendMessage(message, message.getAllRecipients()); og så skal du bare have import og catch på plads.
23. januar 2003 - 16:34
#18
Noget i retning af: import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class MailServlet extends HttpServlet { private final String MAIL_SERVER = "x.x.x.x"; private final String FROM_ADDRESS = "nn@somewhere.dk"; private final String USER_NAME = "me"; private final String PASSWORD = "hemmeligt"; public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException { Properties props = System.getProperties(); props.put("mail.smtp.host", MAIL_SERVER); props.put("mail.smtp.auth","true"); Session session = Session.getDefaultInstance(props, null); MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress(FROM_ADDRESS)); message.addRecipient(Message.RecipientType.TO, new InternetAddress(req.getParameter("to"))); message.setSubject(req.getParameter("subject")); message.setText(req.getParameter("text")); Transport transport = session.getTransport("smtp"); transport.connect(host, USER_NAME, PASSWORD); transport.sendMessage(message, message.getAllRecipients()); return; } }
23. januar 2003 - 16:36
#19
Ovenstående tager 3 felter fra en form: to subject text og sender en email. PS: Der skal selvfølgelig også outputtes et eller andet svar til brugeren evt. forwardes til en JSP side.
23. januar 2003 - 16:42
#20
Et lidt mere komplet eksempel med alle imports, exception handling og redirect til en JSP side: package test; import java.io.IOException; import java.util.Properties; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.NoSuchProviderException; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class MailServlet extends HttpServlet { private final String MAIL_SERVER = "x.x.x.x"; private final String FROM_ADDRESS = "nn@somewhere.dk"; private final String USER_NAME = "me"; private final String PASSWORD = "hemmeligt"; public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException { try { Properties props = System.getProperties(); props.put("mail.smtp.host", MAIL_SERVER); props.put("mail.smtp.auth", "true"); Session session = Session.getDefaultInstance(props, null); MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress(FROM_ADDRESS)); message.addRecipient( Message.RecipientType.TO, new InternetAddress(req.getParameter("to"))); message.setSubject(req.getParameter("subject")); message.setText(req.getParameter("text")); Transport transport = session.getTransport("smtp"); transport.connect(MAIL_SERVER, USER_NAME, PASSWORD); transport.sendMessage(message, message.getAllRecipients()); resp.sendRedirect("MailSend.jsp"); } catch (IOException e) { } catch (AddressException e) { } catch (NoSuchProviderException e) { } catch (MessagingException e) { } return; } }
24. januar 2003 - 00:56
#21
Alt kom til at virke perfekt nu, så endnu engang TAK !!! :o)
Kurser inden for grundlæggende programmering