← Back to list

Automate Outlook Email Creation on macOS with Body Text and Attachments from Terminal

If you often work in the macOS Terminal and want to quickly draft an Outlook email — complete with body text and file attachments — this…

Konstantinos Patronas · 2025-07-08 19:17 · 34 claps · 2.3 min read paywalled
#macos-automation #productivity-tools #applescript #command-line-tips #email-workflow
Open on Medium ↗
Wiki topics: ⏱️ · Productivity 💑 · Relationships 🥊 · Combat Sports

Automate Outlook Email Creation on macOS with Body Text and Attachments from Terminal

If you often work in the macOS Terminal and want to quickly draft an Outlook email — complete with body text and file attachments — this guide is for you.

Below, you’ll learn how to create a smart Bash script that:

✅ Uses standard input (stdin) as the email body, ✅ Accepts any number of attachments as parameters, ✅ Converts all file paths to absolute paths, so you don’t have to worry about where you run it from.

💡 Why This Is Useful

This script is perfect for:

  • Automating reports
  • Sharing logs or exports
  • Combining scripts with email delivery

You can pipe output from any command directly into your email body and attach related files — all in one go.

The Script

Create a file called outlook.sh:

#!/usr/bin/env bash

# Read stdin into bodyText (if any)
if [ -t 0 ]; then
  bodyText=""
else
  bodyText=$(cat)
fi

# Validate attachments and build AppleScript commands
attachmentScript=""
for file in "$@"; do
  # Convert to absolute path
  absPath="$(cd "$(dirname "$file")"; pwd)/$(basename "$file")"
  if [[ ! -f "$absPath" ]]; then
    echo "Error: File not found: $file"
    exit 1
  fi
  attachmentScript+="
    make new attachment at newMessage with properties {file:(POSIX file \"$absPath\")}"
done

# Build and run AppleScript
osascript <<END
tell application "Microsoft Outlook"
    set newMessage to make new outgoing message with properties {subject:"Report"}
$(if [[ -n "$bodyText" ]]; then echo "set content of newMessage to \"$(printf "%s" "$bodyText" | sed 's/"/\\"/g')\""; fi)
$attachmentScript
    open newMessage
    activate
end tell
END

🛠️ Making It Executable

Make the script executable:

chmod +x outlook.sh

⚙️ How to Use It

1️⃣ Just Body Text

Send content to Outlook via a pipe:

echo "Hello, this is the body of the email." | ./outlook.sh

Result: A new email draft with the text as the body and no attachments.

2️⃣ Just Attachments

Attach one or more files:

./outlook.sh ./report.pdf ./summary.txt

Result: A new email draft with the files attached and an empty body.

3️⃣ Body Text + Attachments

Combine both:

echo "Here is the report you requested." | ./outlook.sh ./report.pdf ./data.csv

Result: A new email draft with the text as the body and the files attached.

The script automatically converts all relative paths to absolute paths, so:

./outlook.sh ./file.txt

and

./outlook.sh /Users/you/Documents/file.txt

both work identically.

🧠 How It Works

  • Stdin check: if [ -t 0 ]; then detects whether stdin is empty.
  • Body text capture: If you pipe text, it’s read into bodyText.
  • Path conversion: Each file path is turned into an absolute path with:
absPath="$(cd "$(dirname "$file")"; pwd)/$(basename "$file")"
  • AppleScript integration: AppleScript builds the email draft in Microsoft Outlook, sets the content, and attaches the files.

✅ Example Workflow

Here’s a real example that produces a professional email draft in seconds:

echo "Dear team,

Attached are this week's reports.

Best regards,
Kostas
" | ./outlook.sh ./weekly_report.pdf ./metrics.xlsx

🎯 Conclusion

With this simple script, you can seamlessly bridge the gap between your macOS Terminal workflows and Microsoft Outlook. Whether you need to quickly draft emails with dynamic content, attach multiple reports, or automate recurring communications, this approach saves time and reduces repetitive clicks.

Feel free to customize the script further — adding recipients, setting custom subjects, or integrating it into larger automation pipelines. With just a few lines of Bash and AppleScript, you unlock a powerful productivity boost right from your command line.


메타데이터
post_id
cdd3065a968c
slug
automate-outlook-email-creation-on-macos-with-body-text-and-attachments-from-terminal-cdd3065a968c
url
https://medium.com/@kpatronas/automate-outlook-email-creation-on-macos-with-body-text-and-attachments-from-terminal-cdd3065a968c
canonical_url
https://medium.com/@kpatronas/automate-outlook-email-creation-on-macos-with-body-text-and-attachments-from-terminal-cdd3065a968c
author_url
https://medium.com/@kpatronas
status
ok
fetched_at
2026-07-30 23:41:35