Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>Hi Friend finally i am able to send Message using OAUTH , Posting my OAuth2Authenticator source,</p> <pre><code>/* Copyright 2012 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.example; import com.sun.mail.imap.IMAPStore; import com.sun.mail.imap.IMAPSSLStore; import com.sun.mail.smtp.SMTPTransport; import java.security.Provider; import java.security.Security; import java.util.Properties; import java.util.UUID; import java.util.logging.Logger; import javax.mail.Address; import javax.mail.Message; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.URLName; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; /** * Performs OAuth2 authentication. * * &lt;p&gt;Before using this class, you must call {@code initialize} to install the * OAuth2 SASL provider. */ public class OAuth2Authenticator { private static final Logger logger = Logger.getLogger(OAuth2Authenticator.class.getName()); public static final class OAuth2Provider extends Provider { private static final long serialVersionUID = 1L; public OAuth2Provider() { super("Google OAuth2 Provider", 1.0, "Provides the XOAUTH2 SASL Mechanism"); put("SaslClientFactory.XOAUTH2", "com.google.code.samples.oauth2.OAuth2SaslClientFactory"); } } /** * Installs the OAuth2 SASL provider. This must be called exactly once before * calling other methods on this class. */ public static void initialize() { Security.addProvider(new OAuth2Provider()); } /** * Connects and authenticates to an IMAP server with OAuth2. You must have * called {@code initialize}. * * @param host Hostname of the imap server, for example {@code * imap.googlemail.com}. * @param port Port of the imap server, for example 993. * @param userEmail Email address of the user to authenticate, for example * {@code oauth@gmail.com}. * @param oauthToken The user's OAuth token. * @param debug Whether to enable debug logging on the IMAP connection. * * @return An authenticated IMAPStore that can be used for IMAP operations. */ public static IMAPStore connectToImap(String host, int port, String userEmail, String oauthToken, boolean debug) throws Exception { Properties props = new Properties(); props.put("mail.imaps.sasl.enable", "true"); props.put("mail.imaps.sasl.mechanisms", "XOAUTH2"); props.put(OAuth2SaslClientFactory.OAUTH_TOKEN_PROP, oauthToken); Session session = Session.getInstance(props); session.setDebug(debug); final URLName unusedUrlName = null; IMAPSSLStore store = new IMAPSSLStore(session, unusedUrlName); final String emptyPassword = "&lt;your_gmail_password&gt;"; store.connect(host, port, userEmail, emptyPassword); return store; } /** * Connects and authenticates to an SMTP server with OAuth2. You must have * called {@code initialize}. * * @param host Hostname of the smtp server, for example {@code * smtp.googlemail.com}. * @param port Port of the smtp server, for example 587. * @param userEmail Email address of the user to authenticate, for example * {@code oauth@gmail.com}. * @param oauthToken The user's OAuth token. * @param debug Whether to enable debug logging on the connection. * * @return An authenticated SMTPTransport that can be used for SMTP * operations. */ public static SMTPTransport connectToSmtp(String host, int port, String userEmail, String oauthToken, boolean debug) throws Exception { Properties props = new Properties(); props.put("mail.smtp.starttls.enable", "true"); props.put("mail.smtp.starttls.required", "true"); props.put("mail.smtp.sasl.enable", "true"); props.put("mail.smtp.sasl.mechanisms", "XOAUTH2"); props.put("mail.smtp.auth","true"); props.put(OAuth2SaslClientFactory.OAUTH_TOKEN_PROP, oauthToken); Session session = Session.getInstance(props); /*, new javax.mail.Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication("prateek.engineer@gmail.com", emptyPassword); } });*/ session.setDebug(debug); final URLName unusedUrlName = null; SMTPTransport transport = new SMTPTransport(session, unusedUrlName); // If the password is non-null, SMTP tries to do AUTH LOGIN. final String emptyPassword = "&lt;your_gmail_password&gt;"; transport.connect(host, port, userEmail, emptyPassword); Message message = new MimeMessage(session); message.setFrom(new InternetAddress("&lt;your_gmail_id&gt;")); message.setRecipients(Message.RecipientType.TO,InternetAddress.parse("&lt;recepient_emailid&gt;")); message.setSubject("Test Message"); message.setText("First Message using OAuth Protocol"); /*SMTPTransport.send(message);*/ Address[] add=new InternetAddress[1]; add[0]= new InternetAddress("&lt;recepient_emailid&gt;"); transport.sendMessage(message, add); return transport; } /** * Authenticates to IMAP with parameters passed in on the commandline. */ public static void main(String args[]) throws Exception { /*if (args.length != 2) { System.err.println( "Usage: OAuth2Authenticator &lt;email&gt; &lt;oauthToken&gt;"); return; }*/ String email = "&lt;your_gmail_id&gt;"; String oauthToken = ""; initialize(); IMAPStore imapStore = connectToImap("imap.gmail.com", 993, email, oauthToken, true); System.out.println("Successfully authenticated to IMAP.\n"); SMTPTransport smtpTransport = connectToSmtp("smtp.gmail.com", 587, email, oauthToken, true); System.out.println("Successfully authenticated to SMTP."); } } </code></pre> <p>add your password and the line u missed because of which u r getting authentication required exception is :::</p> <pre><code>props.put("mail.smtp.auth","true"); </code></pre> <p>in your <strong>connectToSmtp(.... , ...);</strong> method</p> <p>AND RESPONSE YOU GET IS ::</p> <pre><code>From: &lt;your_email_id&gt; To: &lt;recepient_eemail_id&gt; Subject: Test Message MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit First Message using OAuth Protocol //its message u have . 250 2.0.0 OK 1360312537 a1sm52630615pav.2 - gsmtp Successfully authenticated to SMTP. </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload