2016-04-09 2 views
1

С Google's official doc, вот как вы можете создавать сообщения электронной почты с их Java API:как вы получаете адрес электронной почты пользователя gmail с помощью gmail 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; 
    } 

Так что вам нужно from поле, что приводит к вопросам: как вы запрашиваете адрес электронной почты пользователя?

+0

Какой пользователь? Вытащить его из чего? –

+0

Пользователь, от имени которого приложение обрабатывает письма. – qed

+0

Из некоторой базы данных google, я полагаю? – qed

ответ

3

Вы можете использовать getProfile, чтобы получить адрес электронной почты пользователя:

Запрос

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

Response

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

В Java это может выглядеть следующим образом:

GetProfile profile = service.users().getProfile("me").execute(); 
System.out.println(profile.getEmailAddress()); 
Смежные вопросы