使用bat文件将文件发送到电子邮件地址而不暴露电子邮件信息?

米娜·纳吉(Mina Nageh)

我想通过bat文件将文件发送到我的Gmail帐户,并在该bat文件中加密我的电子邮件信息,这样,如果有人打开bat文件,他们将无法从中获取电子邮件信息。

逻辑例如:

  1. 检查互联网是否正常工作

    • 如果可以,请发送文件,然后删除蝙蝠文件
  2. 检查互联网是否正常工作

    • 如果没有,则计划将其以后再添加或添加到启动中

    • 完成后,将其从计划表中删除或启动!

IT暴徒忍者

如果您需要通过使用带有用于生成和发送电子邮件的逻辑PowerShell脚本来发送电子邮件(甚至带有附件),则可以通过将敏感值作为参数传递批处理脚本来执行它,而不是将敏感值硬编码到其中脚本逻辑。

PowerShell脚本逻辑可以接受的参数,如Gmail的本地邮箱的用户名,密码进行身份验证以发送电子邮件,和其他任何你不想硬编码在脚本中。

  • PowerShell Args

    在脚本或函数中,您可以使用$ args数组引用未命名的参数,例如,将所有参数传递给cmdlet。您还可以通过其位置引用特定的参数:

    “第一个参数是“ + $Args[0]

    “第二个参数是“ + $Args[1]

您还可以将逻辑放入批处理脚本中,以便它也具有参数,您可以在执行时将敏感值传递给它,并使用参数占位符而不是对敏感值进行硬编码。

  • 批次精氨酸

    您可以%在命令行上使用后跟数字位置的形式获取任何参数的值传递的第一个项目始终%1是第二个项目始终%2以此类推

    %*批处理脚本是指所有的参数(如%1 %2 %3 %4 %5 ...%255)只有参数%1%9可以通过编号来引用。

这样,如果打开了脚本,您需要保护的敏感值将不会暴露或硬编码到脚本逻辑中,任何人都可以看到谁对该脚本具有读取权限。


重要说明: 每个PowerShell脚本示例名称“批处理执行脚本”的底部都有一个部分,具有可从批处理脚本执行的逻辑或执行的逻辑,因此您将使用传递用户名,密码和/或附件完整路径作为批处理脚本的适当参数,sendemail.bat "<GmailAccountName>" "<GmailPassword>" "<FullPathAttachment>"

PowerShell脚本(无附件)

$Username      = $args[0]
$EmailPassword = $args[1]

$Username = $Username
$EmailTo = "[email protected]" 
$EmailFrom = "[email protected]"
$Subject = "Email Subject"
$Body = "Email Body"
$SMTPServer = "smtp.gmail.com" 
$SMTPMessage = New-Object System.Net.Mail.MailMessage($EmailFrom, $EmailTo, $Subject, $Body)
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587) 
$SMTPClient.EnableSsl = $true 
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential($Username, $EmailPassword); 
$SMTPClient.Send($SMTPMessage)

批处理执行脚本

SET GmailAccount=%~1
SET GmailPassword=%~2
SET PowerShellDir=C:\Windows\System32\WindowsPowerShell\v1.0
CD /D "%PowerShellDir%"
Powershell -ExecutionPolicy Bypass -Command "& 'C:\Scripts\SendEmail.ps1' '%GmailAccount%' '%GmailPassword%'"

PowerShell脚本(带有附件)

$Username      = $args[0]
$EmailPassword = $args[1]
$Attachment    = $args[2]

$Username = $Username
$EmailTo = "[email protected]" 
$EmailFrom = "[email protected]"
$Subject = "Email Subject"
$Body = "Email Body"
$SMTPServer = "smtp.gmail.com" 
$SMTPMessage = New-Object System.Net.Mail.MailMessage($EmailFrom, $EmailTo, $Subject, $Body)
$Attachment = New-Object System.Net.Mail.Attachment($Attachment)
$SMTPMessage.Attachments.Add($Attachment)
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587) 
$SMTPClient.EnableSsl = $true 
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential($Username, $EmailPassword); 
$SMTPClient.Send($SMTPMessage)

批处理执行脚本

SET GmailAccount=%~1
SET GmailPassword=%~2
SET Attachment=%~3
SET PowerShellDir=C:\Windows\System32\WindowsPowerShell\v1.0
CD /D "%PowerShellDir%" 
Powershell -ExecutionPolicy Bypass -Command "& 'C:\Scripts\SendEmail.ps1' '%GmailAccount%' '%GmailPassword%' '%Attachment%'"

批处理脚本(动态)

这是一个多合一的动态批处理脚本,您只需传递Gmail帐户用户名,Gmail帐户密码以及附件的完整路径即可。

@ECHO OFF

SET GmailAccount=%~1
SET GmailPassword=%~2
SET Attachment=%~3

