-1
Swingで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();
}
}
}
}
とMavenの依存関係(そのうちのいくつか必要とされていないかもしれない):
<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にいくつかの依存関係を追加しようとしていますが、間違ったデシソンと思われますが、どうすれば修正できるのか気にしないでください。
スイングは電子メールの送信とは関係ありません。だからまず、電子メールのプロパティのデータをハードコーディングしてコードを動作させてください。その後、Swingを使用してメッセージと電子メールアドレスのユーザー入力を取得することにより、コードをより動的にします。 – camickr