Ich muß für die Schule ein EMail Programm schreiben und bei dem Übergeben der Werte mit geter Methoden hat dann ein Teil null werte und ich weiß nicht was ich falsch mache kann mir eventuell wer helfen?
Meine Main kurz und knackig:
Das ist die Main Oberfläche die sie Senden initialisiert und mit dem Button startet man dann die Benutzereingabeoberfläche:
Hier die Benutzereingabe Oberfläche:
Und zu guter letzt die Klasse für das versenden die von der Benutzereingabe gestartet wird und die auch die ganzen getter und setter hat:
Ich bin für jede Hilfe dankbar.
CU Eklaf
Meine Main kurz und knackig:
Code:
package GUI;
public class Main_E_Mail
{
public static void main (String[]args)
{
Oberflaeche_Main OM = new Oberflaeche_Main();
OM.los();
}
}
Das ist die Main Oberfläche die sie Senden initialisiert und mit dem Button startet man dann die Benutzereingabeoberfläche:
Code:
package GUI;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import Programm.Senden;
public class Oberflaeche_Main extends JFrame implements ActionListener
{
private JFrame mainFrame;
private JPanel pnlNorth,pnlFrom,pnlTo,pnlBetreff;
private JLabel lblFrom,lblTo,lblBetreff;
private JTextField txtFFrom,txtFTo,txtFBetreff;
private JTextArea txtAEingabe;
private JButton btnSenden;
Senden senden;
public void los()
{
mainFrame=new JFrame("E-Mail versenden");//Mainframe erzeugen
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pnlNorth=new JPanel();
pnlNorth.setLayout(new BoxLayout(pnlNorth, BoxLayout.Y_AXIS));
pnlFrom=new JPanel();
lblFrom=new JLabel("From: ");
pnlFrom.add(lblFrom);
txtFFrom=new JTextField(30);
pnlFrom.add(txtFFrom);
pnlNorth.add(pnlFrom);
pnlTo=new JPanel();
lblTo=new JLabel("To: ");
pnlTo.add(lblTo);
txtFTo= new JTextField(30);
pnlTo.add(txtFTo);
pnlNorth.add(pnlTo);
pnlBetreff=new JPanel();
lblBetreff=new JLabel("Betreff: ");
pnlBetreff.add(lblBetreff);
txtFBetreff=new JTextField(30);
pnlBetreff.add(txtFBetreff);
pnlNorth.add(pnlBetreff);
mainFrame.getContentPane().add(BorderLayout.NORTH,pnlNorth);
txtAEingabe=new JTextArea(20,20);
mainFrame.getContentPane().add(BorderLayout.CENTER,txtAEingabe);
btnSenden=new JButton("Senden");
btnSenden.addActionListener(this);
mainFrame.getContentPane().add(BorderLayout.SOUTH,btnSenden);
mainFrame.setSize(600, 350);
mainFrame.setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
if (e.getSource()== btnSenden)
{
senden=new Senden();
senden.setsFrom(txtFFrom.getText());
senden.setsTo(txtFTo.getText());
senden.setsSubjekt(txtFBetreff.getText());
senden.setsText(txtAEingabe.getText());
Oberflaeche_Benutzerdaten OberflBenutzerdaten =new Oberflaeche_Benutzerdaten();
OberflBenutzerdaten.los();
}
}
}
Hier die Benutzereingabe Oberfläche:
Code:
package GUI;
import java.awt.BorderLayout;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import javax.mail.MessagingException;
import javax.mail.internet.AddressException;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.WindowConstants;
import Programm.Senden;
public class Oberflaeche_Benutzerdaten extends JFrame implements ActionListener
{
private JFrame mainFrame;
private JPanel pnlCenter,pnlBenutzer,pnlPasswort,pnlHost,pnlPort;
private JLabel lblBenutzer,lblPasswort,lblHost,lblPort;
private JTextField txtFBenutzer,txtFPasswort,txtFHost,txtFPort;
private JButton btnBestaetigen;
Senden senden;
public void los()
{
mainFrame=new JFrame("Benutzerdaten eingeben");//Mainframe erzeugen
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pnlCenter=new JPanel();
pnlCenter.setLayout(new BoxLayout(pnlCenter, BoxLayout.Y_AXIS));
pnlBenutzer=new JPanel();
lblBenutzer=new JLabel("Account Benutzername: ");
pnlBenutzer.add(lblBenutzer);
txtFBenutzer=new JTextField(15);
pnlBenutzer.add(txtFBenutzer);
pnlCenter.add(pnlBenutzer);
pnlPasswort=new JPanel();
lblPasswort=new JLabel("Account Passwort: ");
pnlPasswort.add(lblPasswort);
txtFPasswort=new JTextField(15);
pnlPasswort.add(txtFPasswort);
pnlCenter.add(pnlPasswort);
pnlHost =new JPanel();
lblHost=new JLabel("Host z.B. mail.gmx.de : ");
pnlHost.add(lblHost);
txtFHost=new JTextField(15);
pnlHost.add(txtFHost);
pnlCenter.add(pnlHost);
pnlPort= new JPanel();
lblPort= new JLabel("Port z.B. 25 : ");
pnlPort.add(lblPort);
txtFPort=new JTextField(15);
pnlPort.add(txtFPort);
pnlCenter.add(pnlPort);
mainFrame.getContentPane().add(BorderLayout.CENTER,pnlCenter);
btnBestaetigen=new JButton("Bestätigen");
btnBestaetigen.addActionListener(this);
mainFrame.getContentPane().add(BorderLayout.SOUTH,btnBestaetigen);
mainFrame.setSize(350, 200);
mainFrame.setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
if (e.getSource()== btnBestaetigen)
{
senden =new Senden();
senden.setsUser(txtFBenutzer.getText());
senden.setsPassword(txtFPasswort.getText());
senden.setsHost(txtFHost.getText());
senden.setsPort(txtFPort.getText());
senden.Werteausgeben();
try
{
senden.MailSenden();
}
catch (AddressException e1)
{
e1.printStackTrace();
}
catch (MessagingException e2)
{
e2.printStackTrace();
}
}
}
}
Und zu guter letzt die Klasse für das versenden die von der Benutzereingabe gestartet wird und die auch die ganzen getter und setter hat:
Code:
package Programm;
import java.util.Properties;
import javax.mail.Address;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import GUI.Oberflaeche_Main;
public class Senden
{
String sFrom; //von
String sTo; //an
String sSubjekt; //Betreff
String sText; //Text
String sUser; //Benutzer
String sPassword; //Password
String sHost; //Host
String sPort; //Port
Oberflaeche_Main GUIMain =new Oberflaeche_Main();
public void Werteausgeben()
{
System.out.println(""+getsFrom());
System.out.println(""+getsTO());
System.out.println(""+getsSubjekt());
System.out.println(""+getsText());
System.out.println(""+getsUser());
System.out.println(""+getsPassword());
System.out.println(""+getsHost());
System.out.println(""+getsPort());
}
public void MailSenden() throws AddressException,MessagingException
{
Properties props = new Properties();
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.host", getsHost());
props.put("mail.smtp.port", getsPort());
Session session = Session.getDefaultInstance(props,null);
Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(getsFrom()));
msg.setRecipient(Message.RecipientType.TO, new InternetAddress(getsTO()));
msg.setSubject(getsSubjekt());
msg.setText(getsText());
Transport tr=new session.getTransport("smtp");
tr.connect(getsHost(),getsUser(),getsHost());
msg.saveChanges();
tr.sendMessage(getsText(),msg.getAllRecipients());
tr.close();
}
public void setsFrom(String p_sfrom)
{
sFrom=p_sfrom;
}
public void setsTo(String p_sto)
{
sTo=p_sto;
}
public void setsSubjekt(String p_ssubjekt)
{
sSubjekt=p_ssubjekt;
}
public void setsText(String p_sText)
{
sText=p_sText;
}
public String getsFrom()
{
return sFrom;
}
public String getsTO()
{
return sTo;
}
public String getsSubjekt()
{
return sSubjekt;
}
public String getsText()
{
return sText;
}
public void setsUser(String p_sUser)
{
sUser=p_sUser;
}
public void setsPassword(String p_sPW)
{
sPassword=p_sPW;
}
public void setsHost(String p_sHost)
{
sHost=p_sHost;
}
public void setsPort(String p_sPort)
{
sPort=p_sPort;
}
public String getsUser()
{
return sUser;
}
public String getsPassword()
{
return sPassword;
}
public String getsHost()
{
return sHost;
}
public String getsPort()
{
return sPort;
}
}
Ich bin für jede Hilfe dankbar.
CU Eklaf