2012-06-09 4 views
1

Je construis une application Android très simple qui crée une chaîne basée sur un tas d'entrées de l'utilisateur. Je veux donner à l'utilisateur la possibilité d'envoyer lui-même la chaîne depuis l'application.Emailing dans une application Android

Je viens d'un fond de php où cela est très simple: il y a une fonction qui prend la « à » adresse, corps, sujet etc et envoie facilement l'e-mail de php:

mail($to,$subject,$message,$headers) 

Cette est essentiellement ce que je voudrais reproduire dans l'environnement Android. J'ai eu un certain succès avec des choses comme le ci-dessous, mais cela ouvre seulement les utilisateurs email client

Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); 
String emailTo = userEmail; 
String emailSubject = "Subject Line"; 
String emailBody = userString; 
emailIntent.setType("text/html"); 
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL,emailTo); 
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT,emailSubject); 
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, Html.fromHtml(emailBody)); 
startActivity(Intent.createChooser(emailIntent, "Send mail...")); 

Enfin j'ai essayé d'appeler vers un script php pour faire l'envoi:

String phpSend = "http://www.MyPHPSendScript.com?emailbody=userString"; 
try { 
    URL url = new URL(phpSend); 
    url.openConnection().getContent(); 
    } catch (Exception e) { 
     out.println("Failed to send email"); 
    } 

Mais a) cela a échoué et b) il semble être un peu un hack ...

Quelqu'un at-il des idées/suggestions?

Merci, Le Grinch

+1

Je pense que Android vous suggérons d'utiliser la emailapplication comme intention de rendre l'utilisateur pouvoir contrôler mails qui sont envoyés afin basiquement que vous pouvez écrire le courrier pour lui, mais il doit appuyer sur le bouton d'envoi. –

Répondre

1

Je n'ai pas assez réputation de faire un commentaire plutôt qu'une réponse, mais suivant ce tutoriel devrait vous mettre sur la bonne voie, même si http://www.developerfusion.com/code/1975/sending-email-using-smtp-and-java/ en toute honnêteté je n'ai pas fait cela avant moi-même. Je sais par les docs android que Socket, DataInputStream, et DataOutputStream sont tous supportés, donc ne vois pas pourquoi cela ne fonctionnerait pas.

+0

Merci, quelques progrès en utilisant ceci: http://www.developerfusion.com/code/1975/sending-email-using-smtp-and-java/ mais, ayant fait la connexion, la réponse de l'hôte est "Nous n'autorise pas l'utilisation de ce système pour le transport de courriers électroniques non sollicités et/ou en masse. " Y at-il de toute façon je pourrais mettre en place un compte Gmail et se connecter à cela? –

+0

Configurer un compte Gmail devrait fonctionner correctement, il suffit de créer un compte, puis aller aux paramètres de messagerie, de transfert et l'onglet POP/IMAP, vérifiez que POP est activé. Ensuite, utilisez le serveur SMTP "smtp.gmail.com" et le port 465. Vous aurez besoin d'utiliser ssl, voir [link] (http://docs.oracle.com/javase/1.4.2/docs/api/javax/ net/ssl/SSLSocket.html). Aussi, le serveur SMTP de gmail nécessite une commande AUTH après HELO, les détails sont ici: [link] (https://developers.google.com/google-apps/gmail/oauth_protocol) – Michael

+0

Aussi si vous ne l'avez pas déjà lu, juste tombé cette question pertinente [http://stackoverflow.com/questions/4910412/looking-for-android-gmail-smtp-oauth-example](http://stackoverflow.com/questions/4910412/looking-for-android-gmail -smtp-oauth-exemple) – Michael

0

J'ai décidé d'utiliser la solution PHP mentionnée dans mon article original. Je crains de ne pas pouvoir faire fonctionner les classes d'email. Je n'étais pas au courant que vous devez explicitement attribuer la permission pour l'application pour accéder à Internet! J'ai ajouté le ci-dessous à mon fichier manifeste et le PHP a travaillé un régal.

Merci pour votre aide et conseils!
Le Grinch

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />