Skip to Main Content

Java SE (Java Platform, Standard Edition)

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Java Mail API and Swing Application Framework

843810Jul 16 2010 — edited Jul 28 2010
Hello, I built a Desktop Application with NetBeans IDE 6.9 using New Project / Java / Java Desktop Application (based on the Swing Application Framework JSR 296). An email has to be sent when a button ist being pressed. I use the latest Java Mail API 1.4.3. When I press the button, nothing happens but the application stops any reaction immediately and I have to kill it. The curious thing is that the same code used outside the Desktop Application Framework does work very well. Is there any incompatibility between Java Mail API and Swing Application Framework?

Here is the code, I hope for some helpful hints:


import org.jdesktop.application.Application;
import org.jdesktop.application.SingleFrameApplication;

public class EmailTestApp extends SingleFrameApplication {

@Override protected void startup() {
show(new EmailTestView(this));
}

public static EmailTestApp getApplication() {
return Application.getInstance(EmailTestApp.class);
}

public static void main(String[] args) {
launch(EmailTestApp.class, args);
}
}


import org.jdesktop.application.Action;
import org.jdesktop.application.SingleFrameApplication;
import org.jdesktop.application.FrameView;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.Message;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

public class EmailTestView extends FrameView {

public EmailTestView(SingleFrameApplication app) {
super(app);
initComponents();
}

@Action public void emailen() {
try {
Properties properties = new Properties();
properties.setProperty("mail.smtp.host", host);
properties.setProperty("mail.smtp.port", port);
properties.setProperty("mail.smtp.auth", "true");
Session session = Session.getInstance(properties, new Authenticator(){
@Override
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(user, passwd);
}
}
);
MimeMultipart mmp = new MimeMultipart();
MimeBodyPart mbp = new MimeBodyPart();
mbp.setText("Nachrichtentext", "UTF-8", "plain");
mmp.addBodyPart(nachrichtenText);
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(addressFrom));
message.addRecipient(Message.RecipientType.TO, new InternetAddress(addressTo));
message.setSubject(subject);
message.setSentDate(new Date());
message.setContent(mmp);

Transport.send(message);

} catch (Exception e) {
System.out.println(e);
}
}

@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {

mainPanel = new javax.swing.JPanel();
jButton1 = new javax.swing.JButton();

mainPanel.setName("mainPanel"); // NOI18N

javax.swing.ActionMap actionMap = org.jdesktop.application.Application.getInstance(emailtest.EmailTestApp.class).getContext().getActionMap(EmailTestView.class, this);
jButton1.setAction(actionMap.get("email")); // NOI18N
org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(emailtest.EmailTestApp.class).getContext().getResourceMap(EmailTestView.class);
jButton1.setText(resourceMap.getString("jButton1.text")); // NOI18N
jButton1.setName("jButton1"); // NOI18N

javax.swing.GroupLayout mainPanelLayout = new javax.swing.GroupLayout(mainPanel);
mainPanel.setLayout(mainPanelLayout);
mainPanelLayout.setHorizontalGroup(
mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(mainPanelLayout.createSequentialGroup()
.addGap(68, 68, 68)
.addComponent(jButton1)
.addContainerGap(87, Short.MAX_VALUE))
);
mainPanelLayout.setVerticalGroup(
mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(mainPanelLayout.createSequentialGroup()
.addGap(63, 63, 63)
.addComponent(jButton1)
.addContainerGap(75, Short.MAX_VALUE))
);

setComponent(mainPanel);
}// </editor-fold>//GEN-END:initComponents

// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton jButton1;
private javax.swing.JPanel mainPanel;
// End of variables declaration//GEN-END:variables

}

Comments

Frank Kulash

Hi,

You need to initialize suma, like you initialize.x:

DECLARE

    x    NUMBER (10) := 1;

    z    NUMBER;

    suma NUMBER      := 0;

BEGIN

    WHILE x <= 3

    LOOP

        z := (x * 2) + 4;

        suma := suma + z;

        x := x + 1;

    END LOOP;

    DBMS_OUTPUT.PUT_LINE (suma || ' = final suma');

END;

/

NULL plus anything is NULL, so if suma is NULL when you reach this statement

suma := suma + z;

then it will be NULL after executing that statement.

Also, you're going through the loop an extra time.  Since x starts at 0, yu're starting the loop when x is 0, 1, 2 and 3, and incrementing the sum for x as 1, 2, 3 and 4.

(I see Galo caught the same thing while I was revising this message.)

Galo Balda

Another thing is that you're doing 4 iterations since x starts with 0

Frank Kulash

Hi,

You can do this in pure SQL, too:

SELECT  SUM ((2 * LEVEL) + 4)  AS suma

FROM    dual

CONNECT BY  LEVEL  <= 3

;

1 - 3
Locked Post
New comments cannot be posted to this locked post.

Post Details

Locked on Aug 25 2010
Added on Jul 16 2010
5 comments
618 views