
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で質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) laravel 本番環境でメールが送れません。 1 2023/02/17 17:57
- Gmail 【お助け!】サーバーからのメール送信でGmailに送信されない問題について 1 2023/06/20 22:03
- MySQL データベースの複製の仕方(mysql) 2 2023/05/30 18:24
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- Outlook(アウトルック) outlookの送信エラーについて 1 2022/05/13 12:04
- PHP php 完了画面の送信メールのコードを書いているのですが・・・ 2 2023/06/02 12:01
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- Java mac mini 2009 でのmac OS における Java の入れ替えについて 1 2022/12/27 19:23
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Outlook(アウトルック) メール送信できない 3 2022/07/20 09:07
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHPのメール送信ができません
-
SMTPサーバの接続に失敗する原...
-
項目「sendmail_path」には メ...
-
C# メール送信ついて困っています
-
PHPをPostgreSQLに接続するには?
-
PHPで画像サイズの変更
-
メールのヘッダ(From)について
-
メールフォームが文字化けしま...
-
PHPで特定のURLにジャンプす...
-
PHPがどうしても反映されません
-
ファイルのアップロード
-
JAVAで得た結果の変数を、...
-
下記のコードなのですが「C:\\H...
-
Prompt入力値をphp変数として取...
-
if文が入れ子の場合の条件の解釈
-
PHPで文字列の検索
-
ApacheとPHPの連携
-
Visual C++2008でソースコード...
-
POSTされた時に入力されている...
-
【初歩】Win98+Apache2+PHP4の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C# メール送信ついて困っています
-
BASP21メール送信(SMTP-AUTH認...
-
(PHP)mb_send_mailでメール送信...
-
PHP mb_send_mailが使えない
-
javaを使ってメールがしたい
-
C#のメール送信について質問が...
-
VB6.0とBASP21を用いてyahooメ...
-
PHPでsimplexml_load_fileの引...
-
C# SmtpでYahooサーバーから送信
-
yahoo送信サーバーの使い方???
-
vb2005のメール送信について
-
項目「sendmail_path」には メ...
-
少し特殊?な状況でメール送信
-
以下ですが?公開したらセキュ...
-
mb_send_mailで送ったエラーメ...
-
edmaxで送信できなくなりました
-
PHPでメールの送信(Gmail使用)
-
SMTPを自ドメインにしてメール送信
-
Sendmail の Outbound Port25 B...
-
SMTPサーバの接続に失敗する原...
おすすめ情報