Nie rozumiem, dlaczego otrzymuję ten wyjątek. To jest kod, który próbuje wysłać wiadomość e-mail.

public void sendAsHotmail() {
    final String username = jTextField14.getText();
    final String password = jPasswordField4.getText();
    String subject = jTextField16.getText();
    String Cc = jTextField17.getText();
    String Bcc = jTextField18.getText();
    String recipient = jTextArea5.getText();

    Properties props = new Properties();
    props.put( "mail.smtp.host" , "smtp.live.com");
    props.put( "mail.smtp.user" , username );

    // Use TLS
    props.put("mail.smtp.auth" , "true" );
    props.put( "mail.smtp.starttls.enable" , "true" );
    props.put( "mail.smtp.password" , password );

    Session session = Session.getDefaultInstance( props , new Authenticator() {
        @Override
                protected PasswordAuthentication getPasswordAuthentication() {
                  if( username == null | password == null ) 
                      JOptionPane.showMessageDialog( new JFrame() , "username or password incorrect");
                  return new PasswordAuthentication( username , password );
                }
    });
    String to = recipient;
    String from = username + "@hotmail.com";
    String emailMessage = jTextArea2.getText();
    MimeMessage message = new MimeMessage(session);
    MimeBodyPart attachment = new MimeBodyPart();
    MimeBodyPart messagePart = new MimeBodyPart();
    FileDataSource fds = new FileDataSource( fileName );

    try {
        message.setRecipients( Message.RecipientType.TO, InternetAddress.parse( to ) );
        message.setFrom( new InternetAddress(from) );
        message.setSubject(subject);
        message.setText( emailMessage );
        attachment.setDataHandler( new DataHandler( fds ) );
        attachment.setFileName( fileName );
        messagePart.setText( emailMessage );
        Multipart hotmailMP = new MimeMultipart();
        hotmailMP.addBodyPart(attachment);
        hotmailMP.addBodyPart( messagePart );
        message.setContent( hotmailMP );
        Transport transport = session.getTransport("smtp");
        transport.send(message);
        JOptionPane.showMessageDialog(new JFrame() , "mail sent !");       
    }  catch(Exception exc) {
        System.out.println(exc);
    }
}

Dlaczego otrzymuję ten wyjątek? Jeśli coś jest nie tak z kodem, powiedz, na czym polega problem.

9
program-o-steve 23 lipiec 2011, 17:07
Myślę, że nie ma nic złego w tym kodzie.
 – 
Suhail Gupta
23 lipiec 2011, 17:12

2 odpowiedzi

Najlepsza odpowiedź

Zgadzam się z @Mi Mee. W swojej nazwie użytkownika wygląda na to, że przyjmujesz niekompletną nazwę użytkownika (To jest powód, dla którego Uwierzytelnianie nie powiodło się). W przypadku usługi Hotmail musisz wprowadzić swój identyfikator Windows Live, który może być xyz@hotmail.com , qrs@gmail.com itd.

Więc weź poprawną nazwę użytkownika. I usuń @hotmail.com ze zmiennej from. Reszta kodu jest w porządku.

5
Suhail Gupta 23 lipiec 2011, 19:18
Tak! nie zauważyłem tego
 – 
program-o-steve
23 lipiec 2011, 19:22

535 oznacza złą nazwę użytkownika lub hasło: zobacz Kody odpowiedzi SMTP

Być może trzeba będzie sprawdzić instrukcję obsługi serwera SMTP, aby zobaczyć, co oznacza 5.0.0.

7
user591593user591593 23 lipiec 2011, 18:48