[解決済み】JavaアプリケーションでGMail、Yahoo、Hotmailを使ってメールを送信するにはどうしたらいいですか?
2022-04-09 04:19:28
質問
GMailのアカウントを使ってJavaアプリケーションからメールを送信することは可能ですか? 会社のメールサーバにJavaアプリを設定し、メールを送信できるようにしましたが、アプリケーションを配布する際にそれでは間に合いません。Hotmail、Yahoo、GMailのいずれかを使用した回答でもかまいません。
解決方法は?
まず JavaMail API を実行し、関連する jar ファイルがクラスパスにあることを確認します。
GMailを使用した完全な動作例です。
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
public class Main {
private static String USER_NAME = "*****"; // GMail user name (just the part before "@gmail.com")
private static String PASSWORD = "********"; // GMail password
private static String RECIPIENT = "[email protected]";
public static void main(String[] args) {
String from = USER_NAME;
String pass = PASSWORD;
String[] to = { RECIPIENT }; // list of recipient email addresses
String subject = "Java send mail example";
String body = "Welcome to JavaMail!";
sendFromGMail(from, pass, to, subject, body);
}
private static void sendFromGMail(String from, String pass, String[] to, String subject, String body) {
Properties props = System.getProperties();
String host = "smtp.gmail.com";
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.host", host);
props.put("mail.smtp.user", from);
props.put("mail.smtp.password", pass);
props.put("mail.smtp.port", "587");
props.put("mail.smtp.auth", "true");
Session session = Session.getDefaultInstance(props);
MimeMessage message = new MimeMessage(session);
try {
message.setFrom(new InternetAddress(from));
InternetAddress[] toAddress = new InternetAddress[to.length];
// To get the array of addresses
for( int i = 0; i < to.length; i++ ) {
toAddress[i] = new InternetAddress(to[i]);
}
for( int i = 0; i < toAddress.length; i++) {
message.addRecipient(Message.RecipientType.TO, toAddress[i]);
}
message.setSubject(subject);
message.setText(body);
Transport transport = session.getTransport("smtp");
transport.connect(host, from, pass);
transport.sendMessage(message, message.getAllRecipients());
transport.close();
}
catch (AddressException ae) {
ae.printStackTrace();
}
catch (MessagingException me) {
me.printStackTrace();
}
}
}
当然ながら、もっと多くのことを
catch
ブロックは、上記のサンプルコードで私が行ったようにスタックトレースを表示する以上のものです。 (上記の例のように
catch
ブロックを使って、JavaMail APIのどのメソッド呼び出しが例外を投げるかを確認することで、その適切な処理方法をより良く理解することができます)。
ありがとうございます ジョドネル をはじめ、回答してくれた皆さん。 彼の回答によって95%くらいは完全な答えにたどり着いたので、懸賞金をあげます。
関連
-
[解決済み] エラー - trustAnchors パラメータは空であってはなりません。
-
[解決済み] java.util.concurrent.ExecutionException 例外をどのように処理しますか?
-
[解決済み] java.lang.ClassCastException: java.lang.Long を java.lang.Integer にキャストできない(java 1.6
-
[解決済み] .lengthが解決できない、またはフィールドでない
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] Mavenを使用して、依存関係を持つ実行可能なJARを作成するにはどうすればよいですか?
-
[解決済み] mailto:を使ってメールの件名や内容を設定することはできますか?
-
[解決済み] .NETでGmailを使ったメール送信
-
[解決済み] メール送信インテント
-
[解決済み】JSP 2を使用して、JSPファイル内のJavaコードを回避するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] java.sql.SQLException: ORA-00933: SQL コマンドが正しく終了していません。
-
[解決済み] javaで部分クラスを実装する方法
-
[解決済み] 一部の入力ファイルが非推奨のAPIを使用またはオーバーライドしている
-
[解決済み] javac ソースファイルが見つかりません
-
[解決済み] Apache Camelのログに簡単なテキストを記録する
-
[解決済み] JDBC タイプの方言マッピングがありません。1111
-
[解決済み] Java- <T extends Comparable<T>>の意味?
-
[解決済み] publicId と systemId の間に空白が必要です。
-
[解決済み] SubclipseとJavaHLのインストールで頭を悩ます
-
[解決済み] Maven: assembly-pluginが全く実行されない