Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#通过网络浏览器自动登录gmail/hotmail_C#_Api_Outlook_Gmail_Gmail Api - Fatal编程技术网

C#通过网络浏览器自动登录gmail/hotmail

C#通过网络浏览器自动登录gmail/hotmail,c#,api,outlook,gmail,gmail-api,C#,Api,Outlook,Gmail,Gmail Api,我正在尝试做一些类似LassPass的事情,但是作为一个桌面应用程序。我使用VS2013、C#和Windows窗体 我有gmail或outlook的用户电子邮件和密码,我想单击桌面程序中的一个按钮打开本地默认浏览器,即带有适当链接的Chrome/Firefox。我想自动登录服务(gmail/outlook)。我想问我是否必须使用适当的API,或者只有某种链接(“userlogin”,password=“userpassword”)才好 我看到一个gmail API,里面有如何发送邮件,但我找不到

我正在尝试做一些类似LassPass的事情,但是作为一个桌面应用程序。我使用VS2013、C#和Windows窗体

我有gmail或outlook的用户电子邮件和密码,我想单击桌面程序中的一个按钮打开本地默认浏览器,即带有适当链接的Chrome/Firefox。我想自动登录服务(gmail/outlook)。我想问我是否必须使用适当的API,或者只有某种链接(“userlogin”,password=“userpassword”)才好

我看到一个gmail API,里面有如何发送邮件,但我找不到如何登录服务


是否在Gmail或Outlook API函数中可以帮助我?

对于Gmail,您可以使用以下代码进行身份验证

protected void Button1_Click(object sender, EventArgs e)
{
Imap client = new Imap();
// connect to server
client.Connect("imap.gmail.com", 993, SslMode.Implicit);
// authenticate
client.Login("username", "password");

}
你在找什么

一旦你有了它的设置,你可以做一些像

using OpenQA.Selenium.Firefox;
using OpenQA.Selenium;

class Test
{
    static void Main(string[] args)
    {
        IWebDriver driver = new FirefoxDriver();
        driver.Navigate().GoToUrl("https://www.gmail.com/");
        IWebElement query = driver.FindElement(By.Id("Email"));
        query.SendKeys("my.email@gmail.com");
        query = driver.FindElement(By.Id("next"));
        query.Click();
        // now you just have to do the same for the password page

        driver.Quit();
    }
}
您可能会发现以下链接很有用:


使用Selenium 100安全吗?你说的“安全”是什么意思?这肯定很有帮助,但我在尝试获取密码时遇到了“NoTouchElementException未处理”。使用用户名的方法完全相同(我得到了正确的Id:
Passwd
),但仍然不走运。尝试按名称而不是id获取元素,但仍然存在相同的错误。是否有什么东西阻止selenium获取密码字段(出于安全原因)?找到了答案。对于将来出现此问题的任何人,都需要等待元素可见:
driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10))