Avatar billede Slettet bruger
17. oktober 2001 - 16:28 Der er 5 kommentarer og
1 løsning

smtp?

Hej

hvorfor virker følgende kode ikke på alle SMTP\'er? .. den virker fint på min egen mailserver men ikke på
skolen.. ?!? ..(Du/I må gerne prøve med
den smtp-server og mailadresse) ...  Den går ligesom død under vejs?


import java.net.*;
import java.io.*;


public class Class1
{
public static void main (String[] args) throws IOException

{
  String crlf = \"\\r\\n\";
  String smtp = \"post.skivehs.dk\";
  String to = \"<df0018@skivehs.dk>\";
  String from = \"<df0018skivehs.dk>\";
  String sub = \"Subject\";
  String headers = \"From: \" + from + crlf + \"To: \" + to + crlf + \"Subject: \"
+ sub + crlf + \"MIME-Version: 1.0\" + crlf + \"Content-Type: text/plain;\" +
crlf;
  String body = \"Hej med dig\";

  Socket s = new Socket(smtp, 25);

  DataOutputStream dos = new DataOutputStream(s.getOutputStream());
  DataInputStream dis = new DataInputStream(s.getInputStream());

  dos.writeBytes(\"HELO www.skivehs.dk\" + crlf);
  dos.flush();

  dos.writeBytes(\"MAIL FROM:\" + from + \" \" + crlf);
    dos.flush();

  dos.writeBytes(\"RCPT TO:\" + to + \" \" + crlf);
  dos.flush();

  dos.writeBytes(\"DATA\" + crlf);
  dos.flush();

  dos.writeBytes(headers + crlf);
  dos.flush();

  dos.writeBytes(body + crlf);
  dos.flush();

  dos.writeBytes(crlf + \".\" + crlf);
  dos.flush();

  dos.writeBytes(\"QUIT\" + crlf);
  dos.flush();


  String temp = \"\";
  temp = dis.readLine();

  while (temp != null)
  {
    System.out.println(temp);
    temp = dis.readLine();
  }

  dos.close();
  s.close();

  System.in.read();
}
}
Avatar billede Slettet bruger
17. oktober 2001 - 16:29 #1
Hvad går jeg forkert?
Avatar billede lens Nybegynder
17. oktober 2001 - 16:32 #2
Det kunne meget vel, være fordi at den anden server benytter \"secureetellerandet\" - det problem fik jeg ihvertfald dengang jeg lavede en sender!

Hvis servere gør det - vil den svare noget andet, og også kræve andet input.
Den bedste måde at finde ud af det, er at connecte til serveren med en telnet, og se hvad den siger til det!!!!

Held og lykke
Avatar billede Slettet bruger
17. oktober 2001 - 16:36 #3
Hvis jeg telnet\'er og skriver det samme om i koden virker det fint... Så jeg fatter ikke hvorfor koden ikke virker.. :(
Avatar billede lens Nybegynder
17. oktober 2001 - 16:41 #4
Hvis du prøver at modtage en linie fra serveren for hver gang du sender noget til den, så burde du kunne se hvad den er ked af...
Avatar billede chime9 Nybegynder
17. oktober 2001 - 16:44 #5
Hmm, jeg har en mistanke om du ikke vil kunne lide denne kommentar - men vi får se ...
Når to porgrammer skal kommunikere med hinanden, skal de være enige om hvordan det foregår. Derfor konstruerer man en protokol, i dette tilfælde SMTP. Protokollens formål er at sikre at de programmer kan blive ved med at tale sammen, oghså selvom tingen ikke lige går som den ene part ønsker. Sagt på en anden måde, det er ekstremt vigtigt at håndtere forskellige fejlsituationer. Problemet med de fleste programmer lavet af folk der er relativt uerfarne inden for programmering til kommunikation, er at de som udgangspunkt antager at alt går som de håber - på samme måde som dit program. Der er ingen hensyn til timeouts, kommunikationsfejl, eller andre fejl som du modtage fra din SMTP server. Kommentaren fra lens er sandsynligvis korrekt. Mange SMTP servere i dag er indstillet til ikke bare at videresende post fra hvemsomhelst, da de ellers kan bruges til spamming. Lens forslag med telnet er da også ganske udemærket, men dit virkelig problem er at dit program er alt for simpelt. Så ... kig på SMTP igen. Lav et program der afsender kommandoer og venter på svar. Undersøg det svar du får. I den første version af dit program kan du jo bare lave en exit med en fejlmeddelelse når du ikke får hvad du forventer. Så kan du senere forbedre det og gøre det mere elegant. Tænk på timeout hvis du slet intet svar få. Alt dette kræver at du tænker lidt mere over dit design, så du nemt kan ændre noget. Tilbage på tegnebrættet. Det er en fremragende opgave du der har sat dig selv.
Og endelig - held og lykke!
Avatar billede Slettet bruger
17. oktober 2001 - 17:25 #6
Oki... men har fundet en løsning ny.... takket være en lid bedre kode.. (check på svar også videre)
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