CALL :PowerShell
CD /D "%PowerShellDir%"
Powershell -ExecutionPolicy Bypass -Command "& '%PSScript%' '%GmailAccount%' '%GmailPassword%' '%Attachment%'"
EXIT

:PowerShell
SET PowerShellDir=C:\Windows\System32\WindowsPowerShell\v1.0
SET PSScript=%temp%\~tmpSendeMail.ps1
IF EXIST "%PSScript%" DEL /Q /F "%PSScript%"

ECHO $Username      = $args[0]>> "%PSScript%"
ECHO $EmailPassword = $args[1]>> "%PSScript%"
ECHO $Attachment    = $args[2]>> "%PSScript%"
ECHO                          >> "%PSScript%"
ECHO $Username    = $Username                 >> "%PSScript%"
ECHO $EmailTo     = "[email protected]" >> "%PSScript%"
ECHO $EmailFrom   = "[email protected]" >> "%PSScript%"
ECHO $Subject     = "Email Subject"           >> "%PSScript%"
ECHO $Body        = "Email Body"              >> "%PSScript%"
ECHO $SMTPServer  = "smtp.gmail.com"          >> "%PSScript%"
ECHO $SMTPMessage = New-Object System.Net.Mail.MailMessage($EmailFrom, $EmailTo, $Subject, $Body) >> "%PSScript%"
ECHO $Attachment  = New-Object System.Net.Mail.Attachment($Attachment)                            >> "%PSScript%"
ECHO $SMTPMessage.Attachments.Add($Attachment)                                                    >> "%PSScript%"
ECHO $SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)                               >> "%PSScript%"
ECHO $SMTPClient.EnableSsl = $true                                                                >> "%PSScript%"
ECHO $SMTPClient.Credentials = New-Object System.Net.NetworkCredential($Username, $EmailPassword) >> "%PSScript%"
ECHO $SMTPClient.Send($SMTPMessage)                                                               >> "%PSScript%"
GOTO :EOF

您可以像这样执行批处理脚本。

 sendemail.bat "<GmailAccountName>" "<GmailPassword>" "<FullPathAttachment>"

在此处输入图片说明


批处理脚本(静态和自删除)

该脚本将在的变量设定的硬编码值GmailAccount=GmailPassword=以及Attachment=但是一旦执行,将完全删除[本身]脚本通过"%~FN0"其中0的脚本本身。这意味着您将要确保复制此脚本,然后仅在不希望公开此信息的位置从要执行的计算机上运行该副本。

@ECHO OFF

SET GmailAccount=<GmailAccountName>
SET GmailPassword=<GmailPassword>
SET Attachment=<FullAttachmentPath>

CALL :PowerShell
CD /D "%PowerShellDir%"
Powershell -ExecutionPolicy Bypass -Command "& '%PSScript%' '%GmailAccount%' '%GmailPassword%' '%Attachment%'"
IF EXIST "%~FN0" DEL /Q /F "%~FN0"
EXIT

:PowerShell
SET PowerShellDir=C:\Windows\System32\WindowsPowerShell\v1.0
SET PSScript=%temp%\~tmpSendeMail.ps1
IF EXIST "%PSScript%" DEL /Q /F "%PSScript%"

ECHO $Username      = $args[0]>> "%PSScript%"
ECHO $EmailPassword = $args[1]>> "%PSScript%"
ECHO $Attachment    = $args[2]>> "%PSScript%"
ECHO                          >> "%PSScript%"
ECHO $Username    = $Username                 >> "%PSScript%"
ECHO $EmailTo     = "[email protected]" >> "%PSScript%"
ECHO $EmailFrom   = "[email protected]" >> "%PSScript%"
ECHO $Subject     = "Email Subject"           >> "%PSScript%"
ECHO $Body        = "Email Body"              >> "%PSScript%"
ECHO $SMTPServer  = "smtp.gmail.com"          >> "%PSScript%"
ECHO $SMTPMessage = New-Object System.Net.Mail.MailMessage($EmailFrom, $EmailTo, $Subject, $Body) >> "%PSScript%"
ECHO $Attachment  = New-Object System.Net.Mail.Attachment($Attachment)                            >> "%PSScript%"
ECHO $SMTPMessage.Attachments.Add($Attachment)                                                    >> "%PSScript%"
ECHO $SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)                               >> "%PSScript%"
ECHO $SMTPClient.EnableSsl = $true                                                                >> "%PSScript%"
ECHO $SMTPClient.Credentials = New-Object System.Net.NetworkCredential($Username, $EmailPassword) >> "%PSScript%"
ECHO $SMTPClient.Send($SMTPMessage)                                                               >> "%PSScript%"
GOTO :EOF

更多资源

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Yesod将邮件发送到电子邮件地址

来自分类Dev

PHP邮件未将电子邮件发送到我的电子邮件地址

来自分类Dev

Orchard CMS在使用工作流提交表单后将电子邮件发送到多个/不同的电子邮件地址

