【问题标题】:Click "Send" button of G-Mail programmatically以编程方式单击 G-Mail 的“发送”按钮
【发布时间】:2016-02-04 16:09:08
【问题描述】:

我正在创建一个电子邮件发送软件。到目前为止,我可以打开 chrome 并填写电子邮件的详细信息(主题、正文、附件和所有内容),但我想知道有什么方法可以以编程方式单击 G-Mail 的 Send 按钮也是?

在 chrome 中填充细节的代码

Process ps = Process.Start("chrome.exe", "https://mail.google.com/mail/u/0/?view=cm&fs=1&tf=1&to=a@gmail.com&bcc=b@gmail.com);

注意我没有使用SmtpClient发送电子邮件,因为它不符合我的定制要求(抱歉不能透露原因)。


【问题讨论】:

  • 您是如何填写电子邮件详细信息的?您能否提供一些代码,以便我们了解您迄今为止所做的工作和所做的工作。
  • 你看过 Selenium 吗?它可能完全符合您的需要。看看这个例子中的代码scraping.pro/…
  • @Gnqz 请查看更新后的问题。
  • 不确定是否可以使用 Process.Start 发送消息。您是否考虑过使用 Office Interop Outlook? stackoverflow.com/questions/11223462/…

标签: c# winforms email gmail c#-3.0


【解决方案1】:

您想要的方式是不可能的。 Process.Start 打开一个新进程。在这种情况下,它会打开 Google Chrome,并带有您随它发送的 URL。此 URL 包含一个查询字符串,其中包含电子邮件的主题和正文。这是可能的,因为 Google 会在服务器端读取它,并将其放在正确的字段中。但是没有办法进入发送按钮。这是一个 POST 操作,不能由 URL 触发。

C# 形式,确实有一个WebBrowser class。从这里您可以访问按钮并单击它们,但我认为 Google 不会允许这样做,并且很可能会向您发送验证码。 (也就是说,如果您首先设法登录。)

【讨论】:

  • 首先我使用的是“WebBrowser”,但在装有 Windows XP 的 PC 中,他们需要先安装多个安装程序,这是不可行的。
  • 使用“进程”,因为我不仅将它用于 chrome,而且还将它与 firefox、opera 和 internet explorer 集成,不仅是 G-Mail,而且是 yahoo、rediff 等。
  • 我明白了。不幸的是,这只会打开浏览器。使用特定 URL 打开后,您将无法控制它。
  • 是的,这就是为什么我要问是否有任何方法可以通过该过程发送命令或通过使用“HttpRequest”更改代码来实现它?
  • 由于您不能向浏览器发出任何命令,因此我看到的唯一选择是使用类似于 WebBrowser 类的类。 (我很确定还有其他(第 3 方)库支持此功能)。这是您实际访问按钮的唯一方法。唯一的问题是很多网站(当然是谷歌)都受到保护,而且很可能需要验证码才能做任何事情。所以恐怕你想要的都不可能。
【解决方案2】:

对于您正在寻找的模拟按钮按下,我无能为力,但我可以建议您尝试使用 Gmail API 来执行您想要执行的操作: https://developers.google.com/gmail/api/?hl=en

这将是一种更可靠、更稳定的方式以编程方式发送 gmail,而且您仍然不必直接使用 smtp 对象。

【讨论】:

  • 您可能是对的,但不仅适用于 chrome,而且我也将它与 firefox、opera 和 internet explorer 集成,不仅是 G-Mail,还有 yahoo、rediff 等。
【解决方案3】:

您可能应该使用 Selenium (WebDriver)。它允许您从 c# 代码控制浏览器、导航页面、遍历 DOM 等。

【讨论】:

  • 你可能是对的,但不仅适用于 chrome,而且我也将它与 firefox、opera 和 internet explorer 集成,不仅是 G-Mail,还有 yahoo、rediff 等
猜你喜欢
  • 2013-10-09
  • 1970-01-01
  • 1970-01-01
  • 2017-06-17
  • 2013-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多