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文件便可保证方案二的可靠性。

  • 相关阅读:
    回调函数(C语言)
    main函数的参数(一)
    术语,概念
    [LeetCode] Invert Binary Tree
    关于overload和override
    第一个只出现一次的字符
    Manacher算法----最长回文子串
    C++对象模型
    回文判断
    字符串转换成整数
  • 原文地址:https://www.cnblogs.com/zqj-blog/p/10316305.html
Copyright © 2011-2022 走看看