web-dev-qa-db-ja.com

[送信]をクリックせずにOutlook経由でコマンドラインからメールを送信する

自動化のために人間の介入なしでコマンドライン経由でメールを送信する必要があります。

Mailtoコマンドを使用できることは知っていますが、それは電子メール、件名、本文などすべてを構成しますが、送信をクリックしない限り送信しません。

オンラインで読むと、blatを使用できますが、Outlook以外は使用できません。

これは私が見つけたクローズドポストです SOFポストへのリンク

ただあなたの情報のために:私はいくつかのtelnetコマンドを調べていますが、電子メールを送信することもまだ成功していません。 電子メールを送信するTelnetコマンド

17
Mowgli

オプション1
環境についてはあまり説明しませんでしたが、環境が整っていればPowerShellスクリプトを使用できます。 1つの例は here です。これの本質は次のとおりです。

$smtp = New-Object Net.Mail.SmtpClient("ho-ex2010-caht1.exchangeserverpro.net")
$smtp.Send("[email protected]","[email protected]","Test Email","This is a test")

その後、 この例 に従ってコマンドラインからスクリプトを起動できます。

powershell.exe -noexit c:\scripts\test.ps1

Windows 7およびWindows Server 2008R2にデフォルトでインストールされるPowerShell 2.0には、より簡単な Send-MailMessage コマンドが含まれているため、作業が簡単になります。

オプション2
サードパーティ製のソフトウェアを使用する準備ができている場合は、何か このSendEmailコマンドラインツール です。ただし、ターゲット環境によって異なります。バッチファイルを複数のマシンに展開している場合、毎回含める必要があります(ただし、正式なインストールは必要ありません)。

オプション3
VBAスクリプトからOutlookを直接駆動できます。VBAスクリプトは、バッチファイルからトリガーします。これにより、Outlook自体を使用してメールを送信できるようになります。これには2つの部分があります。最初に、電子メールを送信するために必要なVBAスクリプトを理解します。このオンラインには、Microsoft here を含む多くの例があります。これの本質は次のとおりです。

Sub 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コマンド(コマンドラインから実行します)に移動します。例 ここ 。これはおそらく最も手ごろなソリューション、IMOです。

22
Geoff

VBScriptを使用してコマンドラインからSMS /テキストメッセージを送信してください!

VBAが VB Script のルールを満たしている場合、コマンドラインからテキストファイルに配置するだけで呼び出すことができます。この場合、Outlookを特に開く必要はありません。

コマンドラインから自動テキストメッセージを自分に送信する必要があったため、次のコードを使用しました。これは、@ Geoffの answer の圧縮バージョンです。

世界中のほとんどの携帯電話会社は、携帯電話番号の「バージョン」のメールアドレスを提供しています。 たとえばカナダでRogersまたはChatr Wirelessを使用すると、<YourPhoneNumber>@pcs.rogers.comに送信されたメールはすぐにRogers /に配信されますテキストメッセージとしてのChatr電話。

* 電話で最初のメッセージを「承認」する必要があります。また、一部のキャリアはこれらのメッセージに追加料金を請求する場合がありますが、私の知る限り、すべてのカナダのキャリアがこのあまり知られていないサービスを無料で提供しています。詳細については、キャリアのWebサイトを確認してください。

this および this および this などの詳細な指示とさまざまな世界中のキャリアのEmail-to-Textアドレスのコンパイルされたリストがオンラインで利用可能です。


コードと指示

  1. 以下のコードをコピーして、お気に入りのテキストエディターで新しいファイルに貼り付けます。
  2. .VBSなど、TextMyself.vbs拡張子を持つ任意の名前でファイルを保存します。

それで全部です!
ファイルをダブルクリックしてテストメッセージを送信するか、 START を使用してバッチファイルから実行します。

Sub SendMessage()
    Const EmailToSMSAddy = "[email protected]"
    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

もちろん、これをさまざまな実用的または創造的なニーズに合わせて調整およびカスタマイズできる方法は無限にあります。

1
ashleedawg