
JAVAを使えば、Outlookを使わなくても、メールを送付できると書いてあったのですが
nested exception is:
class javax.mail.MessagingException: Could not connect to SMTP host: localhost, port: 25;
というエラーが出て送付できません。
JavaMailの環境は何とか用意できたのですが送ることができません。
いったいどうすればよいのでしょうか?
なお、コードは、下記のコピーです。
http://www.hellohiro.com/src/HelloWorldJavaMail. …
宜しくお願い致します。
No.4
- 回答日時:
>// 送信します
>Transport.send(mimeMessage);
>//transport.sendMessage(mimeMessage, message.getAllRecipients());
のコードをTransport#sendMessage()の方に変えてください。
Transport#send()は自動的にサーバに接続してくれますが、ユーザとパスワードを指定できません。
AuthenticationFailedException(=認証エラー)となっているのはそのためです。
Transport#sendMessage()をコメントアウトしているのは何か理由があるのでしょうか?
この回答への補足
回答いただきありがとうございます。
transport.sendMessage(mimeMessage, message.getAllRecipients());
だと、 message は未定義な変数またはクラス名です。
とうエラーを出していたためです。
今は、messageをMessageにして見るとうまくいったようです。
しかし、下記のように書き換えたのですがまだ、エラーが出ます。なぜでしょうか?また、どうすればよいでしょうか??
Test.java:54: class javax.mail.Message のメソッド javax.mail.Address getAllRecipients()[] に static 参照することはできません。
transport.sendMessage(mimeMessage, Message.getAllRecipients());
// 送信します
// Transport.send(mimeMessage);
transport.sendMessage(mimeMessage, Message.getAllRecipients());
No.3
- 回答日時:
>props.put("smtp.mail.yahoo.co.jp", "202.93.93.190");を指定していますが、同様のエラーがでます。
それではエラーになるでしょうね。上記のコードを
props.put("mail.smtp.host", "smtp.mail.yahoo.co.jp");
としてください。それから
Properties props = System.getProperties();
のようにシステムプロパティを取得しているようですが、
Properties props = new Properties();
でよいと思います。(動作するけど、あまり意味がない。)
また、SMTPサーバへの接続に「SMTP AUTH」や「POP before SMTP」が必要な場合は、
当然それらを実装しなければいけません。例えば、「SMTP AUTH(Login)」の場合であれば、
下記のようにTransportクラスのインスタンスを使って接続と送信を行います。
props.put("mail.smtp.auth","true");
Transport transport = session.getTransport("smtp");
transport.connect(null, "user", "password");//ユーザとパスワードを指定する
transport.sendMessage(mimeMessage, message.getAllRecipients());
transport.close();
この回答への補足
回答いただきありがとうございます。
**********
の部分は埋めることができたのですが、まだ、うまく送信できないみたいです・・・
この下記のエラーをなくすには、どうしたらよいでしょうか???
javax.mail.SendFailedException: Sending failed;
nested exception is:
class javax.mail.AuthenticationFailedException
at javax.mail.Transport.send0(Transport.java:218)
at javax.mail.Transport.send(Transport.java:80)
at Test.main(Test.java:53)
何卒、宜しくお願い致します。
一応、全文、コード表示。
import java.util.*;
import java.io.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
public class Test {
public static void main(String[] args) {
try {
Properties props = new Properties();
// SMTPサーバーのアドレスを指定
props.put("mail.smtp.host", "**********");
Session session = Session.getDefaultInstance(props, null);
MimeMessage mimeMessage = new MimeMessage(session);
// 送信元メールアドレスと送信者名を指定
mimeMessage.setFrom(new InternetAddress("**********", "**********","iso-2022-jp"));
// 送信先メールアドレスを指定
mimeMessage.setRecipients(Message.RecipientType.TO, "**********");
// メールのタイトルを指定
mimeMessage.setSubject("SendMailでファイル添付!" , "iso-2022-jp");
props.put("mail.smtp.auth","true");
Transport transport = session.getTransport("smtp");
transport.connect(null, "**********", "**********"); //ユーザとパスワードを指定する
/** 1つ目のボディパートを作成 **/
MimeBodyPart mbp1 = new MimeBodyPart();
// メールの内容を指定
mbp1.setText("SendMailでファイルを添付します。" , "iso-2022-jp");
/** 2つ目のボディパートを作成 **/
MimeBodyPart mbp2 = new MimeBodyPart();
// 添付するファイル名を指定
FileDataSource fds = new FileDataSource("helloworld.txt");
mbp2.setDataHandler(new DataHandler(fds));
mbp2.setFileName(MimeUtility.encodeWord(fds.getName()));
// 複数のボディを格納するマルチパートオブジェクトを生成
Multipart mp = new MimeMultipart();
// 1つ目のボディパートを追加
mp.addBodyPart(mbp1);
// 2つ目のボディパートを追加
mp.addBodyPart(mbp2);
// マルチパートオブジェクトをメッセージに設定
mimeMessage.setContent(mp);
// 送信日付を指定
mimeMessage.setSentDate(new Date());
// 送信します
Transport.send(mimeMessage);
//transport.sendMessage(mimeMessage, message.getAllRecipients());
transport.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
No.2
- 回答日時:
話に趣旨がずれていますが・・・
JAVAでチャットするのがおすすめです。
CGIチャットよりも早く軽くおすすめです。
無料でレンタルできますので、一度試してみてはどうでしょう?
No.1
- 回答日時:
java.mail の簡単なサンプルですね。
SMTPサーバーが localhost つまりあなたのPCで起動していないので、アプリケーションがサーバーに接続できないエラーです。
あなたの普段使用しているSMTPサーバーを指定するか、あなたのPCでSMTPサーバーを設定してください。
といってもSMTPサーバーを設定するよりもいつも使用しているSMTPサーバーを指定したほうが簡単ですね。
SMTPサーバーはメール送信用のサーバーです。SMTPはデフォルトでTCPの25番ポートを使用します。
この回答への補足
回答いただきありがとうございます。
私の場合、ヤフーのフリーメールをSMTPとして使っているので、
props.put("smtp.mail.yahoo.co.jp", "202.93.93.190");を指定していますが、同様のエラーがでます。
他にも、自分のプロバイダメールでも試したのですが同様の結果でした。
パスワードの設定などする項目がないのも気になりますし、何か、大事な設定が抜けている気がするのですが、残念ながら、私には特定できていません。
ご教示、宜しくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
mb_send_mailでデタラメなメー...
-
SendMailがエラーを返さない
-
CSV出力にHTMLが入ってしまう
-
.phpファイルが、表示されない
-
PHPからメールを送る@さくらイ...
-
centos6のlogにscript not foun...
-
ob_end_clean と ob_clean の違...
-
php.ini を設定を変更すると再...
-
CFileDialogの最初のディレクト...
-
IIS+PHP スクリプトから仮想デ...
-
glide3x.dllがないと表示されま...
-
PHPのif文でその処理を途中で抜...
-
PHP PDOライブラリが読み込まれ...
-
include先でのinclude元の変数...
-
try~catch構文は、どういうメ...
-
FTPコマンドでディレクトリごと...
-
Notice: Undefined offset: 1を...
-
PHPでメールを受信するには?
-
テキストボックスにデータベー...
-
fopenでファイルが開かない場合...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PHP mb_send_mailが使えない
-
PHPでメールの送信(Gmail使用)
-
VB6.0とBASP21を用いてyahooメ...
-
PHPのメール送信ができません
-
OS標準搭載機能を使用してのメ...
-
(PHP)mb_send_mailでメール送信...
-
xampp sendmail 設定
-
SMTPサーバの接続に失敗する原...
-
mailコマンドで上手くいかない
-
phpをpsqlへ接続しようとするの...
-
SMTPサーバーにてメールの送信
-
C# メール送信ついて困っています
-
PHPでsimplexml_load_fileの引...
-
PHP でmb_send_mailが上手くい...
-
項目「sendmail_path」には メ...
-
C# SmtpでYahooサーバーから送信
-
メールの送信サーバーとは何で...
-
BASP21メール送信(SMTP-AUTH認...
-
javaを使ってメールがしたい
-
PHPのif文でその処理を途中で抜...
おすすめ情報