dポイントプレゼントキャンペーン実施中!

javamailでメールを送信しようとすると
エラーが表示されます。
コードとエラー内容http://oshiete.goo.ne.jp/qa/6678667.html
いったい何が原因なのかさっぱりわかりません
パソコンのセキュリティソフトはすべて削除しましたし
ファイアーウォールも無効にしています。

A 回答 (4件)

No3の回答が何故「調査中」なのか不明なのですが(単にjavaのプログラムなのに・・・)、


http://detail.chiebukuro.yahoo.co.jp/qa/question …
に似たようなプログラムがありますので、見てみてください。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
解答の手順どうりに行ったところメール送信を行うことができました。
jakarta-comons-emailでもメール送信を行うことができました。
ちょっと感動しています。
msnのメール送信ではoutlookからも送信できなかったのでそれがおそらく原因
なのかなと思っています。
ありがとうございました。

お礼日時:2011/04/28 17:20

import java.util.*;


import javax.mail.*;
import javax.mail.internet.*;

public class MailTransfer{
public static void main(String[] args) {
try {
// SMTPサーバー設定
Properties props = System.getProperties();
props.setProperty( "mail.smtp.port", "587");
props.setProperty("mail.smtp.socketFactory.port", "587");
props.put( "mail.smtp.host", "smtp.mail.yahoo.co.jp" );
props.setProperty("mail.smtp.auth", "true");
Session session = Session.getInstance(props, new Authenticator(){
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication( "ユーザー名", "パスワード" );
}
});
MimeMessage mimeMessage=new MimeMessage( session );

// 送信元メールアドレスと送信者名を指定
mimeMessage.setFrom( new InternetAddress( "ユーザー名@yahoo.co.jp", "ユーザー名", "ISO-2022-JP" ) );
// 送信先メールアドレスを指定
mimeMessage.setRecipients( Message.RecipientType.TO, "送信先@yahoo.co.jp" );
// メールのタイトルを指定
mimeMessage.setSubject( "メールテスト", "ISO-2022-JP" );
// メールの内容を指定
mimeMessage.setText( "こんにちは\n", "ISO-2022-JP" );
// メールの形式を指定
mimeMessage.setHeader( "Content-Type", "text/html" );
// 送信日付を指定
mimeMessage.setSentDate( new Date() );
// 送信します
Transport.send( mimeMessage );
} catch (Exception e) {
e.printStackTrace();
}
}
}

PasswordAuthenticationのところで指定する、ユーザー名は取得したアカウントでyahooの場合「@yahoo.co.jp」は不要ですので気をつけてください。
ex. xxxxx@yahoo.co.jpというメールアドレスなら、"xxxxx","パスワード"

// 送信元メールアドレスと送信者名を指定
の部分ですが、送信元の "メールアドレス","送信した人の名前" を指定します。
ex. 送る人が山田なら、 "yamada@yahoo.co.jp","山田"

あと、別に無くても良い部分がありますが、カスタマイズしてください。
ちなみに、初回送ると届くのに数分かかる場合があります。
    • good
    • 0

hotmailはちょっと工夫が必要かもしれません。

若しくはサーバーの指定が違うのかもしれません。一応、yahoo、so-net、nifty、OCN、.biglobe等では上手く送受信の実績ありますが。。。
他の回答者様からの回答を待ってください。私はココまでで。

PS.
yahooのメールサーバーではダメなのでしょうか?
OKなら解説できるのですが・・・
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
yahooのメールアドレスを作成しましたのでyahooのメールサーバでの
接続方法を教えていただけませんでしょうか。
よろしくお願いいたします。

お礼日時:2011/04/27 10:05

hotamilのサーバーが、どのような設定になってるか分かりません。

参考までという事で。

1.PopBeforeSMTPな場合。
>>Session session=Session.getDefaultInstance(objPrp,null);
の下の行に、
Store store = session.getStore("pop3");
store.connect(pop3Host, "ユーザー名", "パスワード" );
を追加。


2.hotamilのSMTPサーバーがサブミッション・ポートを使用している場合。
>>Properties objPrp=new Properties();
の下の行に、
objPrp.setProperty( "mail.smtp.port", "587");
を追加。

>>Session session=Session.getDefaultInstance(objPrp,null);
を、
Session session = Session.getInstance(objPrp, new Authenticator(){
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication( "ユーザー名", "パスワード" );
}
});
に変更。

尚、ユーザー名とパスワードは取得したアカウントのものを用います。


ちなみにJakarta Commons-Emailを使うと少々、楽にできますけどね。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。解答どうりにコードを修正した結果以下のエラーがでました。
1.のコードの場合
javax.mail.MessagingException: Connect failed;
nested exception is:
java.net.ConnectException: Connection refused: connect


javax.mail.MessagingException: Could not connect to SMTP host: smtp.email.msn.com, port: 25;
nested exception is:
java.net.ConnectException: Connection timed out: connect
というエラーが直ぐに帰ってきた。

2.のコードの場合
javax.mail.MessagingException: Could not connect to SMTP host: smtp.email.msn.com, port: 587;
というエラー



お忙しいところ申し訳ありませんが再度解決策を考えていただけませんでしょうか。

お礼日時:2011/04/26 16:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!