Avatar billede javakoder Nybegynder
12. marts 2002 - 13:54 Der er 13 kommentarer og
1 løsning

javamail

Jeg har problemer med at sende emails fra en Java-bønne på min Resin-server.
Jeg har downloadet både javamail og jaf, som skulle være de eneste nødvendige imports. Resin godtager da også mit kald fra en .jsp-side, hvor jeg instantierer min SendEmail.java, og kalder min metode, sendEmail, som nøje følger Suns vejledning. Min host-adresse er: "smtp.image.dk". Jeg skriver naturligvis min egen emailadresse på, men desværre sker intet.
Kan nogen mon hjælpe mig?
Peter
Avatar billede disky Nybegynder
12. marts 2002 - 18:06 #1
post din kode, så kigger jeg på den,

Denne her virker:
package mail;

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

public class SendMail
{
   
    String recipient = "";
    String url      ="";
    String sender    = "";
   
    public void setRecipient( String recipient )
    {
        this.recipient = recipient;
    }
   
    public String getRecipient()
    {
        return recipient;
    }
   
    public void setURL( String url )
    {
        this.url = url;
    }
   
    public String getURL()
    {
        return url;
    }
   
    public void setSender( String sender)
    {
        this.sender = sender;
    }
   
    public String getSender()
    {
        return sender;
    }
   
    public boolean sendMail()
    {
        boolean sendMail = true;
        String body = "Din ven vil gerne sladre om denne side: " + getURL();
        try
        {
            Properties props = new Properties();
            props.put("mail.smtp.host", "MAIL SERVER NAVN");
           
            Session mailsession = Session.getDefaultInstance(props, null);
           
            Message msg = new MimeMessage(mailsession);
            msg.setFrom(new InternetAddress( getSender() ));
            msg.addRecipient(Message.RecipientType.TO, new InternetAddress(getRecipient() ));
            msg.setSubject( "Tips fra en ven" );
            msg.setText(body);
           
            Transport.send(msg);
            return true;
        }
        catch( AddressException e )
        {
            return false;
        }
        catch( MessagingException e )
        {
            return false;
        }
    }
}
Avatar billede javakoder Nybegynder
12. marts 2002 - 18:30 #2
Du er vel nok en guttermand! Din kode duer, og min gør ikke. Du må nu godt kigge på den alligevel. Jeg kan ikke selv lade være med at prøve at modificere den i retning af din for at se, hvor den fejler.
Tusind tak for hjælpen!
Peter 

public void sendEmail () {
        try {

            //Set the host smtp address.
            Properties props = System.getProperties();
            props.put("mail.smtp.host", "smtp.image.dk");

            Session session = Session.getDefaultInstance(props, null);

            //Create message.
            Message msg = new MimeMessage(session);

            //Set email values.
            InternetAddress senderAddr = new InternetAddress(this.getSender());
            InternetAddress recepientAddr = new InternetAddress(this.getRecipient());
            msg.setFrom(senderAddr);
            msg.setRecipient(Message.RecipientType.TO, recepientAddr);
          //  msg.setRecipient(Message.RecipientType.TO, recepientAddr);
            msg.setSubject(this.getSubject());
            msg.setText(this.getText());
            msg.setContent(msg, "text/plain");
            Transport.send(msg);
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
Avatar billede disky Nybegynder
12. marts 2002 - 18:35 #3
Jeg takker.

Det er også en vigtig ting ikke bare at bruge noget der virker, men også at finde ud af hvad der er galt :)
Avatar billede disky Nybegynder
12. marts 2002 - 18:37 #4
Den eneste reele forskel er du henter System properties, jeg laver mine egne. og du sætter content type, hvilket jeg glemmer.
Avatar billede javakoder Nybegynder
12. marts 2002 - 18:39 #5
Ja, og det lader til, at det er setContent(), der fejler.
Avatar billede disky Nybegynder
12. marts 2002 - 18:41 #6
Den skal jeg lige studere en dag, den metode er lidt specielt, men jeg mener per default den bruger text/plain,
Avatar billede kama Nybegynder
12. marts 2002 - 18:48 #7
Jeg har brugt nogenlunde samme konstruktion som javakoder.
Jeg havde problemer med tilladelser til getProperties, som jeg så tilføjede i min policy-fil på serveren. Så virkede det!
Avatar billede javakoder Nybegynder
12. marts 2002 - 18:48 #8
Jeg har godt nok brug for at sende HTML, men jeg vil hellere kunne sende text end slet ikke at kunne sende noget.
Det er god erfaring til næste gang, jeg skal debugge noget kode at vide, at jeg bør udkommentere hver eneste linie een ad gangen.
Det var i hvert fald en stor lettelse med din hjælp.
Endnu en gang tak for hjælpen.
Peter
Avatar billede disky Nybegynder
12. marts 2002 - 18:51 #9
Selv tak,

Bare sig til hvis der er problemmer. :)

Det med HTML mener jeg du kan gøre ved at anvende .setHeader() med korrekte parametere.
Avatar billede kama Nybegynder
12. marts 2002 - 18:55 #10
grant {
    permission java.util.PropertyPermission "*", "read,write";
}
Avatar billede disky Nybegynder
12. marts 2002 - 18:56 #11
øh hvad ?
Avatar billede kama Nybegynder
12. marts 2002 - 19:20 #12
Ja, undskyld. Det var i forlængelse af mit forslag til at javakoder kunne få sin kode til at virke. Jeg kunne ikke kalde System.getProperties() før jeg havde tilføjet en security-permission. Derefter har jeg ikke haft problemer hverken med at sende mail eller sætte content til html. Det er muligt at dette slet ikke er problemet!
Avatar billede javakoder Nybegynder
12. marts 2002 - 19:28 #13
Hvor tilføjer du din grant { ... } kode henne? Det eneste problem jeg har haft er, at jeg simpelhen ikke kunne sende emails, på grund af setContent(). System.getProperties() har jeg hele tiden kunnet kalde, men måske din tilføjelse kunne gøre noget. Jeg må tilstå, at jeg aldrig har hørt om den kommando før.
Avatar billede kama Nybegynder
12. marts 2002 - 19:38 #14
Ok. Glem min kommentar.
grant benyttes i en policy-fil.
Det løste problemet for mig, som umiddelbart lignede dit problem.
Det var bare et forslag til fejlfinding.
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