【问题标题】:How to save IMAP email body text with Get-IMAP NetCmdlets in Powershell?如何在 Powershell 中使用 Get-IMAP NetCmdlets 保存 IMAP 电子邮件正文?
【发布时间】:2018-05-26 09:56:32
【问题描述】:

我正在尝试使用 netcmdlet 捕获多部分和纯文本电子邮件的消息正文。连接成功,电子邮件被提取,我可以毫无问题地保存附件,但我不知道如何保存正文。

import-module "C:\Program Files\nsoftware\NetCmdlets V4\netcmdlets"

$emails = get-imap -Connect $imapconnection -Folder $folder
foreach($msg in $emails)
{
    if($msg.ContentType.StartsWith("multipart"))
    {
        # get message body text for multipart?
    }
    else
    {
        # get message body text for non multipart??
    }
}

编辑

get-imap -Connect $imapconnection -Folder $folder | Get-Member

给予

TypeName: nsoftware.NetCmdlets.Commands.MessageInfoObject

Name                MemberType Definition
----                ---------- ----------
Equals              Method     bool Equals(System.Object obj)
GetHashCode         Method     int GetHashCode()
GetType             Method     type GetType()
ToString            Method     string ToString()
BCC                 Property   string[] BCC {get;set;}
CC                  Property   string[] CC {get;set;}
ContentEncoding     Property   string ContentEncoding {get;set;}
ContentType         Property   string ContentType {get;set;}
Date                Property   string Date {get;set;}
Flags               Property   string Flags {get;set;}
From                Property   string From {get;set;}
FromEmail           Property   string FromEmail {get;set;}
FromFriendlyName    Property   string FromFriendlyName {get;set;}
Id                  Property   string Id {get;set;}
PartContentEncoding Property   string[] PartContentEncoding {get;set;}
PartContentType     Property   string[] PartContentType {get;set;}
PartCount           Property   int PartCount {get;set;}
PartFileName        Property   string[] PartFileName {get;set;}
PartId              Property   string[] PartId {get;set;}
PartMultiPartMode   Property   string[] PartMultiPartMode {get;set;}
PartParameters      Property   string[] PartParameters {get;set;}
PartSize            Property   string[] PartSize {get;set;}
ReplyTo             Property   string ReplyTo {get;set;}
ReplyToEmail        Property   string ReplyToEmail {get;set;}
ReplyToFriendlyName Property   string ReplyToFriendlyName {get;set;}
Size                Property   long Size {get;set;}
Subject             Property   string Subject {get;set;}

【问题讨论】:

  • 我不熟悉这些 cmdlet。您可以使用$msg | Get-Member 查看是否有任何属性看起来像正文内容?您可能需要深入研究一下。文档指出了几种不同的输出类型。
  • 将输出添加到问题
  • $msg | Get-Member 自己返回一个空行(添加到 foreach 循环中)

标签: powershell imap


【解决方案1】:

从文件夹中获取所有消息将返回 MessageInfoObjects 的集合,但要获取电子邮件正文本身,您需要通过将消息 Id 传递给 -View 参数来获取特定消息。您可以从 MessageInfoObject 中获取 Id,因此您可能会有这样的逻辑:

$emailList = Get-IMAP -Connection $conn -Folder INBOX
$currentEmail = Get-IMAP -Connection $conn -Folder INBOX -View $emailList[0].Id

此时 $currentEmail.Text 将返回该邮件的正文(收件箱中的第一封邮件)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-27
    • 1970-01-01
    • 1970-01-01
    • 2013-04-30
    • 2021-08-28
    • 2014-08-22
    • 2023-03-18
    • 2020-06-18
    相关资源
    最近更新 更多