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

How do you send an email that has already been filled out in Outlook using any script?

我需要通过 outlook 发送一封已经填写了所有详细信息(例如主题、正文等)的电子邮件,但必须通过某种脚本来完成。这可以是适用于 Windows 10.

的任何脚本

基本上,我需要脚本做的就是'click'发送电子邮件。有没有办法做到这一点,或者这是不可能的。首选的脚本类型是 .bat.cmd.vbs。我不想使用任何第 3 方软件。

这是我目前在我的批处理文件中的内容,同样我只需要脚本来发送电子邮件:

cd C:\Program Files (x86)\Microsoft Office\root\Office16 & start outlook.exe /c ipm.note /m "someone@gmail.com?subject=subject here"

我将使用另一个脚本来填写电子邮件正文,我已成功完成。如果您对其他选项有任何想法,请回复,它可能会有用。

Here is an image of what I need to be sent by a script file:

提前致谢。

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")

有关详细信息,请参阅 Outlook Email Automation with PowerShell


请注意,您可以 运行 来自批处理文件或命令提示符的 powershell 脚本 (cmd.exe):

powershell -noexit -File "C:\my_path\MYSCRIPT.ps1"

这是 Microsoft 在我们右键单击 ps1 脚本并单击“运行 with PowerShell”时执行的方法:

"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" "-Command" "if((Get-ExecutionPolicy ) -ne 'AllSigned') { Set-ExecutionPolicy -Scope Process Bypass }; & 'C:\Users\USERNAME\Desktop\MYSCRIPT.ps1'"