Senden von E-Mails ohne Benutzerinteraktion - Android Studio

Motivation: ich Schaffe eine Anmeldung Aktivität und muss ich senden Sie eine Automatische E-Mail unter dem Button Klicken. Ich habe die Anzahl der Blogs, stackoverflow Fragen und nicht in der Lage eine email zu senden, so-weit.

Arbeitsumfeld: Android Studio 1.2 Beta 3

Derzeit Frage :Senden von E-Mails in Android mit Hilfe von JavaMail-API ohne Verwendung der Standard - /built-in app

Nun, Hier ist, Was ich Getan habe :

Heruntergeladen, drei Jar-Dateien

  1. activation.jar
  2. additional.jar
  3. mail.jar

Dann kopierte ich die drei jar-Dateien in folgende Ordner:

G:\Android Projekte\E-Mail\app\libs\

Nach dem Kopieren der Dateien fand ich meine .jar-Dateien, indem Sie in "Projekt-Explorer" im Android Studio und dann ändern mein Baum-Ansicht von "Android" zu "Projekt"

Dann die Erweiterung der Baum-Projekt > app > libs >

Nachdem die Suche nach Dateien; auf jedem .jar-Datei habe ich: Rechte Maustaste -> Hinzufügen-Bibliothek

Einmal die graddle bauen fertig war, wurde mir dann kopiert den code von oben folgte Frage und führen in mein eigenes Projekt. Es kompiliert ohne Fehler.

Das Problem ist jetzt :

Wenn ich ein Programm ausführen, es zeigt eine toast-Nachricht "E-Mail wurde Erfolgreich Gesendet" aber ich habe nie eine Mail erhalten, Noch es gibt jede gesendete mails in meinem account.

Ist hier mein code für alle Klassen und .xml-Dateien

MainActivity.java

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Button send = (Button)findViewById(R.id.send_email);
    send.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            //TODO Auto-generated method stub

            try {
                GMailSender sender = new     GMailSender("[email protected]", "123abc-123abc");
                sender.sendMail("ARS",
                        "This is Body HEELO WORLD",
                        "[email protected]",
                        "[email protected]");
                Toast.makeText(MainActivity.this, "Email was sent successfully.", Toast.LENGTH_LONG).show();
            } catch (Exception e) {
                Log.e("SendMail", e.getMessage(), e);
                Toast.makeText(MainActivity.this, "There was a problem   sending the email.", Toast.LENGTH_LONG).show();
            }

        }
    });

}
}

GMailSender.java

package com.example.hassnainmunir.email;

import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.mail.Message;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.security.Security;
import java.util.Properties;

class GMailSender extends javax.mail.Authenticator {
private String mailhost = "smtp.gmail.com";
private String user;
private String password;
private Session session;

static {
    Security.addProvider(new JSSEProvider());
}

public GMailSender(String user, String password) {
    this.user = user;
    this.password = password;

    Properties props = new Properties();
    props.setProperty("mail.transport.protocol", "smtp");
    props.setProperty("mail.host", mailhost);
    props.put("mail.smtp.auth", "true");
    props.put("mail.smtp.port", "465");
    props.put("mail.smtp.socketFactory.port", "465");
    props.put("mail.smtp.socketFactory.class",
            "javax.net.ssl.SSLSocketFactory");
    props.put("mail.smtp.socketFactory.fallback", "false");
    props.setProperty("mail.smtp.quitwait", "false");

    session = Session.getDefaultInstance(props, this);
}

protected PasswordAuthentication getPasswordAuthentication() {
    return new PasswordAuthentication(user, password);
}

public synchronized void sendMail(String subject, String body, String sender, String recipients) throws Exception {
    try{
        MimeMessage message = new MimeMessage(session);
        DataHandler handler = new DataHandler(new ByteArrayDataSource(body.getBytes(), "text/plain"));
        message.setSender(new InternetAddress(sender));
        message.setSubject(subject);
        message.setDataHandler(handler);
        if (recipients.indexOf(',') > 0)
            message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipients));
        else
            message.setRecipient(Message.RecipientType.TO, new InternetAddress(recipients));
        Transport.send(message);
    }catch(Exception e){
            e.printStackTrace();
    }
}

