精华内容
下载资源
问答
  • gmail登录

    2020-05-02 15:27:18
    https://jingyan.baidu.com/article/9c69d48fe4b7cc13c9024ea1.html 登录qq邮箱后,‘+’,设置,添加账户,其他邮箱,输入相关信息,验证后,可以把gmail和qq邮箱关联,那么可以收取到验证码等邮箱信息了 ...

    https://jingyan.baidu.com/article/9c69d48fe4b7cc13c9024ea1.html

    登录qq邮箱后,‘+’,设置,添加账户,其他邮箱,输入相关信息,验证后,可以把gmail和qq邮箱关联,那么可以收取到验证码等邮箱信息了

    展开全文
  • 登录页面java源码Google的Gmail登录页面自动化 ================= 使用带有Selenium WebDriver的PageObject模式在Java中实现Google的Gmail登录页面测试用例自动化。 任务: 开放网站- 点击Gmail链接 在登录页面上,...
  • Gmail自动化 包含 Gmail 登录场景的脚本
  • 这是我的文章,内容是Google帐户与您的应用程序集成,使用gmail登录,使用Google帐户注册。 以下是一些重要的步骤- 第1步-创建一个新项目,例如GoogleProfileDemo。 第2步-添加“ Google play服务” libray项目...
    gmail邮箱注册

    gmail邮箱注册

    你好朋友,

    这是我的文章,内容是Google帐户与您的应用程序集成,使用gmail登录,使用Google帐户注册。 以下是一些重要的步骤-

    • 第1步-创建一个新项目,例如GoogleProfileDemo。
    • 第2步-添加“ Google play服务” libray项目。
    • 步骤3 –在manifest.xml-中添加所需的权限
    <uses-permission android:name="android.permission.INTERNET" />
    
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    
    <uses-permission android:name="android.permission.NETWORK" />
    
    <uses-permission android:name="android.permission.USE_CREDENTIALS" />

    1)SplashActivity.java

    package com.manish.google.profile;
    
    import android.accounts.Account;
    import android.accounts.AccountManager;
    import android.app.Activity;
    import android.content.Context;
    import android.net.ConnectivityManager;
    import android.net.NetworkInfo;
    import android.os.Bundle;
    import android.util.Log;
    import android.widget.Toast;
    
    import com.google.android.gms.auth.GoogleAuthUtil;
    
    /**
     * @author manish
     * 
     */
    public class SplashActivity extends Activity {
    	Context mContext = SplashActivity.this;
    	AccountManager mAccountManager;
    	String token;
    	int serverCode;
    	private static final String SCOPE = "oauth2:https://www.googleapis.com/auth/userinfo.profile";
    
    	/** Called when the activity is first created. */
    	@Override
    	public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		// Splash screen view
    		setContentView(R.layout.activity_splash);
    			syncGoogleAccount();
    
    	}
    
    	private String[] getAccountNames() {
    		mAccountManager = AccountManager.get(this);
    		Account[] accounts = mAccountManager
    				.getAccountsByType(GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE);
    		String[] names = new String[accounts.length];
    		for (int i = 0; i < names.length; i++) {
    			names[i] = accounts[i].name;
    		}
    		return names;
    	}
    
    	private AbstractGetNameTask getTask(SplashActivity activity, String email,
    			String scope) {
    		return new GetNameInForeground(activity, email, scope);
    
    	}
    
    	public void syncGoogleAccount() {
    		if (isNetworkAvailable() == true) {
    			String[] accountarrs = getAccountNames();
    			if (accountarrs.length > 0) {
    				//you can set here account for login
    				getTask(SplashActivity.this, accountarrs[0], SCOPE).execute();
    			} else {
    				Toast.makeText(SplashActivity.this, "No Google Account Sync!",
    						Toast.LENGTH_SHORT).show();
    			}
    		} else {
    			Toast.makeText(SplashActivity.this, "No Network Service!",
    					Toast.LENGTH_SHORT).show();
    		}
    	}
    	public boolean isNetworkAvailable() {
    
    		ConnectivityManager cm = (ConnectivityManager) mContext
    				.getSystemService(Context.CONNECTIVITY_SERVICE);
    		NetworkInfo networkInfo = cm.getActiveNetworkInfo();
    		if (networkInfo != null && networkInfo.isConnected()) {
    			Log.e("Network Testing", "***Available***");
    			return true;
    		}
    		Log.e("Network Testing", "***Not Available***");
    		return false;
    	}
    }

    2)HomeActivity.java

    package com.manish.google.profile;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.net.URLConnection;
    
    import org.json.JSONException;
    import org.json.JSONObject;
    
    import android.app.Activity;
    import android.content.Intent;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.os.AsyncTask;
    import android.os.Bundle;
    import android.widget.ImageView;
    import android.widget.TextView;
    
    /**
     * @author manish
     * 
     */
    public class HomeActivity extends Activity {
    	ImageView imageProfile;
    	TextView textViewName, textViewEmail, textViewGender, textViewBirthday;
    	String textName, textEmail, textGender, textBirthday, userImageUrl;
    
    	@Override
    	public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_home);
    		imageProfile = (ImageView) findViewById(R.id.imageView1);
    		textViewName = (TextView) findViewById(R.id.textViewNameValue);
    		textViewEmail = (TextView) findViewById(R.id.textViewEmailValue);
    		textViewGender = (TextView) findViewById(R.id.textViewGenderValue);
    		textViewBirthday = (TextView) findViewById(R.id.textViewBirthdayValue);
    
    		/**
    		 * get user email using intent
    		 */
    
    		Intent intent = getIntent();
    		textEmail = intent.getStringExtra("email_id");
    		System.out.println(textEmail);
    		textViewEmail.setText(textEmail);
    
    		/**
    		 * get user data from google account
    		 */
    
    		try {
    			System.out.println("On Home Page***"
    					+ AbstractGetNameTask.GOOGLE_USER_DATA);
    			JSONObject profileData = new JSONObject(
    					AbstractGetNameTask.GOOGLE_USER_DATA);
    
    			if (profileData.has("picture")) {
    				userImageUrl = profileData.getString("picture");
    				new GetImageFromUrl().execute(userImageUrl);
    			}
    			if (profileData.has("name")) {
    				textName = profileData.getString("name");
    				textViewName.setText(textName);
    			}
    			if (profileData.has("gender")) {
    				textGender = profileData.getString("gender");
    				textViewGender.setText(textGender);
    			}
    			if (profileData.has("birthday")) {
    				textBirthday = profileData.getString("birthday");
    				textViewBirthday.setText(textBirthday);
    			}
    
    		} catch (JSONException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    
    	public class GetImageFromUrl extends AsyncTask<String, Void, Bitmap> {
    		@Override
    		protected Bitmap doInBackground(String... urls) {
    			Bitmap map = null;
    			for (String url : urls) {
    				map = downloadImage(url);
    			}
    			return map;
    		}
    
    		// Sets the Bitmap returned by doInBackground
    		@Override
    		protected void onPostExecute(Bitmap result) {
    			imageProfile.setImageBitmap(result);
    		}
    
    		// Creates Bitmap from InputStream and returns it
    		private Bitmap downloadImage(String url) {
    			Bitmap bitmap = null;
    			InputStream stream = null;
    			BitmapFactory.Options bmOptions = new BitmapFactory.Options();
    			bmOptions.inSampleSize = 1;
    
    			try {
    				stream = getHttpConnection(url);
    				bitmap = BitmapFactory.decodeStream(stream, null, bmOptions);
    				stream.close();
    			} catch (IOException e1) {
    				e1.printStackTrace();
    			}
    			return bitmap;
    		}
    
    		// Makes HttpURLConnection and returns InputStream
    		private InputStream getHttpConnection(String urlString)
    				throws IOException {
    			InputStream stream = null;
    			URL url = new URL(urlString);
    			URLConnection connection = url.openConnection();
    
    			try {
    				HttpURLConnection httpConnection = (HttpURLConnection) connection;
    				httpConnection.setRequestMethod("GET");
    				httpConnection.connect();
    
    				if (httpConnection.getResponseCode() == HttpURLConnection.HTTP_OK) {
    					stream = httpConnection.getInputStream();
    				}
    			} catch (Exception ex) {
    				ex.printStackTrace();
    			}
    			return stream;
    		}
    	}
    }

    3)AbstractGetNameTask.java

    /**
     * Copyright 2012 The Android Open Source Project
     *
     * 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.manish.google.profile;
    
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.net.HttpURLConnection;
    import java.net.URL;
    
    import org.json.JSONException;
    
    import com.google.android.gms.auth.GoogleAuthUtil;
    
    import android.content.Intent;
    import android.os.AsyncTask;
    import android.util.Log;
    import android.widget.Toast;
    
    /**
     * Display personalized greeting. This class contains boilerplate code to
     * consume the token but isn't integral to getting the tokens.
     */
    public abstract class AbstractGetNameTask extends AsyncTask<Void, Void, Void> {
    	private static final String TAG = "TokenInfoTask";
    	protected SplashActivity mActivity;
       public static String GOOGLE_USER_DATA="No_data";
    	protected String mScope;
    	protected String mEmail;
    	protected int mRequestCode;
    
    	AbstractGetNameTask(SplashActivity activity, String email, String scope) {
    		this.mActivity = activity;
    		this.mScope = scope;
    		this.mEmail = email;
    	}
    
    	@Override
    	protected Void doInBackground(Void... params) {
    		try {
    			fetchNameFromProfileServer();
    
    		} catch (IOException ex) {
    			onError("Following Error occured, please try again. "
    					+ ex.getMessage(), ex);
    		} catch (JSONException e) {
    			onError("Bad response: " + e.getMessage(), e);
    		}
    		return null;
    	}
    
    	protected void onError(String msg, Exception e) {
    		if (e != null) {
    			Log.e(TAG, "Exception: ", e);
    		}
    	}
    
    	/**
    	 * Get a authentication token if one is not available. If the error is not
    	 * recoverable then it displays the error message on parent activity.
    	 */
    	protected abstract String fetchToken() throws IOException;
    
    	/**
    	 * Contacts the user info server to get the profile of the user and extracts
    	 * the first name of the user from the profile. In order to authenticate
    	 * with the user info server the method first fetches an access token from
    	 * Google Play services.
    	 * @return 
    	 * @return 
    	 * 
    	 * @throws IOException
    	 *             if communication with user info server failed.
    	 * @throws JSONException
    	 *             if the response from the server could not be parsed.
    	 */
    	private void fetchNameFromProfileServer() throws IOException, JSONException {
    		String token = fetchToken();
    		URL url = new URL("https://www.googleapis.com/oauth2/v1/userinfo?access_token="+ token);
    		HttpURLConnection con = (HttpURLConnection) url.openConnection();
    		int sc = con.getResponseCode();
    		if (sc == 200) {
    			InputStream is = con.getInputStream();
    			GOOGLE_USER_DATA = readResponse(is);
    			is.close();
    
    			Intent intent=new Intent(mActivity,HomeActivity.class);
    			intent.putExtra("email_id", mEmail);
    			mActivity.startActivity(intent);
    			mActivity.finish();
    			return;
    		} else if (sc == 401) {
    			GoogleAuthUtil.invalidateToken(mActivity, token);
    			onError("Server auth error, please try again.", null);
    			//Toast.makeText(mActivity, "Please try again", Toast.LENGTH_SHORT).show();
    			//mActivity.finish();
    			return;
    		} else {
    			onError("Server returned the following error code: " + sc, null);
    			return;
    		}
    	}
    
    	/**
    	 * Reads the response from the input stream and returns it as a string.
    	 */
    	private static String readResponse(InputStream is) throws IOException {
    		ByteArrayOutputStream bos = new ByteArrayOutputStream();
    		byte[] data = new byte[2048];
    		int len = 0;
    		while ((len = is.read(data, 0, data.length)) >= 0) {
    			bos.write(data, 0, len);
    		}
    		return new String(bos.toByteArray(), "UTF-8");
    	}
    
    }

    4)GetNameInForeground.java

    /**
     * Copyright 2012 The Android Open Source Project
     *
     * 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.manish.google.profile;
    
    import java.io.IOException;
    
    import com.google.android.gms.auth.GoogleAuthException;
    import com.google.android.gms.auth.GoogleAuthUtil;
    import com.google.android.gms.auth.GooglePlayServicesAvailabilityException;
    import com.google.android.gms.auth.UserRecoverableAuthException;
    
    /**
     * This example shows how to fetch tokens if you are creating a foreground task/activity and handle
     * auth exceptions.
     */
    public class GetNameInForeground extends AbstractGetNameTask {
    
      public GetNameInForeground(SplashActivity activity, String email, String scope) {
          super(activity, email, scope);
      }
    
      /**
       * Get a authentication token if one is not available. If the error is not recoverable then
       * it displays the error message on parent activity right away.
       */
      @Override
      protected String fetchToken() throws IOException {
          try {
              return GoogleAuthUtil.getToken(mActivity, mEmail, mScope);
          } catch (GooglePlayServicesAvailabilityException playEx) {
              // GooglePlayServices.apk is either old, disabled, or not present.
          } catch (UserRecoverableAuthException userRecoverableException) {
              // Unable to authenticate, but the user can fix this.
              // Forward the user to the appropriate activity.
              mActivity.startActivityForResult(userRecoverableException.getIntent(), mRequestCode);
          } catch (GoogleAuthException fatalException) {
              onError("Unrecoverable error " + fatalException.getMessage(), fatalException);
          }
          return null;
      }
    }

    5)activity_splash.xml

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".SplashActivity" >
    
        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:text="Please wait..."
            android:textSize="25sp" />
    
        <ProgressBar
            android:id="@+id/progressBar1"
            style="?android:attr/progressBarStyleLarge"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/textView1"
            android:layout_centerHorizontal="true" />
    
        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_marginBottom="10dp"
            android:text="By:Manish Srivastava" />
    
    </RelativeLayout>

    6)activity_home.xml

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="7dp" >
    
        <TextView
            android:id="@+id/textViewTitle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:text="Home Page"
            android:textSize="24sp" />
    
        <TextView
            android:id="@+id/textViewNameLabel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_below="@+id/textViewTitle"
            android:layout_marginTop="15dp"
            android:text="Name:"
            android:textSize="18sp" />
    
        <TextView
            android:id="@+id/textViewNameValue"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/textViewTitle"
            android:layout_marginLeft="10dp"
            android:layout_marginTop="15dp"
            android:layout_toRightOf="@id/textViewNameLabel"
            android:text="Name:"
            android:textSize="18sp" />
    
          <TextView
            android:id="@+id/textViewEmailLabel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_below="@id/textViewNameLabel"
            android:layout_marginTop="15dp"
            android:text="Email:"
            android:textSize="18sp" />
    
        <TextView
            android:id="@+id/textViewEmailValue"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/textViewNameValue"
            android:layout_marginLeft="10dp"
            android:layout_marginTop="15dp"
            android:layout_toRightOf="@id/textViewEmailLabel"
            android:text="Email:"
            android:textSize="18sp" />
    
         <TextView
            android:id="@+id/textViewGenderLabel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_below="@id/textViewEmailLabel"
            android:layout_marginTop="15dp"
            android:text="Gender:"
            android:textSize="18sp" />
    
        <TextView
            android:id="@+id/textViewGenderValue"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBottom="@+id/textViewGenderLabel"
            android:layout_alignLeft="@+id/textViewNameValue"
            android:text="Gender:"
            android:textSize="18sp" />
    
         <TextView
            android:id="@+id/textViewBirthdayLabel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_below="@id/textViewGenderLabel"
            android:layout_marginTop="15dp"
            android:text="Birthday:"
            android:textSize="18sp" />
    
        <TextView
            android:id="@+id/textViewBirthdayValue"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBaseline="@+id/textViewBirthdayLabel"
            android:layout_alignBottom="@+id/textViewBirthdayLabel"
            android:layout_toRightOf="@+id/textViewBirthdayLabel"
            android:text="Birthday:"
            android:textSize="18sp" />
    
        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_toRightOf="@+id/textViewTitle"/>
    
    </RelativeLayout>

    7)AndroidManifest.xml

    <manifest android:versioncode="1" android:versionname="1.0" package="com.manish.google.profile" xmlns:android="http://schemas.android.com/apk/res/android">
    
        <uses-sdk android:minsdkversion="8" android:targetsdkversion="16">
    
        <uses-permission android:name="android.permission.INTERNET">
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE">
        <uses-permission android:name="android.permission.GET_ACCOUNTS">
        <uses-permission android:name="android.permission.NETWORK">
        <uses-permission android:name="android.permission.USE_CREDENTIALS">
    
        <application android:allowbackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme">
            <activity android:label="@string/app_name" android:name="com.manish.google.profile.SplashActivity">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN">
    
                    <category android:name="android.intent.category.LAUNCHER">
                </category></action></intent-filter>
            </activity>
            <activity android:name="com.manish.google.profile.HomeActivity">
        </activity></application>
    
    </uses-permission></uses-permission></uses-permission></uses-permission></uses-permission></uses-sdk></manifest>

    翻译自: https://www.javacodegeeks.com/2013/10/google-account-integration-in-android-login-with-gmail.html

    gmail邮箱注册

    展开全文
  • 下面是如何在Python中登录GMail:   import smtplib # The below code never changes, though obviously those variables need values. session = smtplib.SMTP('smtp.gmail.com', 587) session.ehlo() session....
  • 以下是您的问题的答案:当我们一起工作Selenium 3.4.3,geckodriver v0.17.0和Mozilla Firefox 53.0使用Python 3.6.1,我们可以使用定位器xpath或css_selector登录到我们各自的Gmail帐户通过Gmail's signin module ...

    以下是您的问题的答案:

    当我们一起工作Selenium 3.4.3,geckodriver v0.17.0和Mozilla Firefox 53.0使用Python 3.6.1,我们可以使用定位器xpath或css_selector登录到我们各自的Gmail帐户通过Gmail's signin module v2。

    使用XPATH:

    以下是使用xpath以下方式登录Gmail的示例代码:

    from selenium import webdriver

    from selenium.webdriver.firefox.firefox_binary import FirefoxBinary

    from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

    from selenium.webdriver.support import expected_conditions as EC

    from selenium.webdriver.common.by import By

    from selenium.webdriver.support.ui import WebDriverWait

    binary = FirefoxBinary('C:\\Program Files\\Mozilla Firefox\\firefox.exe')

    caps = DesiredCapabilities().FIREFOX

    caps["marionette"] = True

    driver = webdriver.Firefox(capabilities=caps, firefox_binary=binary, executable_path="C:\\Utility\\BrowserDrivers\\geckodriver.exe")

    driver.get("https://accounts.google.com/signin")

    email_phone = driver.find_element_by_xpath("//input[@id='identifierId']")

    email_phone.send_keys("your_emailid_phone")

    driver.find_element_by_id("identifierNext").click()

    password = WebDriverWait(driver, 5).until(

    EC.element_to_be_clickable((By.XPATH, "//input[@name='password']"))

    )

    password.send_keys("your_password")

    driver.find_element_by_id("passwordNext").click()

    使用CSS_SELECTOR:

    以下是使用css_selector以下方式登录Gmail的示例代码:

    from selenium import webdriver

    from selenium.webdriver.firefox.firefox_binary import FirefoxBinary

    from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

    from selenium.webdriver.support import expected_conditions as EC

    from selenium.webdriver.common.by import By

    from selenium.webdriver.support.ui import WebDriverWait

    binary = FirefoxBinary('C:\\Program Files\\Mozilla Firefox\\firefox.exe')

    caps = DesiredCapabilities().FIREFOX

    caps["marionette"] = True

    driver = webdriver.Firefox(capabilities=caps, firefox_binary=binary, executable_path="C:\\Utility\\BrowserDrivers\\geckodriver.exe")

    driver.get("https://accounts.google.com/signin")

    email_phone = driver.find_element_by_css_selector("#identifierId")

    email_phone.send_keys("your_emailid_phone")

    driver.find_element_by_css_selector(".ZFr60d.CeoRYc").click()

    password = WebDriverWait(driver, 5).until(

    EC.element_to_be_clickable((By.CSS_SELECTOR, "input[class='whsOnd zHQkBf'][type='password']"))

    )

    password.send_keys("your_password")

    driver.find_element_by_css_selector(".ZFr60d.CeoRYc").click()

    展开全文
  • gmail第三方登录Remember that “cool” free Gmail app you installed years ago and then forgot about? It probably still has access to your email, and actual humans might be sifting through them. 还记得...
    gmail第三方登录

    gmail第三方登录

    Remember that “cool” free Gmail app you installed years ago and then forgot about? It probably still has access to your email, and actual humans might be sifting through them.

    还记得您几年前安装的“酷”免费Gmail应用程序,然后又忘记了吗? 它可能仍然可以访问您的电子邮件,实际的人可能正在通过它们进行筛选。

    Douglas MacMillan, writing for The Wall Street Journal, re-iterated a problem we’ve been talking about for a while: free applications users give permissions to and then forget about. These apps have full access to your email, and they’re taking advantage.

    道格拉斯·麦克米伦(Douglas MacMillan) 在为《华尔街日报》撰稿时 ,再次重申了我们已经讨论了一段时间的问题:免费应用程序的用户会先授予权限,然后忘记。 这些应用拥有对您电子邮件的完全访问权限,并且正在利用它们。

    Here’s MacMillan:

    这是MacMillan:

    One of those companies is Return Path Inc., which collects data for marketers by scanning the inboxes of more than two million people who have signed up for one of the free apps in Return Pathʼs partner network using a Gmail, Microsoft Corp. or Yahoo email address. Computers normally do the scanning, analyzing about 100 million emails a day. At one point about two years ago, Return Path employees read about 8,000 unredacted emails to help train the companyʼs software, people familiar with the episode say.

    其中之一就是Return Path Inc.,该公司通过使用Gmail,Microsoft Corp.或Yahoo电子邮件扫描超过200万已在Return Path的合作伙伴网络中注册了免费应用程序之一的人的收件箱,为营销人员收集数据。地址。 计算机通常进行扫描,每天分析大约1亿封电子邮件。 知情人士说,大约在两年前的某个时候,Return Path的员工阅读了大约8,000封未编辑的电子邮件,以帮助培训该公司的软件。

    Creepy, right? And that’s just one example MacMillan gives.

    令人毛骨悚然,对吧? 这只是MacMillan给出的一个例子。

    Think carefully the next time a “free” application asks for access to your Gmail account, or any email account for that matter. And if you haven’t scrolled through Google’s list of Apps with access to your account lately, you should. Immediately.

    下次“免费”应用程序要求访问您的Gmail帐户或与此相关的任何电子邮件帐户时,请仔细考虑。 而且,如果您最近没有滚动浏览可访问您帐户的 Google Apps列表 ,则应该这样做。 立即。

    Seriously, do it now.

    认真地做吧

    翻译自: https://www.howtogeek.com/fyi/reminder-third-party-gmail-apps-have-full-access-to-your-email/

    gmail第三方登录

    展开全文
  • 例如无法登录,或一直停留在Loading页面。也许这就是Gmail发布了这么久还一直是beta版的原因吧。如果你一直都使用Gmail,发现也出现了此问题而又有重要的邮件要浏览。可以尝试一下以下的方式。 解决登陆问题的方法:...
  • 最近我发出去了很多gmail邀请,但是大家反映很不好用,但是我却爱不释手,原因是由于网络问题及webmail无法访问造成的。通过gmail notifier的小程序轻松访问邮箱,突然感觉到好像pop其实推出与否关系真的不是很大...
  • gmail 无法登录现象:  gmail 最近 一会能登录,一会不能登录,即使能打开也比较慢,     原因:  某党 将gmail的 https 443 端口 劫持了,15分钟能用,然后15分钟不能用,周而复始,     真相链接:  ...
  • Outlook,foxmail部分公用邮箱服务器及端口号邮箱Gmail 服务器 http://doc.xuehai.net 端口号 587(或465)Hotmail / Live http://doc.xuehai.net 25(或587)QQ http://doc.xuehai.net 25(或587)163 ...
  • 权限限制: Gmail访问权限未开启,imap/pop3未启用。 一、基础设置 1.1、服务器信息 Gmail服务器配置信息 服务商 邮箱 类型 服务器 加密 端口 备注 Google Gmail IMAP imap.gmail.com SSL 993 收信 ...
  • Foxmail登陆gmail设置

    千次阅读 2015-06-16 10:44:36
    foxmail设置gmail登陆
  • gmail邮箱登录官网方法gamil邮箱是一款非常好用的邮箱服务工具,在国内因为某些原因无法正常使用,这里小编带给大家带来一个迂回的方法,让大家能正常使用gmail邮箱。使用方法这里小编推荐使用yomail,使用该软件...
  • 由于gmail邮箱发送邮对安全性校验比较高,因此,首先设置 https://myaccount.google.com/lesssecureapps?pli=1,需要开启“允许不够安全的应用” 接下来就可以开始代码编写了。 pom.xml文件中引入架包: <...
  • 查看收件箱应该有no-repley这一帐户给你发过邮件(如果没有,你在移动设备上登录一下gmail),照着邮件里的说明去做,就是生成一个专门应用的密码,然后用此密码在android移动设备上登录gmail就可以了。我的是这么...
  • 1.开启Exchange服务 2.生成授权码(登录密码) 3.“服务器”填入ex.qq.com
  • Gmail 轻松登录

    2008-12-20 21:43:33
    Gmail 轻松登录Gmail 轻松GmailGmail 轻松登录登录登录Gmail 轻松登录
  • 如何用gmail绑定qq邮等

    千次阅读 2019-05-06 18:27:13
    还有一点问题的,那就是在登录qq邮箱的时候实际上不是登陆自己的qq邮箱的密码,而是qq邮箱的授权码,关于授权码,你在登录的时候qq邮箱就会给你发一封邮件,告诉你授权码的连接,所以要及时关注qq邮箱的消息。...
  • 登录Gmail并点击同意。 输入您要删除的关键字。 该脚本将显示一些与关键字匹配的邮件。 按Enter键将删除所有与关键字匹配的邮件。 在代理后面使用 如果Google在您所在的国家/地区被屏蔽,则可以使用此脚本的代理。...
  • 为您的GMail帐户配置应用程序专用密码(如果您未使用两步验证,只需跳过此步骤,并使用您用于登录GMail的相同密码) 为了能够使用GMail从任何应用程序(包括Node.js)发送电子邮件,您需要生成特定于应用程序的
  • 网上找了很多代码都不可以用,最后自己在找的代码上,抓取Gmail登录数据,最后成功实例了邮箱联系人的抓取
  • Gmail管理器社区 可从以下位置安装: : 此Firefox扩展是Erik Nedwidek的的一个分支,它本身是...从Firefox 45开始,如果使用Privacy Badger附加组件,则可能无法登录帐户: 在“隐私标记”设置中,允许cookie用于acc
  • 易语言Gmail邮箱网页操作源码
  • 适用于Python的GMail Google的GMail的Pythonic界面,提供您需要的所有工具。 搜索,阅读和发送多部分电子邮件,存档,标记为已读/未读,删除电子邮件以及管理标签。 该库仍在开发中,因此请...它将自动将您登录到G
  • import asyncio ...async def gmailLogin(username, password, url): #'headless': False如果想要浏览器隐藏更改False为True # 127.0.0.1:1080为代理ip和端口,这个根据自己的本地代理进行更改,如果是vps里...
  • Gmail登录不了哦

    2009-05-08 18:25:00
    Gmail登录不了哦
  • 在一个web程序中,做一个页面,有一个下拉框...通过模拟gmail登录页面向gmail提交form数据,登录失败,请问有什么方法可以实现这样的需求,l而不需要用户打开gmail登录页面输入账户和密码,因为邮箱密码是对用户屏蔽的?

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 22,697
精华内容 9,078
关键字:

gmail登录

友情链接: LINE2.rar