2016-04-09 9 views
1

Von Google's official doc, ist hier, wie Sie E-Mails mit ihren Java-API erstellen:Wie holen Sie die E-Mail-Adresse des Google Mail-Benutzers mit Google Mail Java API?

public static MimeMessage createEmail(String to, String from, String subject, 
     String bodyText) throws MessagingException { 
    Properties props = new Properties(); 
    Session session = Session.getDefaultInstance(props, null); 

    MimeMessage email = new MimeMessage(session); 
    InternetAddress tAddress = new InternetAddress(to); 
    InternetAddress fAddress = new InternetAddress(from); 

    email.setFrom(new InternetAddress(from)); 
    email.addRecipient(javax.mail.Message.RecipientType.TO, 
         new InternetAddress(to)); 
    email.setSubject(subject); 
    email.setText(bodyText); 
    return email; 
    } 

/** 
    * Create a Message from an email 
    * 
    * @param email Email to be set to raw of message 
    * @return Message containing base64url encoded email. 
    * @throws IOException 
    * @throws MessagingException 
    */ 
    public static Message createMessageWithEmail(MimeMessage email) 
     throws MessagingException, IOException { 
    ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 
    email.writeTo(bytes); 
    String encodedEmail = Base64.encodeBase64URLSafeString(bytes.toByteArray()); 
    Message message = new Message(); 
    message.setRaw(encodedEmail); 
    return message; 
    } 

So benötigen Sie ein from Feld, das auf die Fragen führt: Wie holen Sie die E-Mail-Adresse des Benutzers?

+0

Welcher Benutzer? Holen Sie es von was? –

+0

Der Benutzer, in dessen Namen die App die E-Mails verarbeitet. – qed

+0

Aus einer Google-Datenbank, nehme ich an? – qed

Antwort

3

Sie können getProfile verwenden, um die E-Mail-Adresse des Benutzers zu erhalten:

Anfrage

GET https://www.googleapis.com/gmail/v1/users/me/profile?fields=emailAddress&access_token={ACCESS_TOKEN} 

Antwort

{ 
"emailAddress": "[email protected]" 
} 

In Java dies aussehen könnte:

GetProfile profile = service.users().getProfile("me").execute(); 
System.out.println(profile.getEmailAddress()); 
Verwandte Themen