以下のコードで作業しようとしています:
import javax.servlet.*;
import javax.servlet.http.*;
import Java.io.*;
import javax.mail.*;
import javax.mail.internet.*; // important
import javax.mail.event.*; // important
import Java.net.*;
import Java.util.*;
public class servletmail extends HttpServlet {
public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
PrintWriter out=response.getWriter();
response.setContentType("text/html");
try {
Properties props=new Properties();
props.put("mail.smtp.Host","localhost"); // 'localhost' for testing
Session session1 = Session.getDefaultInstance(props,null);
String s1 = request.getParameter("text1"); //sender (from)
String s2 = request.getParameter("text2");
String s3 = request.getParameter("text3");
String s4 = request.getParameter("area1");
Message message =new MimeMessage(session1);
message.setFrom(new InternetAddress(s1));
message.setRecipients(Message.RecipientType.TO,InternetAddress.parse(s2,false));
message.setSubject(s3);
message.setText(s4);
Transport.send(message);
out.println("mail has been sent");
} catch(Exception ex) {
System.out.println("ERROR....."+ex);
}
}
}
私はmail.jarとactivation.jarを使用しています。しかし、メールサーバーでどのように構成すればよいのか理解できません。どのメールサーバーを使用すればよいですか?上記のコードを使用してメールを送信できますか?メールサーバーの要件は何ですか?どのように設定すればよいですか?
開始するには、 SMTPサーバー が必要です。メールを送信できる必要があります。あなたがウェブサイトを提供することができるようにHTTPサーバーを必要とするのと同じ方法。どうやら(servletcontainerを備えた)HTTPサーバーはすでにあるが、まだSMTPサーバーが構成されていない。
ISPからのメールやGmail、Yahooなどのパブリックメールボックスなど、既存のメールアカウントに関連付けられたSMTPサーバーを利用できます。SMTP接続の詳細は、ドキュメントに記載されています。通常は、ホスト名とポート番号を知っているだけです。 username/passwordは、メールアカウントのものと同じです。
次に、ホスト名とポート番号をJavaMailのSMTPプロパティとして設定する必要があります。
Properties properties = new Properties();
properties.put("mail.transport.protocol", "smtp");
properties.put("mail.smtp.Host", "smtp.example.com"); // smtp.gmail.com?
properties.put("mail.smtp.port", "25");
ユーザー名/パスワードは、Authenticator
で次のように使用する必要があります。
properties.put("mail.smtp.auth", "true");
Authenticator authenticator = new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("yourusername", "yourpassword");
}
};
その後、次のようにメールセッションを取得できます。
Session session = Session.getDefaultInstance(properties, authenticator);
ただし、ISPまたは公開メールボックスのアカウントを使用すると、メールのFrom
フィールドでの自分のアドレスの使用に制限され、通常は一定の間隔で送信できるメールの量も制限されます。これを回避したい場合は、たとえば Apache James などの独自のSMTPサーバーをインストールする必要があります。これは、Javaベース、またはMicrosoft Exchangeとなど。
結局のところ、理解を深めるために JavaMailチュートリアル を使用することをお勧めします。