Avatar billede difn Nybegynder
24. marts 2003 - 10:49 Der er 30 kommentarer og
1 løsning

Automatisk generering af email i java

Er der ikke nogen der kan forklare koden i dette spg. Gerne forklare hvad alle linier gør....

www.eksperten.dk/spm/313651
Avatar billede disky Nybegynder
24. marts 2003 - 11:10 #1
Jeg kan forklare denne her:
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;
        }
    }
}


Hele magien er i disse linie:
          Properties props = new Properties();
Laver et nyt Properties objekt
            props.put("mail.smtp.host", "MAIL SERVER NAVN");
Sætter en værdi i det objekt, nemlig email serverens host navn
            Session mailsession = Session.getDefaultInstance(props, null);
Så laver man et nyt session object med host navnet i.
            Message msg = new MimeMessage(mailsession);
Et styks ny Message til den mail host.
            msg.setFrom(new InternetAddress( getSender() ));
Så sættes afsender adresses.
            msg.addRecipient(Message.RecipientType.TO, new InternetAddress(getRecipient() ));
Modtagerne sættes.
            msg.setSubject( "Tips fra en ven" );
Emnet bliver sat.
            msg.setText(body);
Selv email teksten.
            Transport.send(msg);
Og her bliver mailen sendt.
            return true;

Resten af klassen er set metoder til at sætte afsender, modtager, emne, og indhold osv.
Avatar billede difn Nybegynder
24. marts 2003 - 11:52 #2
hvordan sættes det op, kan jeg bruge hotmail mailserveren(og min hotmail account) til at sende fra. Eller hvordan gør jeg dette. Mail server navnet er det ikke den man sætter op når man sætter sin email op i foreksempel outlook.
Avatar billede disky Nybegynder
24. marts 2003 - 12:28 #3
Mail server navnet er lige præcist det du siger :)

Har du f.eks. tele danmark som udbyder skriver du f.eks.

pasmtp.tele.dk

Det er den udgående mail server jeg bruger.
Avatar billede disky Nybegynder
24. marts 2003 - 12:29 #4
Hotmail ved jeg ikke om du kan bruge som afsender mail server. Jeg ville til enhver tid bruge min udbyders server til dette.
Avatar billede difn Nybegynder
24. marts 2003 - 14:14 #5
hvordan sætter du den classpath op, hvad er det man skal importere, jeg har hentet j2sdkee1.4 og sat classpath til lib i kawa..det værktøj jeg bruger... Jeg får stadig fejl
Avatar billede disky Nybegynder
24. marts 2003 - 14:32 #6
du skal downloade entet javax.mail eller j2ee.jar også ellers mangler Mail systemmet.

p.s. Tag og skift Kawa ud med en mere moderne editor, f.eks. SunOne fra www.javasoft.com eller IntelliJ
Avatar billede difn Nybegynder
24. marts 2003 - 14:35 #7
den stinker også maks..... så det vil jeg gøre... Tak for svarene
Avatar billede disky Nybegynder
24. marts 2003 - 14:44 #8
:-)

bare spørg her igen, hvis du har specifikke spørgsmål.
Avatar billede difn Nybegynder
24. marts 2003 - 14:59 #9
jeg har prøvet at hente begge dele. Men det virker stadig ikke. Der står at de pakker jeg prøver at importere ikke findes...
Avatar billede disky Nybegynder
24. marts 2003 - 15:03 #10
Hvor har du lagt j2ee.jar filen ?

prøv at smid den i lib skuffen under JDK'en
Avatar billede difn Nybegynder
24. marts 2003 - 15:08 #11
ok, det er prøvet nu, men der står stadig at :
package javax.mail does not exist
import javax.mail.Message;

Jeg har lagt selve j2ee.jar filen fra j211.1.3.1 ind i mappen. Men de stier med javax, kan jeg heller ikke finde nogle steder. Det er vel derfor der kommer fejl..
Avatar billede disky Nybegynder
24. marts 2003 - 15:55 #12
du skaltilføje j2ee.jar filen til din classpath
Avatar billede arne_v Ekspert
24. marts 2003 - 16:26 #13
Lidt sent, men:

    public static void sendTextEmail() {
      try {
        Properties props = System.getProperties();
        props.put("mail.smtp.host", "x.x.x.x");  // set SMTp server
        Session session = Session.getDefaultInstance(props, null);
        MimeMessage message = new MimeMessage(session);
        message.setFrom(new InternetAddress("nn@somewhere.dk")); // set FROM
        message.addRecipient(Message.RecipientType.TO, new InternetAddress("nn@somewhere.dk")); // set TO
        message.setSubject("Test"); // set SUBJECT
            message.setText("Dette er en test\n" +
                            "Næste linie"); // set BODY (type = default = text)
        Transport.send(message); // send
      } catch (AddressException e) {
      } catch (MessagingException e) {
      }
  }
    public static void sendHtmlEmail() {
        try {
            Properties props = System.getProperties();
            props.put("mail.smtp.host", "x.x.x.x");  // set SMTP server
            Session session = Session.getDefaultInstance(props, null);
            MimeMessage message = new MimeMessage(session);
            message.setFrom(new InternetAddress("nn@somewhere.dk")); // set FROM
            message.addRecipient(Message.RecipientType.TO, new InternetAddress("nn@somewhere.dk")); // set TO
            message.setSubject("Test"); // set SUBJECT
            message.setContent("<H1>Overskrift</H1>" +
                              "Dette er en test<BR>\n" +
                              "Næste linie<BR>" +
                              "<A HREF=\"http://java.sun.com/\">link</A>",
                              "text/html"); // set BODY + type=html
            Transport.send(message); // send
        } catch (AddressException e) {
        } catch (MessagingException e) {
        }
    }
