package javacodebook.misc.mail_send; import javax.mail.*; import javax.mail.internet.*; import javax.activation.*; import java.util.Date; import java.util.Properties; /** * Diese Klasse dient zum Versenden einer einfachen Mail. Die Mail hat keine * Attachments, und sie kann auch nicht an Personen im CC oder BCC versendet * werden. */ public class SimpleMailSender { // Die Daten, die zum Versand einer Mail benötigt werden. String recipient = null; String sender = null; String subject = null; String text = null; String host = null; public SimpleMailSender() { } public void setHost(String host) { this.host = host; } public void setRecipient(String recipient) { this.recipient = recipient; } public void setSender(String sender) { this.sender = sender; } public void setSubject(String subject) { this.subject = subject; } public void setText(String text) { this.text = text; } /** * Versendet die Nachricht. Treten dabei Probleme auf, werden diese in Form * einer Exception an die aufrufende Instanz weitergeleitet. */ public void sendMessage() throws AddressException, MessagingException { // Der SMTP-Host, über den die Mails gesendet werden, wird in der Liste // der Properties angegeben. Properties props = new Properties(); props.put("mail.smtp.host", host); // Es wird eine Mail-Session angelegt. Über diese Session erfolgt der // Versand. Session session = Session.getDefaultInstance(props, null); // Nachricht erzeugen, Adressat, Absender, Betreff und Text angeben. Message msg = new MimeMessage(session); msg.setFrom(new InternetAddress(sender)); InternetAddress[] address = {new InternetAddress(recipient)}; msg.setRecipients(Message.RecipientType.TO, address); msg.setSubject(subject); msg.setSentDate(new Date()); msg.setText(text); // Die Nachricht versenden. Transport.send(msg); } } --- Neue Klasse --- package javacodebook.misc.mail_send; import javax.swing.*; import java.awt.event.*; public class MailSendFrame extends JFrame implements ActionListener { public static void main(String []args) { (new MailSendFrame()).show(); } public MailSendFrame() { super(); initComponents(); } /** * Das GUI-Layout erzeugen */ private void initComponents() { buttons = new JPanel(); send = new JButton(); cancel = new JButton(); main = new JPanel(); java.awt.GridBagConstraints gridBagConstraints; labelHost = new JLabel(); labelSender = new JLabel(); labelRecipient = new JLabel(); labelSubject = new JLabel(); inputHost = new JTextField(); inputSender = new JTextField(); inputRecipient = new JTextField(); inputSubject = new JTextField(); inputText = new JTextArea(); scrollText = new JScrollPane(); main.setLayout(new java.awt.GridBagLayout()); labelHost.setText("SMTP-Host:"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; gridBagConstraints.insets = new java.awt.Insets(2, 5, 3, 5); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; main.add(labelHost, gridBagConstraints); labelSender.setText("Absender:"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; gridBagConstraints.insets = new java.awt.Insets(2, 5, 3, 5); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; main.add(labelSender, gridBagConstraints); labelRecipient.setText("Empf\u00e4nger:"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 2; gridBagConstraints.insets = new java.awt.Insets(2, 5, 3, 5); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; main.add(labelRecipient, gridBagConstraints); labelSubject.setText("Betreff:"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 3; gridBagConstraints.insets = new java.awt.Insets(2, 5, 3, 5); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; main.add(labelSubject, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 0; gridBagConstraints.gridwidth = java.awt.GridBagConstraints.RELATIVE; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(2, 0, 3, 5); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 1.0; main.add(inputHost, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 1; gridBagConstraints.gridwidth = java.awt.GridBagConstraints.RELATIVE; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(2, 0, 3, 5); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 1.0; main.add(inputSender, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 2; gridBagConstraints.gridwidth = java.awt.GridBagConstraints.RELATIVE; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(2, 0, 3, 5); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 1.0; main.add(inputRecipient, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 3; gridBagConstraints.gridwidth = java.awt.GridBagConstraints.RELATIVE; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(2, 0, 3, 5); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 1.0; main.add(inputSubject, gridBagConstraints); inputText.setLineWrap(true); inputText.setWrapStyleWord(true); inputText.setColumns(40); inputText.setRows(10); scrollText.setViewportView(inputText); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 4; gridBagConstraints.gridwidth = 2; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5); gridBagConstraints.weightx = 1.0; gridBagConstraints.weighty = 1.0; main.add(scrollText, gridBagConstraints); setTitle("Neue Nachricht"); send.setMnemonic('S'); send.setText("Senden"); send.setActionCommand("send"); send.addActionListener(this); buttons.add(send); cancel.setMnemonic('A'); cancel.setText("Abbrechen"); cancel.setActionCommand("cancel"); cancel.addActionListener(this); buttons.add(cancel); getContentPane().add(buttons, java.awt.BorderLayout.SOUTH); getContentPane().add(main, java.awt.BorderLayout.CENTER); pack(); } /** * Vesenden der Mail, wenn der Benutzer den "Senden"-Button gedrückt hat, * bzw. Beenden des Programmes, wenn er "Abbrechen" gedrückt hat. */ public void actionPerformed(ActionEvent evt) { if (evt.getActionCommand().equals("send")) { SimpleMailSender sms = new SimpleMailSender(); sms.setHost(inputHost.getText()); sms.setRecipient(inputRecipient.getText()); sms.setSender(inputSender.getText()); sms.setSubject(inputSubject.getText()); sms.setText(inputText.getText()); try { sms.sendMessage(); System.exit(0); } catch (Exception e) { JOptionPane.showMessageDialog( this, "Mail konnte nicht versendet werden!\n" + "Fehler: " + e.getMessage(), "Fehler beim Versenden", JOptionPane.ERROR_MESSAGE ); } } else System.exit(0); } // Variablendeklaration private JButton send; private JButton cancel; private JPanel buttons; private JPanel main; private JTextField inputSender; private JTextField inputRecipient; private JTextField inputSubject; private JTextField inputHost; private JScrollPane scrollText; private JTextArea inputText; private JLabel labelHost; private JLabel labelSubject; private JLabel labelSender; private JLabel labelRecipient; }