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
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.
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 .
.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
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.