eMail automatisch senden

E

enrem

Erfahrenes Mitglied
29
Hallo,

ich möchte, bei einer positiven Fallunterscheidung, automatisch eine eMail an eine vom Anwender festgelegte eMail-Adresse senden. Wichitg dabei ist, das der Anwender nicht explizit noch eine Schaltfläche zum bestätigen drücken muss.

Dieses Beispiel funktionierte früher mal. Habe auch eine Anwendung als Anhang hinzugefügt. Evtl. kann mir jemand auf die Sprünge helfen.

How to send email in background in Android ? - Stack Overflow

Ich verwende Android 4.2.2

Kurz angemerkt, dass ist keine Lösung hier muss man ein eMail-Programm auswählen und anschl. noch senden drücken.

Intent emailIntent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts(
"mailto","info@testmail.de", null));
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Subject");
startActivity(Intent.createChooser(emailIntent, "Send email..."));


Vorab Danke
Gruß enrem
 

Anhänge

  • SendEmailInBackground.zip
    1.007,7 KB · Aufrufe: 79
Zuletzt bearbeitet:
Du kannst nicht davon ausgehen das jeder E-Mail auf seinem Handy konfiguriert hat.
Ferner möchte/kann nicht jeder seine Zugangsdaten in deiner App eingeben.

Eine Möglichkeit wäre die Info an deinen Server zu übermitteln. Und dieser sendet dann die Mail.

cu
 
@rihntrha
Du kannst nicht davon ausgehen das jeder E-Mail auf seinem Handy konfiguriert hat. Ferner möchte/kann nicht jeder seine Zugangsdaten in deiner App eingeben.
Ich hätte meine Zugansdaten verwendet. Eigenst dafür würde ich einen eMail-Account anlegen.
Eine Möglichkeit wäre die Info an deinen Server zu übermitteln. Und dieser sendet dann die Mail.
Ich glaube ich verstehe. Ich versuche es mit einem PHP Script. Auf die Idee bin ich nicht noch nicht gekommen. Danke :)
http://aktuell.de.selfhtml.org/artikel/php/form-mail/
 
Zuletzt bearbeitet:
enrem schrieb:
@rihntrha
Ich hätte meine Zugansdaten verwendet. Eigenst dafür würde ich einen eMail-Account anlegen.

Halte ich generell für ne schlechte Idee die Zugangsdaten für einen E-Mail Account mit der App auszuliefern.
Theoretisch könnte dann jeder wahlfrei Mails (SPAM, Belästigung, illegale Inhalte) drüber (über deinen Account) versenden.
Und es könnte auch jeder das Passwort ändern und somit die Funktion für alle Nutzer lahmlegen.


Übermittelst du nur die notwendigen Informationen und die Wunschsprache an den Server, dann kann der die Mails generieren (Stichwort: Template) und versenden. Und es ist sichergestellt das nur diese Mails versendet werden.

cu
 
Ich hatte meine Zugangsdaten natürlich vorher verschlüsselt. In Klartext würde ich das nicht machen.

Vielen Dank für deine Hilfe, du hast mir sehr weitergeholfen.

Hier schon einmal meine Lösung vorab. Feinschliff kommt später:

Habe eine php-Datei (mail.php) wie folgt erzeugt.
Code:
<?php
$mailto = $HTTP_GET_VARS["mailto"];
$subject = $HTTP_GET_VARS["subject"];
$from = "noreply@domain.de";
$text = htmlspecialchars($HTTP_GET_VARS["text"]);

echo "Empfänger" . " : " . $HTTP_GET_VARS["mailto"] . "<br>";
echo "Betreff" . " : " . $HTTP_GET_VARS["subject"] . "<br>";
echo "Text" . " : " . $HTTP_GET_VARS["text"] . "<br>";

if(mail($mailto, $subject, $text, "From: $from <$from>Content-Type: text/html"))
{
echo "E-Mail erfolgreich gesendet";
return true;
}
else
{
echo "Fehler beim senden der E-Mail";
return false;
}
?>
Auf den Server geladen.

Anschließend mit folgender URL kann ich nun eine Mail versenden:

www.meinedomain.de/mail.php?mailto=empfaengermail.de&subject=betreff&text=text

bzw. in Android:

Code:
   try{

      HttpClient httpclient = new DefaultHttpClient();
      HttpPost httppost = new HttpPost("http://www.meinedomain.de/mail.php?mailto=empfaengermail.de&subject=betreff&text=text");
      HttpResponse response = httpclient.execute(httppost);

}catch(Exception e){
      Log.d("MyApp", "Error in http connection"+e.toString());
}
Mit Rückgabe bzw. Inhalt der ausgeführten PHP.

Code:
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost("http://www.meinedomain.de/mail.php?mailto=empfaengermail.de&subject=betreff&text=text");

try {
      HttpResponse response = client.execute(post);

        // Status der Rückgabe lesen
        StatusLine statusLine = response.getStatusLine();
        int statusCode = statusLine.getStatusCode();
        Log.d("MyApp", "StatusCode "+statusCode);

        if (statusCode == 200) {

          // Inhalt der php-Datei lesen
          InputStreamReader inputstream = new InputStreamReader(response.getEntity().getContent(), "UTF-8");
          BufferedReader reader = new BufferedReader(inputstream);

            StringBuilder builder = new StringBuilder();
            for (String line = null; (line = reader.readLine()) != null;) {
                 builder.append(line).append("n");
            }

            String s = builder.toString();
            Log.d("MyApp", s);

        }    else{

            Log.d("MyApp", "StatusCode sollte 200 liefern.");

        }

    } catch (ClientProtocolException e) {
            Log.d("MyApp", "Error in http connection"+e.toString());
    } catch (IOException e) {
            Log.d("MyApp", "Error in http connection"+e.toString());
    }
}
Gruß enrem
 
Zuletzt bearbeitet:

Ähnliche Themen

Laser5001
  • Laser5001
Antworten
2
Aufrufe
900
Laser5001
Laser5001
Jansenwilson
Antworten
1
Aufrufe
758
swa00
swa00
G
Antworten
5
Aufrufe
871
jogimuc
J
Zurück
Oben Unten