Avatar billede delphij Nybegynder
26. august 2001 - 18:48 Der er 19 kommentarer og
2 løsninger

JSP og Email via JavamailAPI

Hej,

Jeg vil gerne sende en email vha. jsp.
Som udgangspunkt et rimeligt simpelt ønske, men jeg kan ikke få noget fornuftigt udaf mine forsøg.

Jeg har prøvet flg. som jeg har sakset sammen fra flere kilder.

<%@ page import=\"java.util.*\" %>
<%@ page import=\"javax.activation.*\" %>
<%@ page import=\"javax.mail.*\" %>
<%@ page import=\"javax.mail.internet.*\" %>

<%
   
    Properties props = System.getProperties();
    props.put(\"mail.smtp.host\",\"myhost\");
    props.put(\"mail.store.protocol\", \"smtp\");
    props.put(\"mail.transport.protocol\", \"smtp\");
    props.put(\"mail.smtp.user\",\"user\");
    props.put(\"mail.smtp.from\",\"myemail.dk\");
    Session mailsession = Session.getInstance(props);
    //mailsession.setDebug(debug);
   
   
    try {
        Message msg = new MimeMessage(mailsession);
        msg.setFrom(new InternetAddress(\"myemail.dk\"));
        msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(\"myemail.dk\"));
        msg.setSubject(\"subject\");
        msg.setSentDate( new java.util.Date() );
        msg.setText(\"body\");
        Transport.send(msg);
    }
    catch (MessagingException mex) { out.println(mex); }


men jeg kan ikke få det til at virke - jeg får flg. meddelse:
\"javax.mail.SendFailedException: Sending failed; nested exception is: javax.mail.MessagingException: Could not connect to SMTP host: myhost.dk, port: 25 OK \"

Er der nogen, der kan præsentere en løsning( med kilekode), der virker eller give mig vink.

Mvh.
Delphij
Avatar billede lbhansen Nybegynder
26. august 2001 - 18:57 #1
Problemet er her:
props.put(\"mail.smtp.host\",\"myhost\");
det skal være en valid smtp server. Hvis du har cybercity, er det fx smtp.cybercity.

Det samme gør sig gældende, at du skal bruge en valid afsender email
Avatar billede delphij Nybegynder
26. august 2001 - 19:03 #2
Naturligvis skal myhost, myemail.dk etc. substitueres med de relevante info.

Lad os dog lege lidt med idéen om at jeg har cybercity så vil det se ud som flg. eller hvad?


    Properties props = System.getProperties();
    props.put(\"mail.smtp.host\",\"smtp.cybercity.dk\");
    props.put(\"mail.store.protocol\", \"smtp\");
    props.put(\"mail.transport.protocol\", \"smtp\");
    props.put(\"mail.smtp.user\",\"nmbXXX\");
    props.put(\"mail.smtp.from\",\"nmbXXX@vip.cybercity.dk\");
    Session mailsession = Session.getInstance(props);

Mvh.
Delphij
Avatar billede lbhansen Nybegynder
26. august 2001 - 19:05 #3
virkede det ikke. Den kurrerer ihvertfald den Exception du får
Avatar billede lbhansen Nybegynder
26. august 2001 - 19:05 #4
to sec. Jeg skriver lige et eksempel:)
Avatar billede delphij Nybegynder
26. august 2001 - 19:07 #5
Exceptionen forsvandt ikke, jeg tror jeg mangler at indstille nogle egenskaber rigtigt for at kunne komme igennem til smtp server?
Avatar billede lbhansen Nybegynder
26. august 2001 - 19:10 #6
ja, det kan godt være den tjekker efter dit brugernavn, men de plejer efterhånden at tjekke på ip nr. istedet.
Avatar billede lbhansen Nybegynder
26. august 2001 - 19:24 #7
nu fik jeg lige kørt det her stykke jsp, og det virkede med min cybercity smtp.

<%@ page import=\"java.util.*\" %>
<%@ page import=\"javax.activation.*\" %>
<%@ page import=\"javax.mail.*\" %>
<%@ page import=\"javax.mail.internet.*\" %>

<%
   
    Properties props = System.getProperties();
    props.put(\"mail.smtp.host\",\"smtp.cybercity.dk\");
    Session mailsession = Session.getInstance(props);
   
    try {
        Message msg = new MimeMessage(mailsession);
        msg.setFrom(new InternetAddress(\"lbh@el-lal.dk\"));
        msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(\"lbh@el-lal.dk\"));
        msg.setSubject(\"hello\");
        msg.setSentDate( new java.util.Date() );
        msg.setText(\"world\");
        Transport.send(msg);
    }
    catch (MessagingException mex) { out.println(mex); }
%>
Avatar billede delphij Nybegynder
26. august 2001 - 19:32 #8
Har du server hos cybercity, da jeg fortsat får flg.

javax.mail.SendFailedException: Sending failed; nested exception is: javax.mail.MessagingException: Could not connect to SMTP host: smtp.cybercity.dk, port: 25

Jeg har ikke selv 100% kontrol over min server, så der kan evt. ligge en hund dér!
Avatar billede lbhansen Nybegynder
26. august 2001 - 19:35 #9
cybercity tjekker på ip adressen.

Hvilken hosting har du?
der er nogle der ikke giver en adgang til ens smtp server, medmindre man lige forinden har lavet en forspørgsel gennem sin pop3 konto først
Avatar billede delphij Nybegynder
26. august 2001 - 19:39 #10
Jeg er en del af et team, der skal udvikle en portal for en større nonprofit orgnanisation i Danmark. Vi ha egen server, men jeg har kun ftp adgang til den, ellers skal alt andet foregå gennem tredje mand.

Men jeg har(personligt) host hos DHT.dk og de bruger den politik, kan du lave noget kode der forespøger om pop3 først og dernæst smtp som ovenfor?
Avatar billede lbhansen Nybegynder
26. august 2001 - 19:42 #11
Det var netop dht jeg selv har erfaringer med:)

Og at forspørge før du sender en besked er overkill. Jeg ville lede efter en ordentlig aftale med DHT, eller bruge en anden mailserver.
Avatar billede lbhansen Nybegynder
26. august 2001 - 19:46 #12
men der er faktisk massere af gode eksempler distribueret med JavaMail. Kig under biblioteket demo.

Det er en masse små eksempler, som går lige på og hårdt, og viser kode for det man oftest har behov for
Avatar billede lbhansen Nybegynder
26. august 2001 - 19:46 #13
du kan også for at teste lige lave et login på din pop3, og så prøve din jsp
Avatar billede delphij Nybegynder
26. august 2001 - 19:57 #14
Det virker ikke, det skal formentlig være fra samme ip det sker.

Jeg har kigget på de demo, men det er som at finde en nål i flere høstakke når man skal debugge, er fejlen i koden, i server opsætningen eller i mængden af info man giver smtp server, tja\' det var tre høstakke!?!
Avatar billede delphij Nybegynder
26. august 2001 - 19:58 #15
Har du jsp på en DHT konto?
Avatar billede lbhansen Nybegynder
26. august 2001 - 20:27 #16
nej, det har jeg ikke. Jeg kører jsp på min egen maskine herhjemme, som har fast ip.
Avatar billede delphij Nybegynder
26. august 2001 - 20:50 #17
Tak for hjælpen, jeg lader spørgsmålet stå åbent lidt endnu, men kommer der ikke et bedre svar er pointene dine.
Avatar billede disky Nybegynder
26. august 2001 - 22:36 #18
Her en en SendMail klasse som med sikkerhed virker som den skal :)
Jeg har selv brugt den til flere personlige og proffesionelle projekter.

Brug klassen som en bean fra din JSP side, og kald så de \'set\' metoder der skal bruges for at sætte de diverse ting og sager. Eller brug det nederste eksempel.


Søg efter \'HOST\' og byd ud med adressen på jeres smtp server.






import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;

public class SendMail
{
    String recipient=\"\";
    String sender= \"\";
        String body=\"\";
        String subject=\"\";
       
    public void setRecipient( String recipient )
    {
            this.recipient = recipient;
    }
   
    public void setSender( String sender)
    {
            this.sender = sender;
    }
   
        public void setBody(String body)
        {
            this.body=body;
        }
       
        public void setSubject(String subject)
        {
            this.subject=subject;
        }

        public boolean sendMail()
    {
        boolean sendMail = true;
        try
        {
            Properties props = new Properties();
            props.put(\"mail.smtp.host\", \"HOST\");
           
            Session mailsession = Session.getDefaultInstance(props, null);
           
            Message msg = new MimeMessage(mailsession);
            msg.setFrom(new InternetAddress(sender));
            msg.addRecipient(Message.RecipientType.TO, new InternetAddress(recipient));
            msg.setSubject(subject);
            msg.setText(body);
           
            Transport.send(msg);

                        return true;
        }
        catch( AddressException e )
        {
            return false;
        }
        catch( MessagingException e )
        {
            return false;
        }
    }
}








import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;

public class SendMail
{
        public boolean sendMail(String recipient, String sender, String body, String subject)
    {
        boolean sendMail = true;
        try
        {
            Properties props = new Properties();
            props.put(\"mail.smtp.host\", \"HOST\");
           
            Session mailsession = Session.getDefaultInstance(props, null);
           
            Message msg = new MimeMessage(mailsession);
            msg.setFrom(new InternetAddress(sender));
            msg.addRecipient(Message.RecipientType.TO, new InternetAddress(recipient));
            msg.setSubject(subject);
            msg.setText(body);
           
            Transport.send(msg);

                        return true;
        }
        catch( AddressException e )
        {
            return false;
        }
        catch( MessagingException e )
        {
            return false;
        }
    }
}



Avatar billede disky Nybegynder
28. august 2001 - 19:54 #19
delphij:

Har du prøvet ?
Avatar billede delphij Nybegynder
28. august 2001 - 19:59 #20
Jeg har prøvet, men kan ikke få det til at virke.
Jeg føler mig sikker på at problemet ikke ligger i koden, men i mine adgangsrettigheder på smtp - serveren eller evt. i opsætningen i serveren, hvorpå koden bliver udført.

Jeg takker mange gange for jeres kode, det vil være et vigtigt udgangspunkt, når jeg skal finde fejlen.
Avatar billede disky Nybegynder
28. august 2001 - 20:01 #21
jeg ved min kode virker.

Men jeg forstår dog ikke din point fordeling.
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