Avatar billede jb3580 Nybegynder
10. marts 2004 - 08:29 Der er 16 kommentarer og
1 løsning

send mail

Jeg har problemer med at sende en mail via Java.
når jeg forsøger at sende en mail skriver den følgende:

MessagingException: javax.mail.NoSuchProviderException: smtp

Jeg bruger følgende kode:

protected Message prepareHeader( String smtp_host, String from, String to, String subject ) throws IOException, AddressException, MessagingException {

Properties props = new Properties();
props.put( "mail.smtp.host", smtp_host );
Session session = Session.getDefaultInstance( props, null );
Message msg = new MimeMessage( session );
InternetAddress addr = new InternetAddress( to );
msg.addRecipients( Message.RecipientType.TO, new InternetAddress[] { addr } );
InternetAddress from_addr = new InternetAddress(from);
msg.setFrom(from_addr);
msg.setSubject(subject);
return msg;
}
   
public void sendMail( String smtp_host, String from, String to, String subject, String message ) throws IOException, AddressException, MessagingException {

Message msg = prepareHeader( smtp_host, from, to, subject );
msg.setContent( message, "text/plain" );
Transport.send( msg );
}

er der nogen der kan hjælpe mig med det problem?
Avatar billede medions Nybegynder
10. marts 2004 - 08:40 #1
Prøv sådan her:

protected Message prepareHeader( String smtp_host, String from, String to, String subject ) throws IOException, AddressException, MessagingException {

Properties props = new Properties();
props.put( "mail.tele.dk", smtp_host );
Session session = Session.getDefaultInstance( props, null );
Message msg = new MimeMessage( session );
InternetAddress addr = new InternetAddress( to );
msg.addRecipients( Message.RecipientType.TO, new InternetAddress[] { addr } );
InternetAddress from_addr = new InternetAddress(from);
msg.setFrom(from_addr);
msg.setSubject(subject);
return msg;
}
   
public void sendMail( String smtp_host, String from, String to, String subject, String message ) throws IOException, AddressException, MessagingException {

Message msg = prepareHeader( smtp_host, from, to, subject );
msg.setContent( message, "text/plain" );
Transport.send( msg );
}

//>Rune
Avatar billede arne_v Ekspert
10. marts 2004 - 08:40 #2
2 gæt:

1)  security problem

2)  session er gået ud af scope når du kalder send
Avatar billede fsconsult.dk Nybegynder
10. marts 2004 - 08:44 #3
Jeg plejer at tilføje:
  props.put("mail.transport.protocol", "smtp");

Jeg formoder at din server har ret til at benytte den SMTP server du angiver med smtp_host?
Avatar billede jb3580 Nybegynder
10. marts 2004 - 08:44 #4
den keyværdi man putter i props definerer den ikke protokollen, eller bruges den til at definere noget andet ??
Avatar billede jb3580 Nybegynder
10. marts 2004 - 08:47 #5
når jeg isolerer de enkelte steps, kan jeg se fejlen opstår i linien:
Transport.send( msg );
Avatar billede arne_v Ekspert
10. marts 2004 - 08:48 #6
Kunne du prøve at merge de 2 metoder ?

(for at teste min hypotese #2)
Avatar billede fsconsult.dk Nybegynder
10. marts 2004 - 08:49 #7
de værdier du putter i props, bliver ikke brugt til noget før du udfører Transport.send, derfor fejlen i dette step  :-)
Avatar billede jb3580 Nybegynder
10. marts 2004 - 08:51 #8
har nu prøvet at merge metoderne uden held, jeg har fået verificeret ip-adressen til vores smtp-server så den skulle også være iorden
Avatar billede simonvalter Praktikant
10. marts 2004 - 09:05 #9
du kan tage et kig her
http://onesearch.sun.com/search/developers/index.jsp?col=devforums&qp=&qt=NoSuchProviderException

flere af dem peger på at du ikke har alt hvad du skal bruge i din classpath
det kunne også være security problem som arne siger ... et hurtigt skimt sagde vist noget om at i servlets, applets skal du bruge activaction.jar

men prøv lige at telnet ip:25
og check om der virklig kører en smtp
Avatar billede arne_v Ekspert
10. marts 2004 - 09:07 #10
Enten skal j2ee.jar være i classpath eller så skal javamail.jar+activation.jar være
i classpath.

Men hvis det er er applet, RMI eller noget andet som kører med en skrap
security manager så kan dte være security (servlets/JSP på et web hotel
vil typisk køre med en security manager).
Avatar billede jb3580 Nybegynder
10. marts 2004 - 09:23 #11
så fik jeg det selv til at virke - en af mine kolleger nævnte at SUN's egen mail.jar ikke virker. Så den er blevet skiftet ud med en fra ibm - og voila så virkede skidtet.
Men tusind tak for hjælpen :-)
Avatar billede arne_v Ekspert
10. marts 2004 - 09:28 #12
Den plejer nu at virke.

Men. Kører I i et IBM environment WebSphere, IBM JDK etc. ?
Avatar billede jb3580 Nybegynder
10. marts 2004 - 09:30 #13
Den applikation jeg er ved at skrive bruger Java sdk 1.4.0 og jeg skriver applikationen i "Websphere Studio Application Developer Integration Edition" - big word :-)
Avatar billede medions Nybegynder
10. marts 2004 - 10:09 #14
Det var vidst de andre der skulle ha' haft points her jb3580 :o)

Loadet, Arne og fsconsult, ønsker i points for jeres besvarelser?

//>Rune
Avatar billede jb3580 Nybegynder
10. marts 2004 - 10:10 #15
ups min fejl
Avatar billede arne_v Ekspert
10. marts 2004 - 11:03 #16
Nu synes jeg ihvertfald ikke at jeg har fortjent point i dette spørgsmål.

Og jeg skal ikke blande mig i om Rune vil levere tilbage.
Avatar billede simonvalter Praktikant
10. marts 2004 - 21:43 #17
jeg klarer mig fint uden ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester