1

正常に実行できないコードが少しありますが、その理由がわかりません。

この機能:

public void send(Envelope envelope) throws IOException
{
        String CRLF = "\r\n";
    sendCommand("MAIL FROM:"+ envelope.Sender + CRLF, 250);
    
    //error occuring here. "Return Code:500 #5.5.1 command not recognized"
    sendCommand("RCPT TO:" + envelope.Recipient + CRLF, 250);
    sendCommand("DATA", 354);
    toServer.print(envelope.Message.Headers + CRLF);
    toServer.print(envelope.Message.Body + CRLF);
    toServer.print("." +CRLF);
}

上記のコードは、次の関数を呼び出します。

private void sendCommand(String command, int rc) throws IOException
{
    /* Write command to server */
    toServer.print(command + CRLF);
    
    /*read reply from server. */
    String line = fromServer.readLine();
    
    System.err.println("Request: " + command);
    System.err.println("Return Code:" + line);
    
    
    /*
     * Check that the server's reply code is the same as the parameter rc.
     * If not, throw an IOException.
     */
    if (!line.substring(0,3).equals(rc+""))
    {
        throw new IOException();
    }
}

そして、情報は次のように送信されます。

Socket connection = new Socket(envelope.DestAddr, SMTP_PORT); 
    fromServer = new BufferedReader(new InputStreamReader(connection.getInputStream()));
    toServer = new PrintStream(connection.getOutputStream());

同じ From と To を使用しています。そして、何らかの理由で RCPT TO: コマンドに次のエラーが表示されます。

「リターン コード:500 #5.5.1 コマンドが認識されませんでした」

編集: telnetで手動で試しました

4

1 に答える 1

1

文字列を作成しているときに1回、呼び出しで1\r\n回、2回追加しています。send()sendCommand()print()

2 番目の\r\nトリガーは、500 5.5.1 Unrecognized command.

于 2013-02-03T03:09:33.997 に答える