Avatar billede disky Nybegynder
24. marts 2003 - 16:39 #14
arne:
Har du egentligt læst hans spørgsmål ?
Se lige hvad han linker til, den kode du lige har postet.
Avatar billede arne_v Ekspert
24. marts 2003 - 16:46 #15
disky>

Bemærk lige at jeg har sat kommentarer ind !
Avatar billede disky Nybegynder
24. marts 2003 - 16:49 #16
hvor forklarende de er kan så diskuteres.

eks:
.setSubject() //Set subject

Ja det siger metodekaldet jo også :)
Avatar billede arne_v Ekspert
24. marts 2003 - 16:58 #17
Ja.

Men hvad pokker skriver man ?

Du havde vel også problemet:
#          Properties props = new Properties();
#Laver et nyt Properties objekt
Avatar billede difn Nybegynder
25. marts 2003 - 08:58 #18
rolig nu... Det virker nu, jeg smed Kawa ud af vinduet og installerede Forte fra javas hjemmeside, og nu er der ingen problemer...SKOD KAWA.......
Avatar billede disky Nybegynder
25. marts 2003 - 09:15 #19
Hehe :-)

Kawa var et rigtigt godt program dengang det blev lavet, men i dag er det meget forældet.

Af de gratis værktøjer man kan få til udvikling, er Forte (som nu hedder SunOne) uden tvivl det bedste.
Avatar billede difn Nybegynder
25. marts 2003 - 09:36 #20
jeg har en fejl når jeg kører programmet, det er lige efter man initiere session. Der kommer noget med en linestream et eller andet. En anden ting er: Når jeg skal på min mailserver skal jeg bruge et login og password. Hvordan sættes dette op.
Avatar billede difn Nybegynder
25. marts 2003 - 09:43 #21
helt præcis er fejlen:
java.lang.noclassDefFoundError: com/sun/mail/util/lineinputstream
at javax.mail.session.loadProvidersFromStream(Session.java:701)
at javax.mail.session.loadProvidersFromStream(session.java:701)
at javax.mail.Session.<init>(Session.java:68)
at javax.mail.Session.getDefaultInstance(Session.java:133)
at SendEmail.sendTextEmail(SendEmail.java:23)
at SendEmail.main(SendEmail.java:16)
Avatar billede difn Nybegynder
25. marts 2003 - 09:45 #22
hvad er forskellen på rød og blå i output vinduet?
Avatar billede disky Nybegynder
25. marts 2003 - 10:05 #23
den brokker sig over den mangler noget, er det j2ee,jar i nyeste stable version du har hentet ?

Username password bruger man normalt ikke når man skal afsende emails, kun ved modtagelse af dem.
Avatar billede difn Nybegynder
25. marts 2003 - 12:16 #24
Jeg har hentet 1.3.1 og 1.4, men ingen af dem vil som jeg vil. Jeg kan heller ikke bruge metoden getInstance eller getdefaultInstance med bare props som input selvom denne metode skulle ligge der iførlge java doc. Der er et eller andet der ikke funker.... Hvordan sætter jeg egentligt classpath i sunOne, jeg har bare lagt j2ee ind i lib, ved jdk, men kan det gøres anderledes...

Tak
Avatar billede disky Nybegynder
25. marts 2003 - 12:20 #25
Jeg har sat j2ee.jar ind i classpath på system niveau så alle programmer kan se den.

Prøv evt. det.
Avatar billede difn Nybegynder
25. marts 2003 - 12:28 #26
hvordan gør man det????
Avatar billede difn Nybegynder
25. marts 2003 - 12:58 #27
nu er det kræftedeme mimemessage der er problemer med:
java.lang.NoClassDefFoundError: com/sun/mail/util/MailDateFormat, hvad er nu det for noget...
Avatar billede disky Nybegynder
25. marts 2003 - 13:02 #28
hvad gjorde du så den pludselig kom frem ?
Avatar billede difn Nybegynder
25. marts 2003 - 14:14 #29
nu virker det hele... hentede version 1.2, og nu er der ingen problemer, der er kun når man sender en html besked, her kommer der
  javax.activation.UnsupportedDataTypeException: no object DCH for MIME type text/html.
Avatar billede difn Nybegynder
25. marts 2003 - 14:18 #30
jeg har ikke lige læst doc, men det kan være at den metode på content først er kommet i senere versioner..
Avatar billede arne_v Ekspert
25. marts 2003 - 17:07 #31
sendTextEmail og sendHtmlEmail er testet mod j2ee.jar fra J2EE SDK 1.3.1
i sin tid.
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