2013-03-15 13 views
13

Ho bisogno di inviare e-mail tramite la riga di comando senza interazioni umane per l'automazione.Invio di e-mail da riga di comando tramite Outlook senza dover fare clic su Invia

So che possiamo usare il comando mailto ma che comporrà email, oggetto, corpo e tutto ma non lo invierà se non faccio clic su Invia.

Ho letto online che possiamo usare blat ma non posso usare altro che Outlook.

Ieri ho persino fatto ricerche di Google tutto il giorno, ma nessuna soluzione.

Questo è il post chiuso che ho trovato Link to SOF post.

Qualsiasi aiuto sarà utile.

just fyi: Sto esaminando alcuni comandi telnet per inviare e-mail che non hanno ancora ottenuto il successo. telnet commands to send email

risposta

15

Opzione 1
Lei non ha detto molto riguardo l'ambiente, ma a patto di avere a disposizione si potrebbe utilizzare uno script PowerShell; un esempio è here. L'essenza di questo è:

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

È quindi possibile lanciare lo script dalla linea di comando come da this example:

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

noti che PowerShell 2.0, che viene installato di default su Windows 7 e Windows Server 2008R2, include un comando più semplice Send-MailMessage, che semplifica le cose.

Opzione 2
Se siete pronti a utilizzare software di terze parti, è qualcosa linea this SendEmail command-line tool. Dipende dal tuo ambiente di destinazione, però; se si sta distribuendo il file batch su più macchine, ciò richiederà ovviamente l'inclusione (ma non l'installazione formale) ogni volta.

Opzione 3
si potrebbe guidare Outlook direttamente da uno script VBA, che a sua volta si sarebbe scatenare da un file batch; questo ti permetterebbe di inviare un'e-mail usando Outlook stesso, che sembra essere il più vicino a ciò che vuoi. Ci sono due parti in questo; in primo luogo, capire lo script VBA richiesto per inviare un messaggio di posta elettronica. Ci sono molti esempi per questo online, incluso da Microsoft here. Essenza di questo è:

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 

Poi, avviare Outlook dalla riga di comando con il parametro /autorun, come da this answer (alter percorso/nomemacro se necessario):

C:\Program Files\Microsoft Office\Office11\Outlook.exe" /autorun macroname 

Opzione 4
È possibile utilizzare lo stesso approccio dell'opzione 3, ma spostare il VBA di Outlook in uno script PowerShell (che si eseguirà da una riga di comando). Esempio here. Questa è probabilmente la soluzione più semplice, IMO.

+0

scusa, il mio script è basato su batch. – Mowgli

+0

Quindi devi solo creare lo script PowerShell, quindi avviarlo dal tuo file batch. Dovresti usare i parametri, come per [questa domanda] (http://stackoverflow.com/questions/5592531/how-to-pass-an-argument-to-a-powershell-script). – Geoff

+0

Grazie per gli ottimi collegamenti, ma tutti richiedono l'accesso al server smtp e non posso memorizzare il mio utente e la mia password in nessuno script che sia molto insicuro. – Mowgli

-2

È possibile utilizzare cURL e CRON per eseguire file .php a orari prestabiliti.

Ecco un esempio di ciò che cURL ha bisogno per eseguire il file .php:

curl http://localhost/myscript.php 

Poi impostare il lavoro cron di eseguire il ricciolo di cui sopra:

nano -w /var/spool/cron/root 
or 
crontab -e 

Seguito da:

01 * * * * /usr/bin/curl http://www.yoursite.com/script.php 

Per ulteriori informazioni su, controlla questo post: https://www.scalescale.com/tips/nginx/execute-php-scripts-automatically-using-cron-curl/

Per maggiori informazioni su cURL: What is cURL in PHP?

Per maggiori informazioni su CRON: http://code.tutsplus.com/tutorials/scheduling-tasks-with-cron-jobs--net-8800

Inoltre, se si desidera conoscere la creazione di un job cron sul server ospitato, basta informarsi con il tuo provider host e potrebbero avere una GUI per configurarlo nel c-panel (come http://godaddy.com o http://1and1.com/)

NOTA: Tecnicamente, credo che sia possibile impostare un processo CRON per eseguire direttamente il file .php, ma non sono certo n.

Buona fortuna con il PHP automatico in esecuzione :-)

+0

il ragazzo ha chiesto di vedere ... non per qualche soluzione php .. evviva – user1052080

Problemi correlati