Power Automate Desktop - Email Anlagen exportieren
Hallo,
ich würde gerne einfach aus einer Office 365 Email Adresse die Anhänge in einen lokalen Ordner auf einem Windows Server exportieren, wenn der Anhang ein PDF ist.
Leider gestaltet sich das Ganze nicht sehr einfach.
Habe mit Power Automate gespielt, da Lizenz vorhanden, aber das funktioniert so nicht, oder ich bin zu dumm.
Habe versucht:
Neuer Flow, Office 365 Outlook, Anlage abrufen v2.
IDs? wo gebe ich den Speicherort an?
oder:
Email Nachrichten verarbeiten, aber das braucht einen IMAP Server mit Basic Auth, aber das kann O365 nicht mehr aktivieren
Flow Exchange Server oder Outlook findet das Konto nicht, obwohl Outlook am Server eingerichtet
Kann mir jemand weiterhelfen?
gruß sd
ich würde gerne einfach aus einer Office 365 Email Adresse die Anhänge in einen lokalen Ordner auf einem Windows Server exportieren, wenn der Anhang ein PDF ist.
Leider gestaltet sich das Ganze nicht sehr einfach.
Habe mit Power Automate gespielt, da Lizenz vorhanden, aber das funktioniert so nicht, oder ich bin zu dumm.
Habe versucht:
Neuer Flow, Office 365 Outlook, Anlage abrufen v2.
IDs? wo gebe ich den Speicherort an?
oder:
Email Nachrichten verarbeiten, aber das braucht einen IMAP Server mit Basic Auth, aber das kann O365 nicht mehr aktivieren
Flow Exchange Server oder Outlook findet das Konto nicht, obwohl Outlook am Server eingerichtet
Kann mir jemand weiterhelfen?
gruß sd
Please also mark the comments that contributed to the solution of the article
Content-ID: 668818
Url: https://administrator.de/contentid/668818
Printed on: December 5, 2024 at 16:12 o'clock
6 Comments
Latest comment
Powerautomate Schrott, dann doch lieber gleich "richtig" programmieren ...
Serverseitige Outlook-Regel zur Weiterleitung des Betreffs an eine Externe E-Mail-Adresse
Script odgl ausführen, wenn E-Mail eingeht
Eingehende Emails in Outlook mit automatischer Mail inkl aktueller Uhrzeit und Betreff beantworten?
E-Mail Client für Kommandozeile
Outlook - Mehrere E-Mails gleichzeitig mit einem vorgegebenen Text beantworten
Serverseitige Outlook-Regel zur Weiterleitung des Betreffs an eine Externe E-Mail-Adresse
Script odgl ausführen, wenn E-Mail eingeht
Eingehende Emails in Outlook mit automatischer Mail inkl aktueller Uhrzeit und Betreff beantworten?
E-Mail Client für Kommandozeile
Outlook - Mehrere E-Mails gleichzeitig mit einem vorgegebenen Text beantworten
Servus,
ich bin auch noch nie ein Fan von der Klicki-Bunti-Wiese aus dem Hause MS gewesen (schnell ist da was anderes), deswegen hier mal etwas Powershell-Code der von ungelesenen Mails aus dem Posteingang die *.PDF Anhänge in einen lokalen Ordner der Wahl extrahiert, sollten dort bereits Attachments mit dem Namen liegen wird den Dateinamen ein Zähler angehängt (braucht man das nicht kann man das natürlich jederzeit an eigene Bedürfnisse anpassen).
(und nein das hat keine KI geschrieben, das mache ich immer noch mit eigenem Grips, leider eine aussterbende Spezies )
Wer es gebrauchen kann, viel Spaß damit.
Grüße Uwe
ich bin auch noch nie ein Fan von der Klicki-Bunti-Wiese aus dem Hause MS gewesen (schnell ist da was anderes), deswegen hier mal etwas Powershell-Code der von ungelesenen Mails aus dem Posteingang die *.PDF Anhänge in einen lokalen Ordner der Wahl extrahiert, sollten dort bereits Attachments mit dem Namen liegen wird den Dateinamen ein Zähler angehängt (braucht man das nicht kann man das natürlich jederzeit an eigene Bedürfnisse anpassen).
# mailbox user
$userid = 'myuser@xxxxxxx.onmicrosoft.com'
# tenant FQDN
$tenant = 'xxxxxxx.onmicrosoft.com'
# targetfolder for attachments
$download_folder = 'W:\attachments'
# ============================
# stop on error
$ErrorActionPreference = 'Stop'
# install module if it does not exist
if(!(Get-Module -ListAvailable -Name Microsoft.Graph.Mail)){
# install module for current user
Install-Module Microsoft.Graph.Mail -Force -Scope CurrentUser
}
# create output folder
if(!(Test-Path $download_folder -PathType Container)){
New-Item -type dir -Path $download_folder -Force | out-null
}
# import module
Import-Module Microsoft.Graph.Mail
# connect to MG Graph with ReadWrite Permissions to mail scope (GUI-Login)
Connect-MgGraph -Tenant $tenant -Scopes Mail.ReadWrite -NoWelcome
# ======= Possible automated login methods (needs precreated azure app registration with app password or certificate) ==========
# connect with *.pfx certificate from file
#$client_id = 'XXXXXXXXXXXXXXXXXXXXX'
#$certificate_file = 'D:\user.pfx'
#$certificate_password = 'GEHEIM'
#Connect-MgGraph -Tenant $tenant -ClientId $client_id -Certificate ([X509Certificate]::new($certificate_file,$certificate_password)) -NoWelcome
# connect with certificate from user cerificate store by thumbprint
#$client_id = 'XXXXXXXXXXXXXXXXXXXXX'
#$certficate_thumbprint = 'XXXXXXXXXXXXXXXXXXXXXXXXXX'
#Connect-MgGraph -Tenant $tenant -ClientId $client_id -CertificateThumbprint $certificate_thumbprint -NoWelcome
# connect with application credentials (app password)
#$client_id = 'XXXXXXXXXXXXXXXXXXXXX'
#$client_password = 'XXXXXXXXXXXXXXXXXXXXXXXX'
#Connect-MgGraph -Tenant $tenant -ClientSecretCredential (new-Object PSCredential($client_id,(ConvertTo-SecureString $client_password -AsPlainText -Force))) -nowelcome
# ==============================
# get unread messages with attachments from inbox folder
foreach($message in Get-MgUserMailFolderMessage -UserId $userid -MailFolderId inbox -All -Property HasAttachments,IsRead,subject,sender,parentfolderid -Filter "isRead eq false and HasAttachments eq true"){
# process each pdf attachment
foreach($attachment in Get-MgUserMailFolderMessageAttachment -UserId $userid -MessageId $message.id -MailFolderId $message.ParentFolderId -All -Filter "contentType eq 'application/pdf' and isInline eq false and endswith(name,'.pdf')"){
try{
# create targetpath in downloadfolder
$targetpath = join-path $download_folder $attachment.Name
# generate new file name if file with the same name already exists
$cnt = 0
while(Test-Path $targetpath -PathType Leaf){
$targetpath = join-path $download_folder "$([IO.Path]::GetFileNameWithoutExtension($attachment.Name))_$('{0:D3}' -f ((++$cnt)))$([IO.Path]::GetExtension($attachment.Name))"
}
write-host "Saving attachment '$($attachment.Name)' from message with subject '$($message.Subject)' to '$targetpath'." -F Green
# save attachment to download folder
[IO.File]::WriteAllBytes($targetpath,[Convert]::FromBase64String($attachment.AdditionalProperties.contentBytes))
}catch{
write-host $_.Exception.Message -F Red
}
}
# Mark message as read
Update-MgUserMessage -MessageId $message.id -UserId $userid -IsRead | out-null
}
# disconnect from MS-Graph
Disconnect-MgGraph | out-null
Wer es gebrauchen kann, viel Spaß damit.
Grüße Uwe
Zitat von @silent-daniel:
Nur speicher er mir auch PNG und JPG aus der Signatur ab, sollte die zeile sein:
gruß sd
Nur speicher er mir auch PNG und JPG aus der Signatur ab, sollte die zeile sein:
foreach($attachment in Get-MgUserMailFolderMessageAttachment -UserId $userid -MessageId $message.id -MailFolderId $message.ParentFolderId -All -Filter "ContentType eq 'application/pdf' and IsInline eq false")
gruß sd
Dann wurde da vermutlich bei den Dateien der Mimetype falsch erkannt oder vom MTA falsch hinterlegt, kannst du aber fixen indem du zusätzlich die Dateierweiterung prüfst.
foreach($attachment in Get-MgUserMailFolderMessageAttachment -UserId $userid -MessageId $message.id -MailFolderId $message.ParentFolderId -All -Filter "contentType eq 'application/pdf' and isInline eq false and endswith(name, '.pdf')"){
Grüße Uwe