郵件發送與字符加密解密


郵件發送是一個很基本的操作,在powershell中有兩種實現方式,第一種是使用自帶的“Send-MailMessage“命令,第二種是使用由.NET提供的方法發送郵件。在介紹兩種發送郵件的方法之前,先簡單的解釋一下常聽到的兩種協議:


 

一、郵件相關的協議

  1、SMTP

    簡單郵件傳輸協議,端口號25,用於發送郵件

  2、POP3

    第三版郵局協議,端口號110,用於連接到郵件服務器上下載郵件

  3、IMAP

    交互式郵件訪問協議,端口號是143,作用是下載郵件,但整體上IMAP協議優於POP3協議

 

二、Send-MailMessage

  1、優缺點比較

    優點:在命令行即可實現郵件的發送

    缺點:難以解決用戶自動認證問題,利用憑證發送郵件,每次需要手動輸入密碼,難以實現自動化

  2、常用參數

  

  3、使用

Send-MailMessage -to "TO@126.com" -From "FROM@163.com" -Body "nei rong" -SmtpServer smtp.163.com -Subject "minglinghang" -Credential FROM@163.com

  輸入密碼,即可發送成功

【注】:常用郵箱的SMTP地址點這里

 

 三、.NET提供的方法

實現過程:

#定義發送郵件的服務器
$smtpServer = "smtp.163.com"
$smtpUser = "From@163.com"
$smtpPassword = "mimabugaosuni"

#創建郵件對象,由於設置郵件的各種信息
$mail = New-Object System.Net.Mail.MailMessage

#設置郵件信息
$MailAddress="From@163.com"
$MailtoAddress="To@126.com"
$mail.From = New-Object System.Net.Mail.MailAddress($MailAddress)
$mail.To.Add($MailtoAddress)
$mail.Subject = "zhegeshi zhu ti";
$mail.Priority = "High"  #默認是普通
$mail.Body = "Hello World"
$filename="C:\test\c.txt"    #添加附件
$attachment = new-Object System.Net.Mail.Attachment($filename)
$mail.Attachments.Add($attachment)

#發送
$smtp = New-Object System.Net.Mail.SmtpClient -argumentList $smtpServer
$smtp.Credentials = New-Object System.Net.NetworkCredential -argumentList $smtpUser,$smtpPassword
$smtp.Send($mail)

  執行上述代碼即可發送成功,並且便於實現自動化,但是最致命的一點是密碼是明文的。

  對此進行優化,可以將密碼進行加密然后存入某個文件,然后再進行解密傳到參數中,這樣做安全程度是得到了一定的提高,但是還存在一定的問題,比如黑客獲取到加密的密碼,他可以解密看到明文密碼,所有這種方法需要保護好密碼文件的安全性。

 

四、明文與密文間的轉換

  1、將明文轉成密文

“passwd” |  ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString  > passwd.txt

  2、將密文轉成明文

$miwen =cat passwd.txt
$sec = $miwen | ConvertTo-SecureString
$ptr = [System.Runtime.InteropServices.Marshal]::SecureStringToGlobalAllocUnicode($sec)
$mingwen = [System.Runtime.InteropServices.Marshal]::PtrToStringUni($ptr)

  保護好passwd.txt文件便可保證方案二的可靠性。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM