如何使用任何脚本发送已在Outlook中填写的电子邮件



我需要通过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'"

最新更新