PHP-Skript zum Versenden von Mails verwenden

Florian

Grünschnabel
Hallo,
ich habe nun schon seit längerem das ärgerliche Problem, dass ich aus meinem JAVA-Programm heraus eine E-Mail versenden möchte und mir dies einfach nicht gelingen will. Mit der Javamail API bin ich zwar zurechtgekommen, bekomme aber nie eine Verbindung aufgebaut. Außerdem benötigt man zum Verbinden viele Daten - das kann und will man ja nicht jedem Nutzer zumuten :D
Deshalb habe ich mir ein PHP-Skript geschrieben, welches per GET Daten entgegennimmt und diese dann mit der mail()-Funktion verschickt. Da der Aufruf der URL allerdings nicht funktionierte (Im Browser klappte es allerdings) und die GET-Methode ja sowieso eine Größenbeschränkung der Daten bedeutet habe ich nun versucht auf die POST-Methode umzusteigen. Für die Verbindungen verwende ich übrigens die HTTP-Components in Version 4.1.

Für den Aufruf des Skript unter Verwendung der POST-Methode verwende ich folgenden Code, den ich im Internet (http://openbook.galileocomputing.de...21_004.htm#mj09ddf4c4d29f03c1fa3ffe5344c0875d) gefunden habe:
Code:
    public static void sendeDatenPerPOST(String aUrl, String body) throws Exception {
        URL url = new URL(aUrl);
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setRequestMethod( "POST" );
        connection.setDoInput( true );
        connection.setDoOutput( true );
        connection.setUseCaches( false );
        connection.setRequestProperty( "Content-Type",
                                       "application/x-www-form-urlencoded" );
        connection.setRequestProperty( "Content-Length", String.valueOf(body.length()) );

        OutputStreamWriter writer = new OutputStreamWriter( connection.getOutputStream() );
        writer.write( body );
        writer.flush();


        BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()) );

        for ( String line; (line = reader.readLine()) != null; )
        {
          System.out.println( line );
        }

        writer.close();
        reader.close();
    }

Aufrufen tue ich dies hiermit (%domain% steht für die Domain unter der das Skript erreichbar ist. Da dieses aber einiges an Missbrauchspotenzial bietet schreibe ich die Domain nicht aus :D):
Code:
                            String url = "%domain%/jserienmailer_skript.php";
                            String body = "an=" + URLEncoder.encode(an, "UTF-8" ) + "&" + "von=" + URLEncoder.encode(von, "UTF-8" ) + "&" + "betreff=" + URLEncoder.encode(betreff, "UTF-8" ) + "&" + "nachricht=" + URLEncoder.encode(nachricht, "UTF-8" );
                            WebPOST.sendeDatenPerPOST(url, body);

Allerdings erhalte ich lediglich folgende Fehlermeldung:
Code:
java.io.IOException: Server returned HTTP response code: 403 for URL: %domain%/jserienmailer_skript.php

Rufe ich diese URL im Browser auf erhalte ich eine Erfolgsmeldung! Wie geht denn sowas, das macht mich noch ganz verrückt :(

Da ich mit diesem Programm gerne einen Silvester-Newsletter verschicken will, würde ich mich über schnelle Antworten sehr freuen!

Allen schon mal ein gutes neues Jahr und Danke für Antworten!

Grüße,
Florian L.
 
Zurück