来自分类Dev

使用AppleScript和Apple Mail将电子邮件发送到CSV文件

来自分类Dev

SQL Server不会将电子邮件发送到特定的电子邮件地址

来自分类Dev

使用Google表格将压缩的Zip文件夹发送到电子邮件

来自分类Dev

PHP将电子邮件发送到用户在插件文件中输入的地址

来自分类Dev

TFS将通知发送到错误的电子邮件地址

来自分类Dev

Laravel:通过用户标识将电子邮件发送到数据库内部的电子邮件地址

来自分类Dev

Ubuntu如何将警报发送到外部电子邮件地址?

来自分类Dev

过滤以将发送到特定别名电子邮件地址的邮件移动

来自分类Dev

使用Yesod将邮件发送到电子邮件地址

来自分类Dev

使用哪个贝宝SDK / API将信用卡付款发送到电子邮件地址?

来自分类Dev

无法使用gmail发送到带有“加号”字符的电子邮件地址

来自分类Dev

将电子邮件从多个电子邮件表单发送到多个电子邮件地址

来自分类Dev

查询MySQL以获取电子邮件地址并将电子邮件发送到该地址

来自分类Dev

使用PHP解析发送到地址的电子邮件?

来自分类Dev

为什么GitLab将通知电子邮件发送到其他电子邮件地址?

来自分类Dev

将电子邮件发送到错误的电子邮件地址-它们是被保留还是被丢弃?

来自分类Dev

发送到多个电子邮件地址

来自分类Dev

如何在ASP.NET MVC中使用邮政将电子邮件发送到数据库中的多个电子邮件地址

来自分类Dev

使用字典提取电子邮件地址。某些键有多封电子邮件,如何发送到所有电子邮件?

来自分类Dev

编辑内容后,将邮件从Webform发送到电子邮件地址

来自分类Dev

使用Google表格将压缩的Zip文件夹发送到电子邮件

来自分类Dev

无法将电子邮件发送到大学电子邮件地址

来自分类Dev

Laravel 5.3将邮件发送到多个电子邮件地址

来自分类Dev

将确认信模板发送到客户的电子邮件地址

来自分类Dev

创建 html 表单将下载链接发送到给定的电子邮件地址?

来自分类Dev

在提交时将 Google 表单回复发送到指定的电子邮件地址

Related 相关文章

  1. 1

    使用Yesod将邮件发送到电子邮件地址

  2. 2

    PHP邮件未将电子邮件发送到我的电子邮件地址

  3. 3

    Orchard CMS在使用工作流提交表单后将电子邮件发送到多个/不同的电子邮件地址

  4. 4

    使用AppleScript和Apple Mail将电子邮件发送到CSV文件

  5. 5

    SQL Server不会将电子邮件发送到特定的电子邮件地址

  6. 6

    使用Google表格将压缩的Zip文件夹发送到电子邮件

  7. 7

    PHP将电子邮件发送到用户在插件文件中输入的地址

  8. 8

    TFS将通知发送到错误的电子邮件地址

  9. 9

    Laravel:通过用户标识将电子邮件发送到数据库内部的电子邮件地址

  10. 10

    Ubuntu如何将警报发送到外部电子邮件地址?

  11. 11

    过滤以将发送到特定别名电子邮件地址的邮件移动

  12. 12

    使用Yesod将邮件发送到电子邮件地址

  13. 13

    使用哪个贝宝SDK / API将信用卡付款发送到电子邮件地址?

  14. 14

    无法使用gmail发送到带有“加号”字符的电子邮件地址

  15. 15

    将电子邮件从多个电子邮件表单发送到多个电子邮件地址

  16. 16

    查询MySQL以获取电子邮件地址并将电子邮件发送到该地址

  17. 17

    使用PHP解析发送到地址的电子邮件?

  18. 18

    为什么GitLab将通知电子邮件发送到其他电子邮件地址?

  19. 19

    将电子邮件发送到错误的电子邮件地址-它们是被保留还是被丢弃?

  20. 20

    发送到多个电子邮件地址

  21. 21

    如何在ASP.NET MVC中使用邮政将电子邮件发送到数据库中的多个电子邮件地址

  22. 22

    使用字典提取电子邮件地址。某些键有多封电子邮件,如何发送到所有电子邮件?

  23. 23

    编辑内容后,将邮件从Webform发送到电子邮件地址

  24. 24

    使用Google表格将压缩的Zip文件夹发送到电子邮件

  25. 25

    无法将电子邮件发送到大学电子邮件地址

  26. 26

    Laravel 5.3将邮件发送到多个电子邮件地址

  27. 27

    将确认信模板发送到客户的电子邮件地址

  28. 28

    创建 html 表单将下载链接发送到给定的电子邮件地址?

  29. 29

    在提交时将 Google 表单回复发送到指定的电子邮件地址

热门标签

归档