使用rest api和powershell转发电子邮件(Azure自动化)

时间:2017-01-11 10:38:19

标签: api powershell

我尝试通过Azure自动化(带有消息ID)将带有附件的电子邮件转发到特定的电子邮件地址。运行代码后,我在底部收到错误消息。我不确定我是否走在正确的轨道上(包括电子邮件发送和发送附件)。也许有更好的方法来做到这一点。 有人可以帮忙吗?

$credObject = Get-AutomationPSCredential -Name "Myscreds"

$url = "https://outlook.office365.com/api/v1.0/me/AAMkADA1MTAAAH5JaL/forward"

$body = "{
""Message"":{
 ""Subject"": ""This is a test"",
 ""Importance"": ""Low"",
 ""Body"": {
 ""ContentType"": ""HTML"",
 ""Content"": ""This is great!""
 },
 ""ToRecipients"": [
 {
 ""EmailAddress"":{
  ""Address"": ""myname@test.com""
  }
 }
 ]
 }}"

Invoke-RestMethod -Uri $url -Method Post -Credential $credobject -ContentType "application/json" -Body $Body

我收到以下错误消息:

Invoke-RestMethod:远程服务器返回错误:(400)Bad Request。 在行:24 char:1 + Invoke-RestMethod -Uri $ url -Method Post -Credential $ credobject -Con ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~     + CategoryInfo:InvalidOperation:(System.Net.HttpWebRequest:HttpWebRequest)[Invoke-RestMethod], 引发WebException     + FullyQualifiedErrorId:WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand

感谢。

2 个答案:

答案 0 :(得分:0)

根据Microsoft documentation,您需要修改您的请求。

https://outlook.office.com/api/v1.0/me/messages/AAMkAGE0Mz8DmAAA=/forward

您似乎忘了在请求中加入/messages/

但是,当您转发邮件时,您似乎想要更改邮件的正文。这更复杂,您需要遵循此工作流程:

  

或者,如果您需要修改要转发的邮件中的任何可更新属性,您可以先create a draft forward message,u pdate the message properties,然后发送回复。

这就是看起来的样子。

首先,制作要转发的邮件的草稿

$request = "https://outlook.office365.com/api/v1.0/me/messages/AAMkADA1MTAAAH5JaL/createforward"
$body = {
  "ToRecipients":[
 {
 ""EmailAddress"":{
  ""Address"": ""myname@test.com""
  }
 }
 ],
  "Comment": "Your sample message here" 
}

回复将包括一些属性,包括新消息的ID。然后,您可以使用它来编辑草稿(更改主题等),然后将其发送出去。如果您需要任何进一步的帮助,请告诉我。

答案 1 :(得分:0)

确定。我的消息ID不正确,这是我的主要问题。一切都解决了。我可以使用消息ID转发带附件的邮件。再次感谢。

$credObject = Get-AutomationPSCredential -Name "mycreds"


$url = "https://outlook.office365.com/api/v1.0/Users('it-test@test.com')/messages/ASHJFKHFUISDFWIzLT=/forward"

$body = "{
 ""Comment"": ""A mail with some attachments (hopefully)"",
 ""ToRecipients"": [
 {
 ""EmailAddress"":{
  ""Address"": ""myname@test.com""
  }
 }
 ]
 }"

Invoke-RestMethod -Uri $url -Method Post -Credential $credobject -ContentType "application/json" -body $body