-1

Gmail にメッセージを送信するようにサーブレットを設定しようとしていますが、ブラウザ ウィンドウで返信メッセージを待っています。

サーブレットのコードは次のとおりです。

import javax.mail.*;
import javax.mail.internet.*;
import javax.servlet.http.*;
import javax.servlet.*;
import java.io.*;


public class JavaMailServlet extends HttpServlet 
{

public void doGet(HttpServletRequest request,HttpServletResponse response)
{

    try{

        String userName=request.getParameter("p1");
        String password=request.getParameter("p2");;

        Properties props=new Properties();
        props.put("mail.smtp.host","smtp.gmail.com");
        props.put("mail.smtp.port",465);


        Session ses=Session.getInstance(props,null);
        Message msg=new MimeMessage(ses);
        msg.setFrom(new InternetAddress(request.getRequestURI()));
        msg.addRecipient(Message.RecipientType.TO,new InternetAddress("Boyofbackstreet@gmail.com"));
        msg.setSubject("Hello");
        msg.setText("What's up?");
        Transport.send(msg);
        response.getWriter().println("Message sent");
    }

    catch(Exception e)
    {
        System.out.println(e);
    }

}
}

接続するにはどうすればよいですか?

4

3 に答える 3

4

私が知る限り、あなたは認証を設定していません。リクエストからユーザー名とパスワードを取得しましたが (これが HTTPS 経由であることを願っています)、どこにも使用していません。

サーブレットよりもデバッグがはるかに簡単なコンソール アプリでこれを機能させてから、サーブレット環境に配置すること強くお勧めします。

于 2009-09-24T19:11:39.333 に答える
0

あなたがする必要がある解決策を見つけてください。1. Transport.send()を使用する代わりに、次のコード行を使用します

Transport tp = session.getTransport("smtp");
  tp.connect("smtp.gmail.com", 465, userName, password);
  tp.sendMessage(msg, msg.getAllRecipients());

その場合、プログラムは機能するはずです。

于 2011-09-14T19:09:42.477 に答える
0

はい、何も認証していません。GMail で認証する URL は次の URL です。

https://www.google.com/accounts/ServiceLoginAuth?service=mail&Email=YOUREMAIL&Passwd=URLENCODEDPASSWORD

YOUREMAIL と URLENCODEDPASSWORD を適切な値に置き換えます。簡単な方法でパスワードをエンコードできます

URLEncoder.encode("password");
于 2009-09-24T20:00:05.387 に答える