はじめまして.こんにちわ.
いまjavamailを用いて,メール送信のプログラムを書いています.
しかし,同じアドレスに送信の際に3通に1回程度エラーを返してきます.1通のみですと失敗はないのですが,複数のメールを連続で送るとエラーを返します.
エラーは以下のものになります.
javax.mail.AuthenticationFailedException
これは認証エラーのようですが,同じSMTPを使用しているので,うまく送信できていることもあることから,方法として間違えているのではなく,何か他の部分が悪さをしているのかと思っています.例えば,次のメールがclose する前に connect をかけているのかな,と考えたりしています.そのために,transport.close() が終わった段階で1秒間ほど待つようにしてみたりしたのですが,解決できませんでした.
何か原因として考えられることありましたら,教えていただけないでしょうか.お願いいたします.
また,次に今回用いている送信するクラスをつけます.呼び出す際にはこのクラスのインスタンスをつくり,送信の際にタイトルとメッセージ,添付ファイルを書き換えながら,送信用のメソッドを連続的に呼び出すことで実装しています.
なにぶんjavaはまだ触り初めて日が浅いために,他の部分にて勘違いしている部分などもありましたら,そちらのご指摘もお願いいたします.
No.1ベストアンサー
- 回答日時:
エラーの内容を見る限りでは確かに、認証関連でエラーがでていますね。
送信時のエラーに関してはSMTPサーバがAUTH認証を要求してるってことはないでしょうか?参考URLにJavaMailを利用したAUTH認証を行い送信するサンプルがありますので、一度、実装してみてはいかがでしょうか?それでもエラーがでる様であれば、singletonモデルでテストしてみるのもいいかもしれません。
参考URL:http://www.geocities.co.jp/Playtown/7799/progmem …
この回答への補足
ありがとうございます.ですが,ちょっと私の使いかたが悪いのかもしれませんが
Session session = Session.getInstance( props, new myAuth() );
の部分で型が違うとエラーが出てしまいます.ただ,デバッグモードでみてみると,connectは成功しているようですが,以下のように出力されます.
DEBUG: setDebug: JavaMail version 1.3.3
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: trying to connect to host "smtp.***.***.jp", port 25, isSSL false
220 ***.***.***.**.jp ESMTP
DEBUG SMTP: connected to host "smtp.***.***.jp", port: 25
EHLO KATANA2
250-***.***.***.***.jp
250-AUTH LOGIN PLAIN
250-PIPELINING
250 8BITMIME
DEBUG SMTP: Found extension "AUTH", arg "LOGIN PLAIN"
DEBUG SMTP: Found extension "PIPELINING", arg ""
DEBUG SMTP: Found extension "8BITMIME", arg ""
DEBUG SMTP: Attempt to authenticate
AUTH LOGIN
334 %%%%%%%%%%%
*********
334 %%%%%%%%%%%
*********
535 authorization failed (#5.7.0)
javax.mail.AuthenticationFailedException
また参考までに,現在自分の使っているプログラムを載せます.どうぞよろしくお願いいたします.
■呼び出し側■
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
public class MailSendFile {
private String smtp;
private String sendfrom;
private String sendto;
private String name;
private String title;
private String filename;
private String message;
private boolean RET;
MailSendFile(){}
MailSendFile(String _smtp, String _sendfrom, String _sendto, String _name, String _title, String _filename, String _message){
smtp = _smtp;
sendfrom = _sendfrom;
sendto = _sendto;
name = _name;
title = _title;
filename = _filename;
message = _message;
}
public boolean sendFile(String user, String pass) throws MailSendFileException{
try {
Properties props = new Properties();
props.put("mail.smtp.host",smtp);
props.put("mail.smtp.auth","true");
Session session=Session.getDefaultInstance(props,null);
MimeMessage mimeMessage=new MimeMessage(session);
// 送信元メールアドレスと送信者名を指定
mimeMessage.setFrom(new InternetAddress(sendfrom,name,"iso-2022-jp"));
mimeMessage.setRecipients(Message.RecipientType.TO,sendto);
mimeMessage.setSubject(title,"iso-2022-jp");
/** 1つ目のボディパートを作成 **/
MimeBodyPart mbp1 = new MimeBodyPart();
mbp1.setText(message, "iso-2022-jp");
mimeMessage.setHeader("Content-Type","text/html");
/** 2つ目のボディパートを作成 **/
MimeBodyPart mbp2 = new MimeBodyPart();
FileDataSource fds = new FileDataSource(filename);
mbp2.setDataHandler(new DataHandler(fds));
mbp2.setFileName(MimeUtility.encodeWord(fds.getName()));
// 複数のボディを格納するマルチパートオブジェクトを生成
Multipart mp = new MimeMultipart();
mp.addBodyPart(mbp1);
mp.addBodyPart(mbp2);
// マルチパートオブジェクトをメッセージに設定
mimeMessage.setContent(mp);
// 送信日付を指定
mimeMessage.setSentDate(new Date());
// 送信
Transport transport = session.getTransport("smtp");
transport.connect(null, user, pass); //ユーザとパスワードを指定する
transport.sendMessage(mimeMessage,mimeMessage.getAllRecipients());
transport.close();
RET = true;
} catch (Exception e) {
System.out.println(e);
RET = false;
MailSendFileException msfe = new MailSendFileException();
throw msfe;
}
return RET;
}
public void setsmtp(String _smtp){
smtp = _smtp;
}
public void setsendfrom(String _sendfrom){
sendfrom = _sendfrom;
}
public void setsendto(String _sendto){
sendto = _sendto;
}
public void setname(String _name){
name = _name;
}
public void settitle(String _title){
title = _title;
}
public void setfilename(String _filename){
filename = _filename;
}
public void setmessage(String _message){
message = _message;
}
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(メールソフト・メールサービス) PCでメールは発信について 6 2022/08/13 09:23
- その他(メールソフト・メールサービス) メールが送信できない 発信側でできる対策 3 2023/05/11 10:22
- Outlook(アウトルック) outlookの送信エラーについて 1 2022/05/13 12:04
- サーバー 接続・ログインはできているのにメールが送信できない 2 2022/06/27 15:03
- Yahoo!メール ぷららメールの送受信が出来なくなった 2 2023/07/16 11:48
- PHP どうして送信されないのでしょうか? 1 2022/12/09 05:23
- Yahoo!メール PS4の事で質問です メールアドレスを変更の際、受信出来ず困ってます 私は今までPS4のアドレスはP 1 2022/07/28 17:06
- iPhone(アイフォーン) Phoneでメール送信できていないのは? 1 2023/07/11 20:02
- 仕事術・業務効率化 頼まれてない事を自己判断でやることについて 1 2022/08/12 17:15
- その他(メールソフト・メールサービス) Thunderbird メール受信 できない時にエラーが欲しい 1 2023/05/26 15:07
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・ハマっている「お菓子」を教えて!
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Eclipseで、プロジェクト名のと...
-
エラー:org.springframeworkが...
-
タグが閉じてないというエラー...
-
構文エラーのやり直しについて
-
JSP NullPointerException
-
DataSetのFilter
-
eclipseでのsvn認証エラー回避方法
-
Eclipseの環境について
-
Javaのエラーについてです
-
jspのファイルでエラーが出る
-
java return文を指定できません。
-
Java エスケープ文字
-
enum列挙子に使える文字列と使...
-
Win32コンソールアプリでnamesp...
-
JDK6なのにGenericsでエラー「...
-
JSPで意味不明のコンパイルエラー
-
Hot code replace failed ?
-
シンボルが見つかりませんとい...
-
javaのエラーに関する質問 よ...
-
tomcat起動時エラー
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Eclipseで、プロジェクト名のと...
-
エラー:org.springframeworkが...
-
シンボルが見つかりませんとい...
-
eclipseでのsvn認証エラー回避方法
-
eclipseをバージョンアップした...
-
Javaのエラーについてです
-
タグが閉じてないというエラー...
-
Eclipseで次のエラー箇所にジャ...
-
構文エラーのやり直しについて
-
tomcat起動時エラー
-
コンパイル時にエラーが出てし...
-
JSP内でString型からint型に変...
-
eclipseのエラーについて質問で...
-
Eclipseの環境について
-
DataSetのFilter
-
JSPで意味不明のコンパイルエラー
-
JBossについて
-
Eclipse デバッグ エラー処理
-
jspのファイルでエラーが出る
-
Java エスケープ文字
おすすめ情報