它将发送包含Approve and Reject
投票选项的电子邮件。但我想发送Yes and No
或我自己的自定义选项。我试过改变动词流但没有运气。
这是我的PowerShell代码:
$SentTo = "abc@xyz.com"
$username="abc1"
$password="abc1"
$VerbSetting = "" | Select DisableReplyAll,DisableReply,DisableForward,DisableReplyToFolder
$VerbSetting.DisableReplyAll = $false
$VerbSetting.DisableReply = $false
$VerbSetting.DisableForward = $false
$VerbSetting.DisableReplyToFolder = $false
Import-Module -Name 'C:\Program Files\Microsoft\Exchange\Web Services\2.0\Microsoft.Exchange.WebServices.dll'
## Create Exchange Service Object
$service = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService -ArgumentList Exchange2010
$service.Credentials = New-Object Microsoft.Exchange.WebServices.Data.WebCredentials -ArgumentList $username, $password
$Provider=New-Object Microsoft.CSharp.CSharpCodeProvider
$Compiler=$Provider.CreateCompiler()
$Params=New-Object System.CodeDom.Compiler.CompilerParameters
$Params.GenerateExecutable=$False
$Params.GenerateInMemory=$True
$Params.IncludeDebugInformation=$False
$Params.ReferencedAssemblies.Add("System.DLL") | Out-Null
$TASource=@'
namespace Local.ToolkitExtensions.Net.CertificatePolicy{
public class TrustAll : System.Net.ICertificatePolicy {
public TrustAll() {
}
public bool CheckValidationResult(System.Net.ServicePoint sp,
System.Security.Cryptography.X509Certificates.X509Certificate cert,
System.Net.WebRequest req, int problem) {
return true;
}
}
}
'@
$TAResults=$Provider.CompileAssemblyFromSource($Params,$TASource)
$TAAssembly=$TAResults.CompiledAssembly
## We now create an instance of the TrustAll and attach it to the ServicePointManager
$TrustAll=$TAAssembly.CreateInstance("Local.ToolkitExtensions.Net.CertificatePolicy.TrustAll")
[System.Net.ServicePointManager]::CertificatePolicy=$TrustAll
$uri=[system.URI] "https://web.xyz.com/EWS/Exchange.asmx"
$service.Url = $uri
function Get-VerbStream{
param (
$VerbSettings = "$( throw 'VerbSettings is a mandatory Parameter' )"
)
process{
$Header = "02010600000000000000"
$ReplyToAllHeader = "055265706C790849504D2E4E6F7465074D657373616765025245050000000000000000"
$ReplyToAllFooter = "0000000000000002000000660000000200000001000000"
$ReplyToHeader = "0C5265706C7920746F20416C6C0849504D2E4E6F7465074D657373616765025245050000000000000000"
$ReplyToFooter = "0000000000000002000000670000000300000002000000"
$ForwardHeader = "07466F72776172640849504D2E4E6F7465074D657373616765024657050000000000000000"
$ForwardFooter = "0000000000000002000000680000000400000003000000"
$ReplyToFolderHeader = "0F5265706C7920746F20466F6C6465720849504D2E506F737404506F737400050000000000000000"
$ReplyToFolderFooter = "00000000000000020000006C00000008000000"
$ApproveOption = "0400000007417070726F76650849504D2E4E6F74650007417070726F766500000000000000000001000000020000000200000001000000FFFFFFFF"
$RejectOption= "040000000652656A6563740849504D2E4E6F7465000652656A65637400000000000000000001000000020000000200000002000000FFFFFFFF"
$VoteOptionExtras = "0401055200650070006C00790002520045000C5200650070006C007900200074006F00200041006C006C0002520045000746006F007200770061007200640002460057000F5200650070006C007900200074006F00200046006F006C00640065007200000741007000700072006F00760065000741007000700072006F007600650006520065006A0065006300740006520065006A00650063007400"
if($VerbSetting.DisableReplyAll){
$DisableReplyAllVal = "00"
}
else{
$DisableReplyAllVal = "01"
}
if($VerbSetting.DisableReply){
$DisableReplyVal = "00"
}
else{
$DisableReplyVal = "01"
}
if($VerbSetting.DisableForward){
$DisableForwardVal = "00"
}
else{
$DisableForwardVal = "01"
}
if($VerbSetting.DisableReplyToFolder){
$DisableReplyToFolderVal = "00"
}
else{
$DisableReplyToFolderVal = "01"
}
$VerbValue = $Header + $ReplyToAllHeader + $DisableReplyAllVal + $ReplyToAllFooter + $ReplyToHeader + $DisableReplyVal +$ReplyToFooter + $ForwardHeader + $DisableForwardVal + $ForwardFooter + $ReplyToFolderHeader + $DisableReplyToFolderVal + $ReplyToFolderFooter + $ApproveOption + $RejectOption + $VoteOptionExtras
return $VerbValue
}
}
function hex2binarray($hexString){
$i = 0
[byte[]]$binarray = @()
while($i -le $hexString.length - 2){
$strHexBit = ($hexString.substring($i,2))
$binarray += [byte]([Convert]::ToInt32($strHexBit,16))
$i = $i + 2
}
return ,$binarray
}
$VerbStreamProp = new-object Microsoft.Exchange.WebServices.Data.ExtendedPropertyDefinition([Microsoft.Exchange.WebServices.Data.DefaultExtendedPropertySet]::Common,0x8520, [Microsoft.Exchange.WebServices.Data.MapiPropertyType]::Binary)
$VerbSettingValue = get-VerbStream $VerbSetting
$EmailMessage = New-Object Microsoft.Exchange.WebServices.Data.EmailMessage -ArgumentList $service
$EmailMessage.Subject = "Message Subject"
#Add Recipients
$EmailMessage.ToRecipients.Add($SentTo)
$EmailMessage.Body = New-Object Microsoft.Exchange.WebServices.Data.MessageBody
$EmailMessage.Body.BodyType = [Microsoft.Exchange.WebServices.Data.BodyType]::HTML
$EmailMessage.Body.Text = "Body"
$EmailMessage.SetExtendedProperty($VerbStreamProp,(hex2binarray $VerbSettingValue))
$EmailMessage.SendAndSaveCopy()
答案 0 :(得分:3)
当您使用其他人的代码时,请务必在代码中注明它,以便任何查看它的人都可以知道背景。如果你按照以下方式使用它,以下应该可以正常工作
class UserGroupViewTestSuite(BareSetupClass):
@classmethod
def setUpTestData(cls):
super(UserGroupViewTestSuite, cls).setUpTestData()
cls.user = Client()
cls.user.login(username="test_user@test.com", password="password")
模块
$Verbs = @()
$Verbs += "Yes"
$Verbs += "No"
$Verbs += "Other Option"
Send-VoteMail -MailboxName mailbox@domain.com -To user@domain.com -Subject "test Vote" -Verbs $Verbs