【问题标题】:How to send an email from one Gmail account to another one using a batch file or script?如何使用批处理文件或脚本将电子邮件从一个 Gmail 帐户发送到另一个帐户?
【发布时间】:2010-11-11 21:56:43
【问题描述】:

我需要一个小型 Windows 脚本来向 Gmail 帐户发送 1 行电子邮件。我尝试了许多声称可以执行此操作的实用程序,例如 BLAT,但没有一个有效。如果满足某些条件,脚本将在批处理文件中执行。脚本可以是 Perl、Python、VBScript、Java,只要它是从批处理文件执行的就没有关系。请仅在您通过从 Gmail、Hotmail 或 Yahoo 电子邮件帐户向 Gmail 帐户发送电子邮件来尝试解决方案时才回答。我默认使用的帐户是 Gmail,所以我从 Gmail 帐户发送到 Gmail 帐户。

【问题讨论】:

  • 您需要确保有一个标题,以及正文中的某些内容。否则大多数电子邮件提供商都会忽略它。
  • 请重新阅读问题,我需要一个完整的脚本来插入批处理文件,而不是没有方向的小提示。谢谢,安东
  • 鉴于解决一段文本中描述不完整的问题并不容易,而且判断提问者的专业水平同样困难,我发现 Brad Gilberts 的评论非常相关并且可能会有所帮助.
  • 男孩,别人替你做你的工作肯定很有趣,不是吗?
  • -1 至少表现出一些努力。您在哪里尝试使用您使用的所谓的“许多实用程序”?向我们展示代码。

标签: email scripting gmail


【解决方案1】:

Blat 让您可以直接从批处理文件发送电子邮件:

blat.exe - -f from@example.com -to to@gmail.com -s Subject -body "Text body" ^
  -server smtp.example.com:25 -u username -pw password

但 Blat 似乎不支持 SSL,因此要使其与 Gmail 一起使用,您需要一个名为 Stunnel 的附加工具(请参阅 herehere)。

无论如何,您应该能够使用Collaboration Data Objects (CDO) COM API 从VBScript 通过GMail 发送电子邮件:

Const schema   = "http://schemas.microsoft.com/cdo/configuration/"
Const cdoBasic = 1
Const cdoSendUsingPort = 2
Dim oMsg, oConf

' E-mail properties
Set oMsg      = CreateObject("CDO.Message")
oMsg.From     = "from@gmail.com"  ' or "Sender Name <from@gmail.com>"
oMsg.To       = "to@gmail.com"    ' or "Recipient Name <to@gmail.com>"
oMsg.Subject  = "Subject"
oMsg.TextBody = "Text body"

' GMail SMTP server configuration and authentication info
Set oConf = oMsg.Configuration
oConf.Fields(schema & "smtpserver")       = "smtp.gmail.com"
oConf.Fields(schema & "smtpserverport")   = 465
oConf.Fields(schema & "sendusing")        = cdoSendUsingPort
oConf.Fields(schema & "smtpauthenticate") = cdoBasic
oConf.Fields(schema & "smtpusessl")       = True
oConf.Fields(schema & "sendusername")     = "from@gmail.com"
oConf.Fields(schema & "sendpassword")     = "sender_password"
oConf.Fields.Update

oMsg.Send

编辑:添加了缺少的sendusing 参数,所以它现在应该可以正常工作了。

有关更多 CDO 示例,请参阅 here

【讨论】:

  • 我尝试了 BLAT- 没有工作,并且 sendmail 和许多其他的。大多数人之前似乎都在使用旧代码 - TLS。顺便说一句,我相信 gmail 在 25 端口上不起作用。他们使用 465。
  • 如果您扩展您的问题并告诉我们您尝试了哪些工具和/或代码以及它们究竟是如何“不起作用”(您收到哪些错误消息等),这将有所帮助,提供有关您的更多信息环境等等。可能问题与您的环境/STMP 服务器配置有关,可以通过在代码中添加其他设置来出售。但在不知道细节的情况下,很难想出其他任何东西。
  • @Antone:似乎 Blat 和 Sendmail 需要一个名为 Stunnel 的额外工具才能使用 Gmail(请参阅更新的答案)。我还修改了 VBScript 示例以使用 Gmail SMTP 服务器。现在对你有用吗?
  • 这是我第三次尝试对海伦发表评论。我似乎无法保存我的 cmets。让我们看看这是否有效。
  • @shamim:您的语法不起作用,因为Send 没有返回值。请改为new question 提出您的问题 - 这样您将获得更好的回复,该回复隐藏在另一个问题的 cmets 中。
【解决方案2】:

如果您只需要使用一些 SMTP 发送到 GMail,请在 SMTP 模式下使用 MIME::Lite Perl module - 我用它来向我的 GMail 帐户发送通知。

【讨论】:

  • 谢谢,我会看看这个。
  • 嗯 - 似乎每个人都有一个解决方案,而无需尝试。我希望 Python 能做到这一点,但它也需要机械化模块,我找不到它。我想我接下来会下载 Perl 并立即尝试您的解决方案。我对这里的所有体验感到惊讶,现在已经花了 6 个小时试图找到一个从批处理文件发送电子邮件的简单脚本的解决方案。哇!谢谢!
  • 关闭的人似乎是一个来自俄罗斯的 24 岁女孩。她非常乐于助人,但我认为我的剧本有误,然后她就消失了。所以我在这里使用 Perl!
  • 感谢 Alexandr 的帮助,我仍然会得到您的想法,并且当然计划研究 Perl 或 Python 来替换我现在用于应用程序模块的 VBScript。再次感谢!安东尼
【解决方案3】:

在Linux中(我不确定你在什么环境)你可以使用mail

some_command| mail foo@gmail.com bar@gmail.com -s "subject"

【讨论】:

    【解决方案4】:

    查看perlmonks 上的script,其中详细介绍了 GMail 帐户上的 IMAP 访问。这篇文章涵盖了通过 Perl 登录到 GMail 帐户所需的一切。

    或者,您可以尝试 CPAN 中的 Mail::Webmail::Gmail 模块。从外观上看,该模块可以让您跳过大部分关于连接和验证邮件服务器的复杂细节,让您得到一些简单的东西 -

    my $gmail = Mail::Webmail::Gmail->new( username => 'username', password => 'password', );
    $gmail->send_message( to => 'user@domain.com', subject => 'Test Message', msgbody => 'This is a test.' );
    

    还有Email::Send::Gmail,以防您需要“仅”从 Gmail 帐户发送电子邮件。

    【讨论】:

    • 谢谢 - 如果 Python 代码不能正常工作,但我想接下来我会检查一下。
    • 感谢 muteW 的帮助,我仍然会得到您的想法,并且当然计划研究 Perl 或 Python 来替换我现在用于应用程序模块的 VBScript。再次感谢!安东尼
    【解决方案5】:
    #!c:/Python/python.exe -u
    import libgmail
    ga = libgmail.GmailAccount("username@gmail.com", "password")
    ga.login()
    msg=libgmail.GmailComposedMessage("friend@gmail.com", "SubjectHere", "BodyHere")
    ga.sendMessage(msg)
    

    这应该使用 python 在 Windows 上运行。确保将顶部的 shebang 更改为指向您的 python 安装。除此之外,只需输入您的姓名和密码,以及您要发送的电子邮件。

    【讨论】:

    • 这会将电子邮件一个 Gmail 帐户发送到另一个 Gmail 或任何其他地址...
    • ...我想该评论的重点是,OP 是否有可供发送的 Gmail 帐户?如果没有(或者如果他/她不想使用它),则需要 SMTP 或 Sendmail API 解决方案。
    • 嗯,OP 的登录名是未知的(google),这让我相信他/她有一个 gmail 帐户...
    • 感谢大卫,该帐户是 gmail- 正确的。这可能是门票!我会尽力让你知道。没用过 Perl,但听说 Perl 很健壮,而且 Perl 的程序员也很忠诚!再次感谢!
    • 感谢 Dan 的帮助,我仍然会得到您的想法,并且肯定会考虑使用 Perl 或 Python 来替换我现在用于应用程序模块的 VBScript。再次感谢!安东尼
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-31
    • 2012-03-30
    • 2013-03-24
    • 2012-11-21
    • 1970-01-01
    • 1970-01-01
    • 2011-03-08
    相关资源
    最近更新 更多