• powershell 发邮件


    参考文章:https://www.cnblogs.com/lsgxeva/p/9309217.html

    文章内容:

    问:如何用powershell发邮件?
    答:
    Send-MailMessage   -Subject "主题"       `
    -From  "你的hotmail账户@hotmail.com"   -To  "你的qq邮箱@qq.com"   `
    -SmtpServer   "smtp.live.com"  -Port 587  -UseSsl    -Credential  "你的hotmail账户@hotmail.com"  `
    -Attachments $附件 -BodyAsHTML -body $HTML邮件内容

    注意:
    1 用xxx@QQ.com + 你的qq密码 + 上述命令 发邮件是不行的。因为为了qq密码安全,腾讯要求独立的邮箱密码。  
    2 从qq邮箱发件,默认也不行。被关了,需要在设置中开启smtp。
    3 powershell 3.0 和 以上 才支持port参数。对于win7,你需要先安装ps最新版

    我的代码:

    # 简单版
    Send-MailMessage -Subject "powershell send Email" ` -From "taozXX@hotmail.com" -To "3845XX@qq.com" ` -SmtpServer "smtp.live.com" -Port 587 -UseSsl -Credential "taozXX@hotmail.com" ` -BodyAsHTML -body "powershell send Email from taozXX@hotmail.com to 3845XX@qq.com" #弹出密码框,填写hotmail密码
    #-SmtpServer   "smtp.office365.com"  -Port 587  -UseSsl    -Credential  "taozXXX@hotmail.com" `
    # 函数版,并且加了安全机制
    # Write-Output 不要随便用,会有管道传递,Write-Host功能少,只是简单打印
    
    
    function SendEmail {
        param (
            $SmtpServer = 'smtp.office365.com', # This is the address of the Office 365 SMTP server we will be using.
            $SmtpPort = '587', #This is the Port of the Office 365 SMTP server we will be using.
            $SmtpUser = 'taoXXX@hotmail.com', # Specify your Office 365 User ID
            #$SmtpPassword = '', # Specify your Office 365 password, but not secure, more information belower 
            $SmtpSecureFile = 'secure.file', # Specify your password secure.file, more secure
            $MailFrom = 'taoXXX@hotmail.com', # Specify the Source Email ID
            [Parameter(Mandatory=$true)]$MailTo, # Specify the users to which the mails should be sent. $MailTo = 't-shtao@microsoft.com'
            [Parameter(Mandatory=$true)]$MailSubject, # This is the Mail Subject line. $MailSubject = "powershell send Email by t-shtao"
            $MailBody, # This is the Mail body. $MailBody = "Hello <span style='font-weight:bold;'>Microsoft</span>.",
            $MailAttachments # This is the Mail attachments' file path. $MailAttachments = "C:PBID-qsattachmentsattachment01.txt"
        )
        # get Email secure password by [SecureString]
        [String]$SmtpPassword = SecurefileToString -SecureFile $SmtpSecureFile
        # make credentials by Email secure password
        $Credentials = New-Object System.Management.Automation.PSCredential -ArgumentList $SmtpUser, $($smtpPassword | ConvertTo-SecureString -AsPlainText -Force) 
        # MailParameters setting
        $MailParameters = @{
            Subject=$MailSubject
            From=$MailFrom
            To=$MailTo
            SmtpServer=$SmtpServer
            Port=$SmtpPort
            UseSsl=$true
            Credential=$Credentials
            BodyAsHtml=$true
        }
        # add html body
        if ($MailBody) { $MailParameters.Add('Body',$MailBody) }
        # add attachments
        if ($MailAttachments) { $MailParameters.Add('Attachments',$MailAttachments) }
        # send Email
        Send-MailMessage @MailParameters
        # send successfully. Write some information
        Write-Host "Send Successfully. SmtpServer:$SmtpServer, From:$MailFrom, To:$MailTo"
    }
    
    
    function StringToSecurefile {
        # [string]password convert to secure.file
        param (
            $OrdinaryString, # the string need secure
            $SecureFile = 'secure.file' # storeage of secure string
        )
        # string convert to file
        $OrdinaryString | ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString | Out-File -FilePath $SecureFile
        Write-Host "password has converted to $SecureFile"
    }
    
    function SecurefileToString {
        # secure.file convert to [string]password
        param (
            $SecureFile = 'secure.file' # storeage of secure string
        )
        # file convert to secure string
        $secureString = Get-Content -Path $SecureFile | ConvertTo-SecureString
        $ptr = [System.Runtime.InteropServices.Marshal]::SecureStringToGlobalAllocUnicode($secureString)
        $OrdinaryString = [System.Runtime.InteropServices.Marshal]::PtrToStringUni($ptr) 
        Write-Host "password has read"
        return $OrdinaryString
    }
    
    
    # make password's secure.file by visible password string. run only first 
    # StringToSecurefile -OrdinaryString "password" -SecureFile "secure.file"
    
    # send Email, [Mandatoty]MailTo, [Mandatory]MailSubject, MailBody, MailAttachments
    SendEmail -MailTo "tXXX@microsoft.com" -MailSubject "powershell send Email" `
        -MailBody "Hello <span style='font-weight:bold;'>Microsoft</span>." `
        -MailAttachments "C:PBID-qsattachmentsattachment01.txt"
    
    
    
     
  • 相关阅读:
    C# 把带有父子关系的数据转化为------树形结构的数据 ,以及 找出父子级关系的数据中里面的根数据Id
    基于角色的菜单按钮权限的设计及实现
    基于记忆性的中值滤波O(r)与O(1)复杂度的算法实现
    Canny算法检测边缘
    图像平滑去噪之高斯滤波器
    运动元素提取,基于帧间差分与背景差分
    基于RGB与HSI颜色模型的图像提取法
    基于阈值的灰度图像提取法
    C语言深入学习
    大津法实现图像二值化
  • 原文地址:https://www.cnblogs.com/taoshiqian/p/10138014.html
Copyright © 2020-2023  润新知