zoukankan      html  css  js  c++  java
  • 邮件发送与字符加密解密

    邮件发送是一个很基本的操作,在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:	estc.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文件便可保证方案二的可靠性。

  • 相关阅读:
    Python基础语法精讲
    使用xlwt 库将数据导入为Excel 表格
    统计指定目录下所有mp4文件的时长(包含子目录下的文件)
    获取一个目录下所有文件(完整路径,要借助os.path.join()方法)
    中国参与MOOC 建设的大学有多少所?
    蒙特卡洛方法应用
    手欠,起了一卦,看那房子的风水,悲剧了
    好无聊,大半夜地找了份传世服务端源码,编着玩
    昨晚房屋的风水
    上午,写了个小东西
  • 原文地址:https://www.cnblogs.com/zqj-blog/p/10316305.html
Copyright © 2011-2022 走看看