Откуда эти имена файлов? - PullRequest
       2

Откуда эти имена файлов?

0 голосов
/ 21 сентября 2018

У меня есть сценарий, который обрабатывает CUBES, и если в аргументе не указано имя куба, сгенерированный файл журнала не получает имя CUBE, поскольку оно пустое (файл также не содержит никакого содержимого), поэтому все работает нормальноЗа исключением того, что я заметил, что когда я получаю электронное письмо с журналом процесса, эти странные имена, за которыми следуют цифры, добавляются в прикрепленный файл .. (ATT96614 и т. д.)

вот сгенерированный журнал:

log generated with no cube name as expected

вот электронное письмо с прикрепленным журналом ... но с каким-то добавленным случайным именем и номерами

log in email with random name and numbers

вот функция отправки электронной почты, которую я использую:

    Function Send-Email {
    Param (
        [Parameter(`
            Mandatory=$true)]
        [String]$SendTo,
        [Parameter(`
            Mandatory=$true)]
        [String]$Subject,
        [Parameter(`
            Mandatory=$false)]
        [String]$Body,
        [Parameter(`
            Mandatory=$true)]
        [String]$EmailFrom,
        [Parameter(`
            mandatory=$false)]
        [String]$attachment,
        [Parameter(`
            mandatory=$true)]
        [String]$Username,
        [Parameter(`
            mandatory=$true)]
        [String]$Password
    )

        $SMTPServer = $SmtpServer 
        $SMTPMessage = New-Object System.Net.Mail.MailMessage($EmailFrom,$SendTo,$Subject,$Body)
        if ($attachment -ne $null) {
            $SMTPattachment = New-Object System.Net.Mail.Attachment($attachment)
            $SMTPMessage.Attachments.Add($SMTPattachment)
        }
        $SMTPClient = New-Object Net.Mail.SmtpClient($SMTPServer, $SmtpPort) 
        $SMTPClient.EnableSsl = $true 
        $SMTPClient.Credentials = New-Object System.Net.NetworkCredential($Username, $Password); 
        $SMTPClient.Send($SMTPMessage)
        Remove-Variable -Name SMTPClient
        Remove-Variable -Name Username
        Remove-Variable -Name Password
}

вот отправка электронной почты, которая называется:

Send-EMail -EmailFrom $From_Email -SendTo $To_Email -Body "Processing job failed!`r`n`r`nPerhaps the CUBE or Process Server is invalid?" -Subject $Job_Failed_Email_Subject -attachment $process_output -Username $SmtpUser -Password $SmtpPassword

любая идея?

1 Ответ

0 голосов
/ 21 сентября 2018

Когда файлы прикрепляются к электронным письмам, имена файлов записываются в заголовки MIME.Предполагается, что метод, который вы используете для прикрепления файла (предоставления имени файла соответствующему конструктору Attachment), сбрасывает имя и генерирует его собственное

Попробуйте самостоятельно установить имя для вложения (послеВы создаете его, прежде чем добавить его):

$SMTPattachment.ContentDisposition.FileName = "log.txt";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...