public class ByteArrayDataSource implements DataSource {
    private byte[] data;
    private String type;

    public ByteArrayDataSource(byte[] data, String type) {
        super();
        this.data = data;
        this.type = type;
    }

    public ByteArrayDataSource(byte[] data) {
        super();
        this.data = data;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getContentType() {
        if (type == null)
            return "application/octet-stream";
        else
            return type;
    }

    public InputStream getInputStream() throws IOException {
        return new ByteArrayInputStream(data);
    }

    public String getName() {
        return "ByteArrayDataSource";
    }

    public OutputStream getOutputStream() throws IOException {
        throw new IOException("Not Supported");
    }
}
}

JSSEProvider.java

package com.example.hassnainmunir.email;

import java.security.AccessController;
import java.security.Provider;

public final class JSSEProvider extends Provider {

public JSSEProvider() {
    super("HarmonyJSSE", 1.0, "Harmony JSSE Provider");
    AccessController.doPrivileged(new java.security.PrivilegedAction<Void>() {
        public Void run() {
            put("SSLContext.TLS",
                    "org.apache.harmony.xnet.provider.jsse.SSLContextImpl");
            put("Alg.Alias.SSLContext.TLSv1", "TLS");
            put("KeyManagerFactory.X509",
                    "org.apache.harmony.xnet.provider.jsse.KeyManagerFactoryImpl");
            put("TrustManagerFactory.X509",
                    "org.apache.harmony.xnet.provider.jsse.TrustManagerFactoryImpl");
            return null;
        }
    });
}
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Button android:id="@+id/send_email"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/Send_Email" />
</LinearLayout>

AndroidMenifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.hassnainmunir.email" >
<uses-permission android:name="android.permission.INTERNET"/>

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >

    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>
</manifest>

Strings.xml

<resources>
<string name="app_name">Email</string>

<string name="hello_world">Hello world!</string>
<string name="action_settings">Settings</string>
<string name="Send_Email">Send Email</string>
</resources>

bauen.gradle

apply plugin: 'com.android.application'

android {
compileSdkVersion 21
buildToolsVersion "22.0.0"

defaultConfig {
    applicationId "com.example.hassnainmunir.email"
    minSdkVersion 14
    targetSdkVersion 21
    versionCode 1
    versionName "1.0"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.0.0'
compile files('libs/activation.jar')
}

Können Sie mir bitte Helfen bei der Identifizierung, wo ich Falsch mache.

Weil Ihr seit drei Tagen bin ich stecken da. Und nicht eine email erhalten.

im nicht ganz sicher, was das problem ist, aber nur ein heads-up, sollten Sie nie Passwörter fest in Ihrer app. im nicht sicher, wenn das ist, was Sie tun würden, aber nur lassen Sie wissen, es ist sehr einfach für die Menschen zu finden das Zeug.
Ich habe eine Frage folgte link, der code ist identisch und funktioniert für viele Menschen, wie bereits erwähnt, dass es über. Das problem ist, kann mit dem hinzufügen der .jar-Dateien in android-studio. Wenn Sie denken, das problem ist dort. Können Sie bitte beheben Sie es. Aber im Falle, wenn das problem ist eine andere Sache. Bitte helfen Sie mir auch. Ich bin sterben, lösen dieses Problem 🙁
Ihre jar-Dateien sollten korrekt sein, denn sonst sollte es nicht kompiliert, wenn Sie fehlen. Veröffentlichen Sie Ihre app-Module zu bauen.gradle-Datei, wenn Sie wollen, dass überprüft obwohl.
Ich habe Hinzugefügt, build.gradle in meiner Frage, wie gut.. Freundlich zu überprüfen, ob meine .jar korrekt sind oder nicht
Ich habe auch versucht zu posten der screenshots, wie ich habe meine .jar-Dateien. Aber stackoverflow nicht erlaubt, um zu posten der Bilder unter 10 Punkte Ruf. 🙁

InformationsquelleAutor Hassnain | 2015-04-21

Schreibe einen Kommentar