我需要通过命令行自动化发送电子邮件,不需要任何人工干预。
我知道我们可以使用mailto命令,但这只是组合电子邮件的主题、正文等内容,除非我点击“发送”,否则不会发送电子邮件。
我在网上看到可以使用blat命令,但我不能使用除Outlook以外的其他程序。
我找到了一个关闭的帖子 SOF帖子链接,供您参考。
仅供参考:我正在尝试使用telnet命令发送电子邮件,但还没有成功。 这里有一些用telnet命令发送电子邮件的指南。
我需要通过命令行自动化发送电子邮件,不需要任何人工干预。
我知道我们可以使用mailto命令,但这只是组合电子邮件的主题、正文等内容,除非我点击“发送”,否则不会发送电子邮件。
我在网上看到可以使用blat命令,但我不能使用除Outlook以外的其他程序。
我找到了一个关闭的帖子 SOF帖子链接,供您参考。
仅供参考:我正在尝试使用telnet命令发送电子邮件,但还没有成功。 这里有一些用telnet命令发送电子邮件的指南。
选项1
您没有提及您的环境,但假设您可以使用它,那么您可以使用PowerShell脚本,例如这里。其实质是:
$smtp = New-Object Net.Mail.SmtpClient("ho-ex2010-caht1.exchangeserverpro.net")
$smtp.Send("reports@exchangeserverpro.net","administrator@exchangeserverpro.net","Test Email","This is a test")
您可以按照此示例的方式,从命令行启动脚本:
powershell.exe -noexit c:\scripts\test.ps1
Send-MailMessage
命令,使操作更容易。
选项2Sub SendMessage(DisplayMsg As Boolean, Optional AttachmentPath)
Dim objOutlook As Outlook.Application
Dim objOutlookMsg As Outlook.MailItem
Dim objOutlookRecip As Outlook.Recipient
Dim objOutlookAttach As Outlook.Attachment
Set objOutlook = CreateObject("Outlook.Application")
Set objOutlookMsg = objOutlook.CreateItem(olMailItem)
With objOutlookMsg
Set objOutlookRecip = .Recipients.Add("Nancy Davolio")
objOutlookRecip.Type = olTo
' Set the Subject, Body, and Importance of the message.
.Subject = "This is an Automation test with Microsoft Outlook"
.Body = "This is the body of the message." &vbCrLf & vbCrLf
.Importance = olImportanceHigh 'High importance
If Not IsMissing(AttachmentPath) Then
Set objOutlookAttach = .Attachments.Add(AttachmentPath)
End If
For Each ObjOutlookRecip In .Recipients
objOutlookRecip.Resolve
Next
.Save
.Send
End With
Set objOutlook = Nothing
End Sub
然后,根据这篇答案的说明,在命令行中使用/autorun
参数启动Outlook(必要时更改路径和宏名):
C:\Program Files\Microsoft Office\Office11\Outlook.exe" /autorun macroname
选项 4
您可以使用与选项 3 相同的方法,但是将 Outlook VBA 移动到 PowerShell 脚本中(您将从命令行运行该脚本)。 示例在此处。 在我看来,这可能是最整洁的解决方案。
使用PowerShell可以发送电子邮件并将其集成到Bat文件脚本中。但是,您需要在计算机上安装Outlook。这对我在本地PC上有效,但在服务器上却无效。在服务器上,每次使用此命令时都会要求我授权,而且在服务器上安装Outlook可能不是许多人首选的方法。
在本地PC上运行时,此方法功能完美。
$Outlook = New-Object -ComObject Outlook.Application
$Mail = $Outlook.CreateItem(0)
$Mail.To = "xyz@mail.com"
$Mail.Subject = "Action"
$Mail.Body ="Pay rise please"
$Mail.Send()
如果VBA符合VB Script的规则,则可以通过将它放入文本文件中来从命令行调用它 - 在这种情况下,无需专门打开Outlook。
我有一个需要从命令行发送自动化文本消息给自己的需求,因此我使用了下面的代码,这只是@Geoff上面答案的压缩版本。
大多数全球移动电话运营商提供您的移动电话号码的电子邮件地址“版本”。例如在加拿大的或,发送到<YourPhoneNumber>
@pcs.rogers.com
的电子邮件将立即传递到您的Rogers/Chatr手机作为文本消息。
还有更多说明和各种编制的全球运营商电子邮件到短信地址列表可在网上找到,例如this和this和this。
.VBS
扩展名,例如TextMyself.vbs
。就这些了!
只需双击文件即可发送测试短信,或者使用START
从批处理文件运行它。
Sub SendMessage()
Const EmailToSMSAddy = "3215551212@pcs.rogers.com"
Dim objOutlookRecip
With CreateObject("Outlook.Application").CreateItem(0)
Set objOutlookRecip = .Recipients.Add(EmailToSMSAddy)
objOutlookRecip.Type = 1
.Subject = "The computer needs your attention!"
.Body = "Go see why Windows Command Line is texting you!"
.Save
.Send
End With
End Sub
START x:\mypath\TextMyself.vbs
mail()
命令。 - ashleedawgBAT
文件...它是一个 VBS
文件(Visual Basic 脚本),类似于 Office 的 VBA。这里有关于运行 VBS 的更多信息。另一个可能的问题是您的杀毒软件阻止访问(因为这很容易被恶意软件滥用)。祝好运,并且如果您找到解决方案,请随时更新答案! :-) - ashleedawg你可以使用cURL和CRON在设定的时间运行.php文件。
以下是cURL运行.php文件所需的示例:
curl http://localhost/myscript.php
nano -w /var/spool/cron/root
or
crontab -e
跟随:
01 * * * * /usr/bin/curl http://www.yoursite.com/script.php
了解更多信息,请查看以下文章: https://www.scalescale.com/tips/nginx/execute-php-scripts-automatically-using-cron-curl/
了解更多关于cURL的信息: 什么是PHP中的cURL?
了解更多关于CRON的信息: http://code.tutsplus.com/tutorials/scheduling-tasks-with-cron-jobs--net-8800
另外,如果您想学习如何在托管服务器上设置CRON作业,请向您的主机提供商查询,他们可能会有一个GUI来在c面板中设置它(如http://godaddy.com或http://1and1.com/)
注意:从技术上讲,我相信您可以设置一个CRON作业来直接运行.php文件,但我不确定。
祝您自动运行PHP一切顺利 :-)
:(
我没有其他选择,在我的批处理脚本中,我将输出发送到txt文件,然后从那里调用Powershell脚本,在我的PS脚本中,我使用cat
命令将文件内容作为电子邮件正文。这是一个变通方法,但我已经暂时解决了问题。 - Mowglipowershell.exe -File "c:\users\myuser\Desktop\mymailscript.ps1"
的命令来调用PowerShell脚本。请注意,路径是本机Windows路径,而不是/mnt
路径。 - Geoff