3 Stimmen

Wie man die E-Mail-Verifizierungsfunktionalität in Android implementiert

Ich entwickle eine Android-Anwendung.. in dieser Anwendung gibt es ein Registrierungsmodul. dafür muss ich die E-Mail-Verifizierungsfunktionalität implementieren.

Indem ich den folgenden Code verwende, kann ich E-Mails an eine bestimmte E-Mail-Adresse senden..

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

            try {   
                GMailSender sender = new GMailSender("username@gmail.com", "*******");
                sender.sendMail("Dies ist der Betreff",   
                        "Dies ist der Inhalt",   
                        "rose.jasmine87@gmail.com",
                        "naresh_bammidi@yahoo.co.in"
                        );   
            } catch (Exception e) {   
                Log.e("SendMail", e.getMessage(), e);   
            } 

        }

Aber wie kann man den Status überprüfen, ob die E-Mail gesendet wurde oder nicht?

2voto

Mark Allison Punkte 21800

Ich gehe davon aus, dass Sie GMailSender verwenden, wie in diesem Beitrag definiert.

Intern ruft GMailSender Transport.send(message) auf, was eine Ausnahme auslösen wird, wenn der Sendevorgang an den GMail-Server nicht erfolgreich ist. Dies wird jedoch abgefangen und unterdrückt, sodass Ihr Aufrufcode nicht wissen kann, ob der Versand erfolgreich war. Zunächst müssen Sie den GMailSender-Code ändern, um im Falle eines Versandfehlers etwas Sinnvolleres zu tun.

Was Sie sich bewusst sein müssen, ist, dass E-Mails nicht direkt vom Absender über Ihre App oder sogar den GMail-Server an den endgültigen Empfänger zugestellt werden. Nur weil es Ihnen gelungen ist, die E-Mail korrekt an den GMail-Server zu senden, bedeutet dies nicht, dass sie tatsächlich beim beabsichtigten Empfänger ankommt, da sie an einem beliebigen Mail-Relay auf ihrem Weg fehlschlagen könnte. Um ordnungsgemäß zu erkennen und zu melden, ob die E-Mail tatsächlich ihr Ziel erreicht, benötigen Sie etwas Komplexeres als das.

RFC 1891 ist eine Erweiterung des SMTP-Protokolls, die die Zustellungsstatusbenachrichtigungen unterstützt, aber Sie müssen möglicherweise Ihre App neu gestalten, um dies nutzen zu können. Grundsätzlich funktioniert es, indem Sie Flags in Ihrer ausgehenden Nachricht setzen, um Mail-Relays anzuweisen, Ihnen den Nachrichtenstatus mitzuteilen. Damit Sie diese Benachrichtigung erhalten, müssen Sie im Wesentlichen Ihren eigenen Mailserver haben, der E-Mails empfangen kann. Sie erhalten eine E-Mail, die beispielsweise einen Zustellungsbericht enthält, sobald ein Mail-Relay sie erfolgreich an das Postfach des Empfängers zugestellt hat.

Um dies ordnungsgemäß zu implementieren, benötigen Sie ein E-Mail-Konto für Ihre App, das Zustellungsstatusbenachrichtigungen erhält. Sie müssen ein SMTPMessage-Objekt erstellen, einen Header hinzufügen, der einen "Return-Receipt-To"-Header enthält, dessen Wert auf dieses E-Mail-Konto gesetzt ist. Sie müssen auch setNotifyOptions() für Ihre Nachricht festlegen und diese dann an den GMail-Server senden. Ihre App muss ihr Konto regelmäßig auf Zustellungsbenachrichtigungen überprüfen.

Dies ist ein rein auf E-Mail basierender Ansatz. Ohne Kenntnis Ihrer genauen Anforderungen gibt es alternative Mechanismen, die Sie verwenden können. Wenn Ihre Anforderung beispielsweise darauf beschränkt ist, die Existenz einer E-Mail-Adresse zu überprüfen, können Sie eine E-Mail senden, die eine URI an einen Server enthält, den Sie kontrollieren. Die URI enthält Parameter, die sowohl den Benutzer als auch die Installation Ihrer App eindeutig identifizieren. Der Benutzer muss auf den Link klicken, und Ihr Serverkomponente überprüft das E-Mail-Konto. Anschließend kann es beispielsweise C2DM verwenden, um Ihre App darüber zu informieren, dass das E-Mail-Konto echt und gültig ist.

Entschuldigen Sie, wenn diese Antwort ein wenig lang ist und Ihnen keine einfache Lösung bietet, aber wenn Sie ordnungsgemäß feststellen möchten, ob eine E-Mail ihren Empfänger erreicht, gibt es leider keine einfache Antwort, fürchte ich.

0voto

RobinHood Punkte 10771

Überprüfen Sie die folgende Methode, die die E-Mail-Adresse auf der Client-Seite validiert. Geben Sie einfach die E-Mail-Zeichenfolge ein. Sie gibt einen booleschen Wert zurück, ob die eingegebene E-Mail korrekt ist oder nicht.

public boolean isEmail(String email)
{
    boolean matchFound1;
    boolean returnResult=true;
    email=email.trim();
    if(email.equalsIgnoreCase(""))
        returnResult=false;
    else if(!Character.isLetter(email.charAt(0)))
        returnResult=false;
    else 
    {
        Pattern p1 = Pattern.compile("^\\.|^\\@ |^_");
        Matcher m1 = p1.matcher(email.toString());
        matchFound1=m1.matches();

        Pattern p = Pattern.compile("^[a-zA-z0-9._-]+[@]{1}+[a-zA-Z0-9]+[.]{1}+[a-zA-Z]{2,4}$");
        // Überprüfen, ob die Zeichenfolge mit dem Muster übereinstimmt
        Matcher m = p.matcher(email.toString());

        // Überprüfen, ob Übereinstimmung gefunden wurde
        boolean matchFound = m.matches();

        StringTokenizer st = new StringTokenizer(email, ".");
        String lastToken = null;
        while (st.hasMoreTokens()) 
        {
            lastToken = st.nextToken();
        }
        if (matchFound && lastToken.length() >= 2
        && email.length() - 1 != lastToken.length() && matchFound1==false) 
        {

           returnResult= true;
        }
        else returnResult= false;
    }
    return returnResult;
 }

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X