我需要通过outlook发送一封已经填写了所有详细信息(例如主题、正文等(的电子邮件,但必须通过某种脚本完成。这可以是在Windows 10上运行的任何脚本。
从本质上讲,我所需要的脚本就是"点击"发送电子邮件。有没有办法做到这一点,或者这是不可能的。优选的脚本类型是.bat
、.cmd
和.vbs
。我不想使用任何第三方软件。
这是我目前在批处理文件中的内容,同样,我只需要发送电子邮件的脚本:
cd C:Program Files (x86)Microsoft OfficerootOffice16 & start outlook.exe /c ipm.note /m "someone@gmail.com?subject=subject here"
我将用另一个脚本填写电子邮件的正文,我已经设法做到了。如果你对其他选项有任何想法,仍然可以回复,这可能会很有用。
以下是我需要通过脚本文件发送的图像:
提前谢谢。
Powershell是一个适用于Microsoft Windows的脚本环境。脚本保存为扩展名为.ps1
的纯文本文件。您可以在Windows Powershell ISE或文本编辑器中创建文件。以下是可以用来完成任务的示例脚本:
#create COM object named Outlook
$Outlook = New-Object -ComObject Outlook.Application
#create Outlook MailItem named Mail using CreateItem() method
$Mail = $Outlook.CreateItem(0)
#add properties as desired
$Mail.To = "recipient@test.com"
$Mail.Subject = "subject"
$Mail.HTMLBody = "testing"
#send message
$Mail.Send()
#quit and cleanup
$Outlook.Quit()
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($Outlook) | Out-Null
但在现实世界中,代码可能更复杂:
Add-Type -assembly "Microsoft.Office.Interop.Outlook"
add-type -assembly "System.Runtime.Interopservices"
try
{
$outlook = [Runtime.Interopservices.Marshal]::GetActiveObject('Outlook.Application')
$outlookWasAlreadyRunning = $true
}
catch
{
try
{
$Outlook = New-Object -comobject Outlook.Application
$outlookWasAlreadyRunning = $false
}
catch
{
write-host "You must exit Outlook first."
exit
}
}
$namespace = $Outlook.GetNameSpace("MAPI")
有关详细信息,请参阅带有PowerShell的Outlook电子邮件自动化。
注意,您可以从批处理文件或命令提示符(cmd.exe
(运行powershell脚本:
powershell -noexit -File "C:my_pathMYSCRIPT.ps1"
当我们右键单击ps1脚本并单击";使用PowerShell运行":
"C:WindowsSystem32WindowsPowerShellv1.0powershell.exe" "-Command" "if((Get-ExecutionPolicy ) -ne 'AllSigned') { Set-ExecutionPolicy -Scope Process Bypass }; & 'C:UsersUSERNAMEDesktopMYSCRIPT.ps1'"