Java アプリケーション内にメール システムを実装しようとしていますが、メール サーバーとそのスパム フィルターによって尊重されるようにメールを送信する方法がわかりません。「登録の完了」、「パスワードを忘れた」、およびユーザーのアカウント内で発生する通知をメールで送信します。
現時点では、gmail アカウントを介して通常どおりメールを送信しています (必ずしも gmail を使用する必要はありません)。しかし、いくつかのメールを送信した後、gmail Web アプリケーションにログインしない限り、gmail がメールの配信を停止することに気付きました。従来の Java メール API 経由で送信します。
// settings
properties = System.getProperties();
properties.put("mail.smtp.host", smtpServer);
properties.put("mail.smtp.port", smtpPort);
properties.put("mail.smtp.socketFactory.port", smtpPort);
properties.put("mail.smtp.socketFactory.class", SSLSocketFactory.class.getName());
properties.put("mail.smtp.auth", "true");
// sending email via smtp
Session session = Session.getInstance(properties, authenticator);
final MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
message.setSubject(subject, "UTF-8");
message.setContent(content, "text/html; charset=UTF-8");
Transport.send(message);
では、独自の SMTP サーバーを使用する必要がありますか? デフォルトの sendmail linux コマンドはどうですか? なぜ SMTP が必要なのですか? PHP から SMTP なしで直接電子メールを送信できますが、これを Java でも実現できますか?
<?php mail($to, $subject, $message, $headers); ?>
これらのテクニックのうち、最も正しいものはどれですか? これらのサービスを他の人に信頼できるように使用するにはどうすればよいですか? スパムとしてマークされないようにするにはどうすればよいですか?