21

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

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

ブラットを使用できることをオンラインで読みましたが、Outlook 以外は使用できません。

これはクローズド ポストです。SOF ポストへのリンクを見つけました。

参考までに、メールを送信するためのいくつかのtelnetコマンドを調べていますが、それでもまだ成功していません。 電子メールを送信するためのtelnetコマンド

4

4 に答える 4

25

オプション 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

Windows 7 および Windows Server 2008R2 に既定でインストールされる PowerShell 2.0 には、より簡単なSend-MailMessageコマンドが含まれていることに注意してください。

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

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

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です。

于 2013-03-15T13:18:26.970 に答える
-5

cURL と CRON を使用して、設定した時間に .php ファイルを実行できます。

.php ファイルを実行するために必要な cURL の例を次に示します。

curl http://localhost/myscript.php

次に、上記の cURL を実行するように CRON ジョブをセットアップします。

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 ジョブをセットアップする方法を知りたい場合は、ホスト プロバイダーに問い合わせてください。C パネルでセットアップするための GUI がある場合があります ( http://godaddy. com、またはhttp://1and1.com/ )

注: 技術的には、CRON ジョブをセットアップして .php ファイルを直接実行できると思いますが、確かではありません。

自動 PHP の実行に幸運を祈ります :-)

于 2016-01-05T19:35:23.467 に答える