web-dev-qa-db-fra.com

Envoi d'e-mails à partir de la ligne de commande via Outlook sans avoir à cliquer sur envoyer

J'ai besoin d'envoyer des e-mails via la ligne de commande sans aucune interaction humaine pour l'automatisation.

Je sais que nous pouvons utiliser la commande mailto mais cela composerait le courrier électronique, le sujet, le corps et tout, mais il ne l'enverrait que si je clique sur envoyer.

J'ai lu en ligne que nous pouvons utiliser blat mais je ne peux pas utiliser autre chose qu'Outlook.

Ceci est un post fermé que j'ai trouvé Lien vers le post SOF .

juste pour votre information: je suis à la recherche de certaines commandes telnet pour envoyer des e-mails qui n'ont pas encore réussi. commandes telnet pour envoyer des e-mails

17
Mowgli

Option 1
Vous n'avez pas beaucoup parlé de votre environnement, mais en supposant qu'il soit disponible, vous pouvez utiliser un script PowerShell; un exemple est ici . L'essence de ceci est:

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

Vous pouvez ensuite lancer le script à partir de la ligne de commande selon cet exemple :

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

Notez que PowerShell 2.0, qui est installé par défaut sur Windows 7 et Windows Server 2008R2, comprend une version plus simple Send-MailMessage , ce qui facilite les choses.

Option 2
Si vous êtes prêt à utiliser un logiciel tiers, est quelque chose de ligne cet outil de ligne de commande SendEmail . Cela dépend de votre environnement cible, cependant; si vous déployez votre fichier de commandes sur plusieurs machines, cela nécessitera évidemment une inclusion (mais pas une installation formelle) à chaque fois.

Option 3
Vous pouvez piloter Outlook directement à partir d'un script VBA, que vous déclencherez à son tour à partir d'un fichier de commandes; cela vous permettrait d'envoyer un e-mail à l'aide d'Outlook lui-même, qui semble être le plus proche de ce que vous recherchez. Il y a deux parties à cela; Tout d'abord, déterminez les scripts VBA requis pour envoyer un e-mail. Il existe de nombreux exemples pour cela en ligne, y compris de Microsoft ici . L'essence de ceci est:

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

Ensuite, lancez Outlook à partir de la ligne de commande avec le /autorun paramètre, selon cette réponse (modifiez le chemin d'accès/macroname si nécessaire):

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

Option 4
Vous pouvez utiliser la même approche que l'option 3, mais déplacer le VBA Outlook dans un script PowerShell (que vous exécuterez à partir d'une ligne de commande). Exemple ici . Il s'agit probablement de la solution la plus simple, l'OMI.

22
Geoff

Envoyez des SMS/SMS à partir de la ligne de commande avec VBScript!

Si VBA respecte les règles pour VB Script alors il peut être appelé à partir de la ligne de commande en le plaçant simplement dans un fichier texte - dans ce cas, il n'est pas nécessaire d'ouvrir spécifiquement Outlook.

J'avais besoin de m'envoyer des messages texte automatisés à partir de la ligne de commande, j'ai donc utilisé le code ci-dessous, qui n'est qu'une version compressée de @ Geoff's réponse ci-dessus.

La plupart des opérateurs de téléphonie mobile dans le monde fournissent une "version" d'adresse e-mail de votre numéro de téléphone mobile. Par exemple au Canada avec Rogers ou Chatr Wireless, un courriel envoyé à <YourPhoneNumber>@pcs.rogers.com sera immédiatement envoyé à votre téléphone Rogers/Chatr sous forme de message texte.

*  Vous devrez peut-être "autoriser" le premier message sur votre téléphone, et certains transporteurs peuvent facturer des frais supplémentaires pour ce message, bien que, à ma connaissance, tous les transporteurs canadiens fournissent gratuitement ce service peu connu. Consultez le site Web de votre opérateur pour plus de détails.

Il existe d'autres instructions et diverses listes compilées des adresses e-mail vers texte du transporteur mondial disponibles en ligne telles que this et - ce et ce .


Code et instructions

  1. Copiez le code ci-dessous et collez-le dans un nouveau fichier dans votre éditeur de texte préféré.
  2. Enregistrez le fichier sous n'importe quel nom avec un .VBS extension, telle que TextMyself.vbs.

C'est tout !
Double-cliquez simplement sur le fichier pour envoyer un message de test, ou exécutez-le à partir d'un fichier batch en utilisant 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

Exemple d'utilisation d'un fichier batch:

START x:\mypath\TextMyself.vbs

Bien sûr, il existe d'innombrables façons d'adapter et de personnaliser cela pour répondre à divers besoins pratiques ou créatifs.

1
ashleedawg