2017-09-29 1 views
-1

스윙을 사용하여 Java에서 전자 메일을 보내려고합니다. 그러나 수정 방법을 찾지 못했지만 오류가 발생합니다. 코드가 있습니다 (어딘가에서 가져 왔고 몇 가지 필드를 제거했습니다).전자 메일 보내기 기능에서 오류가 발생했습니다

import sun.plugin2.message.transport.Transport; 
import javax.mail.MessagingException; 
import javax.mail.Session; 
import javax.mail.internet.InternetAddress; 
import javax.mail.internet.MimeMessage; 
import javax.swing.*; 
import java.awt.*; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.util.Properties; 

class SendEmailClient extends JFrame { 
    ....  
    private SendEmailClient() { 
     InitializeUI(); 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 

      public void run() { 
       SendEmailClient client = new SendEmailClient(); 
       client.setVisible(true); 
      } 
     }); 
    } 

    private void InitializeUI() { 
     setTitle("Send E-mail Client"); 
     setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 
     setSize(new Dimension(400, 280)); 

     // Header Panel 
     } 

    private class SendEmailActionListener implements ActionListener { 
     SendEmailActionListener() { 
     } 

     public void actionPerformed(ActionEvent e) { 
      Properties props = new Properties(); 
      props.put("mail.smtp.host", mailSmtpHostComboBox.getSelectedItem()); 
      props.put("mail.transport.protocol", "smtp"); 
      props.put("mail.smtp.starttls.enable", "true"); 
      props.put("mail.smtp.auth", "true"); 
      props.put("mail.smtp.port", "465"); 
      props.put("mail.smtp.socketFactory.port", "465"); 
      props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); 

      Session session = Session.getDefaultInstance(props); 
      try { 
       InternetAddress fromAddress = new InternetAddress(fromField.getText()); 
       InternetAddress toAddress = new InternetAddress(toField.getText()); 

       javax.mail.Message message = new MimeMessage(session); 
       message.setFrom(fromAddress); 
       message.setRecipient(javax.mail.Message.RecipientType.TO, toAddress); 
       message.setSubject(subjectField.getText()); 
       message.setText(contentTextArea.getText()); 

       Transport.send(message, usernameField.getText(), 
         new String(passwordField.getPassword())); 
      } catch (MessagingException ex) { 
       ex.printStackTrace(); 
      } 
     } 
    } 
} 

과 받는다는 의존성 (그들 중 일부는 필요하지 않을 수 있습니다) :

<dependency> 
    <groupId>org.jdesktop.bsaf</groupId> 
    <artifactId>bsaf</artifactId> 
    <version>1.9RC5</version> 
</dependency> 


<!-- https://mvnrepository.com/artifact/javax.mail/mail --> 
<dependency> 
    <groupId>javax.mail</groupId> 
    <artifactId>mail</artifactId> 
    <version>1.4</version> 
</dependency> 

<dependency> 
    <groupId>javax.activation</groupId> 
    <artifactId>activation</artifactId> 
    <version>1.1.1</version> 
</dependency> 

그리고 보내기 기능에 오류가 :

java: cannot find symbol 
    symbol: method send(javax.mail.Message,java.lang.String,java.lang.String) 
    location: interface sun.plugin2.message.transport.Transport 

pom에 몇 가지 종속성을 추가하려고 시도하고 있지만 잘못된 결정으로 보일 수 있지만 문제를 해결할 수는 있습니다. 누군가 알고 있습니까?

+0

스윙은 이메일을 보내는 것과 관련이 없습니다. 먼저 전자 메일 속성에 대한 데이터를 하드 코딩하여 코드를 작동 시키십시오. 그런 다음이 작업이 완료되면 Swing을 사용하여 메시지와 전자 메일 주소에 대한 사용자 입력을 얻음으로써 코드를보다 동적으로 만듭니다. – camickr

답변

0

우선 수입품 수송 종류에서 정확한 pacakge.

import javax.mail.Transport;//Use this 

지금 이제 전송 클래스의 전송() 메소드를 호출하고 메시지 개체를 전달 사용자 이름과 암호

Session session = Session.getInstance(props, 
     new javax.mail.Authenticator() { 
     protected PasswordAuthentication getPasswordAuthentication() { 
      return new PasswordAuthentication(username, password); 
     } 
     }); 

을 인증하기 위해 인증 자를 사용합니다.

try { 

     Message message = new MimeMessage(session); 
     message.setFrom(new InternetAddress("[email protected]")); 
     message.setRecipients(Message.RecipientType.TO, 
      InternetAddress.parse("[email protected]")); 
     message.setSubject("Testing Subject"); 
     message.setText("Dear Mail Crawler," 
      + "\n\n No spam to my email, please!"); 

     Transport.send(message); 

     System.out.println("Done"); 

    } catch (MessagingException e) { 
     throw new RuntimeException(e); 
    }