質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

1回答

2259閲覧

javamailメール送信 パスワード認証つきのセッションのエラー

KasperHekmatyar

総合スコア81

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2017/06/29 02:02

編集2017/06/29 02:04

###前提・実現したいこと

http://d.hatena.ne.jp/maji-KY/20111001/1317483898#c
このHPのソースを元に自分で
javaでメール送信のプログラムを作成したいのですが、色々とエラーが出てしまいましたので、
どうしてこうなったか、どうしたらよいのか教えてください。
(ちなみにHPのソースコードをそのままコピーしてeclipseに貼り付けたら何もエラーが
出なかったので、HPの内容は問題ないと思われます。)

###発生している問題・エラーメッセージ

①public PasswordAuthentication getPasswordAuthentication() { →PasswordAuthenticationにて赤線(エラー)、 戻りの型は Authenticator.getPasswordAuthentication() と互換性がありませんとのこと。 ②Session session = Session.getInstance(props, new PasswordAuthenticator("m", "m")); →getInstanceにて赤線(エラー)、 型 Session のメソッド getInstance(Properties, Authenticator) は引数 (Properties, PasswordAuthenticator) に適用できませんとのこと

###該当のソースコード

java

1 2package softbank_simulator; 3 4import java.net.Authenticator; 5import java.util.Calendar; 6import java.util.Properties; 7//import java.net.PasswordAuthentication; 8 9import javax.mail.Message; 10import javax.mail.Session; 11import javax.mail.Transport; 12import javax.mail.internet.InternetAddress; 13import javax.mail.internet.MimeMessage; 14import javax.mail.PasswordAuthentication; 15 16public class Send_Mail { 17 18 /** 19 * 20 */ 21 public Send_Mail() { 22 // TODO 自動生成されたコンストラクター・スタブ 23 } 24 25 public static void main(String[] args) throws Exception { 26 27 send(); 28 } 29 30 public static void send() throws Exception { 31 Properties props = new Properties(); 32 props.setProperty("mail.smtp.host", " smtp.office365.com"); 33 props.setProperty("mail.smtp.port", "587"); 34 props.setProperty("mail.smtp.auth", "true"); 35 props.setProperty("mail.debug", "true"); 36 37 props.setProperty("mail.smtp.connectiontimeout", "5000"); 38 props.setProperty("mail.smtp.timeout", "5000"); 39 40 class PasswordAuthenticator extends Authenticator { 41 42 private String username; 43 private char[] password; 44 45 PasswordAuthenticator(String username, String password) { 46 47 this.username = username; 48 this.password = password; 49 50 } 51 52 public PasswordAuthentication getPasswordAuthentication() { 53 54 return new PasswordAuthentication(username, password); 55 56 } 57 } 58 59 Session session = Session.getInstance(props, new PasswordAuthenticator("m", "m")); 60 MimeMessage msg = new MimeMessage(session); 61 62 msg.setRecipient(Message.RecipientType.TO, new InternetAddress("aaa@hhh.co.jp")); 63 msg.setFrom(new InternetAddress("aaa@hhh.co.jp")); 64 msg.setSubject("JAVAメール"); 65 msg.setText("テストメールです"); 66 67 Calendar c = Calendar.getInstance(); 68 msg.setSentDate(c.getTime()); 69 70 Transport.send(msg); 71 72 } 73 74} 75 76

###補足情報(言語/FW/ツール等のバージョンなど)
java1.5 SE
eclipse

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

戻りの型は Authenticator.getPasswordAuthentication() と互換性がありません

独自で作られたPasswordAuthenticatorクラスはjava.net.Authenticatorを継承したクラスです。
java.net.AuthenticatorクラスにはgetPasswordAuthentication()というメソッドが存在し、そのメソッドの戻り値はjava.net.PasswordAuthenticationクラスのインスタンスです。
質問者さんはそのメソッドをoverrideしようとしているのですが、メソッド戻り値のjava.net.PasswordAuthenticationクラスと質問者さんのoverrideしたメソッド戻り値javax.mail.PasswordAuthenticationクラスには互換性がありません。

②の方も同様で、javax.mail.Session#getInstance()の第2引数はjavax.mail.Authenticatorクラスのインスタンスを指定するべきであって、java.net.Authenticatorクラスのサブクラスを指定すべきではありません。

投稿2017/06/29 02:24

tkturbo

総合スコア5572

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KasperHekmatyar

2017/06/29 05:29

いつも分かりやすい回答をありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問