Cannot find symbol: receive(), send()

Status
Nicht offen für weitere Antworten.

donnar

Mitglied
Hallo ihr lieben,

zur Zeit versuche ich eine einfache Methode zum versenden von Emails zu erstellen:
Code:
import java.net.*;
...
private void sendMail(String from,  String messageText) throws UnknownHostException, IOException{
     String to = "test@email.de";
     String subject = "Nachricht vom Website";
     StringBuffer sb = new StringBuffer();
     try{
         Socket s = new Socket("smtp.server",25);
         String hostName = InetAddress.getLocalHost().getHostName();

         //Fehlermeldungen beginnen hier
         receive();
         send("Hallo " + hostName);
         receive();
         send("MAIL FROM: <" + from + ">");
         receive();
         send("RCPT TO: <" + to + ">");
         receive();
         send("DATA");
         receive();
         send(messageText);
         send(".");
         reveice();
         s.close();
         //Fehlermeldungen enden hier

     }catch(IOException e){
         sb.append("Fehler: " + e);
     } 
 }
...

Das Problem hierbei ist, dass meine IDE (NetBeans IDE 6) Fehler in den Zeilen anzeigt, die jeweils mit receive oder send beginnen. Die Fehlermeldung ist: "Cannot find symbol".

Hab ich vergessen etwas zu importieren? Wo liegt der Fehler?
 
G

Gelöschtes Mitglied 5909

Gast
du hast anscheinend keine methoden receive() und send() in deiner klasse
 
G

Gelöschtes Mitglied 5909

Gast
java.net.* ist ein "Paket von Klassen", da sind aber keine Methoden drinnen, sondern Klassen (+ interfaces + enums) die Methoden haben.

http://java.sun.com/j2se/1.5.0/docs/api/java/net/package-frame.html

Du bentutzt zwar ein Socket, machst aber eigentlich nur ein s.close() damit. Und receive() / send() hat ein Socket auch nicht, das funktioniert anders - über Streams.

http://java.sun.com/j2se/1.5.0/docs/api/java/net/Socket.html

Woher du die annahme machst das solche methoden funktionieren bzw vorhanden sind wundert mich...
 

donnar

Mitglied
Das Beispiel ist aus dem Buch "Core 2 Java Band 2 (Expertenwissen)". Ich hab angenommen, dass die Zeilen in Ordnung sind. Deinen Link prüfe ich sofort..
 
G

Gelöschtes Mitglied 5909

Gast
dann poste mal den ganzen code, Möglich dass sie eigene Methoden dafür implementiert haben die das ganze kapseln.
 

donnar

Mitglied
Der Rest hat, soweit ich das verstanden habe, mehr mit swing zu tun. Der für mich wichtige Teil steht in der Methode sendMail.
Code:
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.net.*;
import java.io.*;
import javax.swing.*;

/**
   Dieses Programm zeigt, wie man Sockets verwendet, um reine
   Textnachrichten als Mail zu senden.
*/
public class MailTest
{
   public static void main(String[] args)
   {
      JFrame frame = new MailTestFrame();
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setVisible(true);
   }
}

/**
   Der Frame für die Mail-Benutzeroberfläche.
*/
class MailTestFrame extends JFrame
{
   public MailTestFrame()
   {
      setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
      setTitle("MailTest");

      setLayout(new GridBagLayout());

      // verwendet die Komfortklasse GBC aus CoreJava Band 1 Kapitel 9
      add(new JLabel("Von:"), new GBC(0, 0).setFill(GBC.HORIZONTAL));

      from = new JTextField(20);
      add(from, new GBC(1, 0).setFill(GBC.HORIZONTAL).setWeight(100, 0));

      add(new JLabel("An:"), new GBC(0, 1).setFill(GBC.HORIZONTAL));

      to = new JTextField(20);
      add(to, new GBC(1, 1).setFill(GBC.HORIZONTAL).setWeight(100, 0));

      add(new JLabel("SMTP-Server:"), new GBC(0, 2).setFill(GBC.HORIZONTAL));

      smtpServer = new JTextField(20);
      add(smtpServer, new GBC(1, 2).setFill(GBC.HORIZONTAL).setWeight(100, 0));

      message = new JTextArea();
      add(new JScrollPane(message), new GBC(0, 3, 2, 1).setFill(GBC.BOTH).setWeight(100, 100));

      comm = new JTextArea();
      add(new JScrollPane(comm), new GBC(0, 4, 2, 1).setFill(GBC.BOTH).setWeight(100, 100));

      JPanel buttonPanel = new JPanel();
      add(buttonPanel, new GBC(0, 5, 2, 1));

      JButton sendButton = new JButton("Senden");
      buttonPanel.add(sendButton);
      sendButton.addActionListener(new
         ActionListener()
         {
            public void actionPerformed(ActionEvent event)
            {
               new Thread(new
                  Runnable()
                  {
                     public void run()
                     {
                        comm.setText("");
                        sendMail();
                     }
                  }).start();
            }
         });
   }

   /**
      Sendet die in der Benutzeroberfläche erstellte Mail-Nachricht.
   */
   public void sendMail()
   {
      try
      {
         Socket s = new Socket(smtpServer.getText(), 25);

         InputStream inStream = s.getInputStream();
         OutputStream outStream = s.getOutputStream();

         in = new Scanner(inStream);
         out = new PrintWriter(outStream, true /* autoFlush */);

         String hostName = InetAddress.getLocalHost().getHostName();

         receive();
         send("HELO " + hostName);
         receive();
         send("MAIL FROM: <" + from.getText() + ">");
         receive();
         send("RCPT TO: <" + to.getText() + ">");
         receive();
         send("DATA");
         receive();
         send(message.getText());
         send(".");
         receive();
         s.close();
      }
      catch (IOException e)
      {
         comm.append("Fehler: " + e);
      }
   }

   /**
      Sendet einen String an den Socket und gibt ihn
      als Echo im Kommunikations-Textbereich aus.
      @param s der zu sendende String
   */
   public void send(String s) throws IOException
   {
      comm.append(s);
      comm.append("\n");
      out.print(s.replaceAll("\n", "\r\n"));
      out.print("\r\n");
      out.flush();
   }

   /**
      Empfängt einen String vom Socket und zeigt ihn
      im Kommunikations-Textbereich an.
   */
   public void receive() throws IOException
   {
      if (in.hasNextLine());
      {
         String line = in.nextLine();
         comm.append(line);
         comm.append("\n");
      }
   }

   private Scanner in;
   private PrintWriter out;
   private JTextField from;
   private JTextField to;
   private JTextField smtpServer;
   private JTextArea message;
   private JTextArea comm;

   public static final int DEFAULT_WIDTH = 300;
   public static final int DEFAULT_HEIGHT = 300;
}
 
G

Gelöschtes Mitglied 5909

Gast
jo das ist was anderes als das was du gepostet hattest und so funktioniert das auch. Da sind die 2 Methoden auch vorhanden und we wird gestreamt ;)
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben