mailslurp-examples - curl-imap-smtp

https://github.com/mailslurp/examples

Table of Contents

curl-imap-smtp/smtp-send.sh

#!/bin/bash
set -e
error_handling() {
    echo "ERROR occurred"
    exit 1
}

trap 'error_handling' ERR
# SMTP server details
response=$(curl -sXPOST "https://api.mailslurp.com/inboxes?inboxType=SMTP_INBOX" -H"x-api-key:$API_KEY")
INBOX_ID=$(echo "$response" | jq -r '.id')
EMAIL_ADDRESS=$(echo "$response" | jq -r '.emailAddress')

# download access details for an inbox as .env file and source
access=$(curl -sXGET "https://api.mailslurp.com/inboxes/imap-smtp-access?inboxId=$INBOX_ID" -H"x-api-key:$API_KEY")
SMTP_USERNAME=$(echo "$access" | jq -r '.smtpUsername')
SMTP_PASSWORD=$(echo "$access" | jq -r '.smtpPassword')

# Sender and recipient email addresses
RECIPIENT_EMAIL="$EMAIL_ADDRESS"
SENDER_EMAIL="$EMAIL_ADDRESS"

#<gen>curl_smtp_send
# Email content
cat <<EOF >>email.txt
From: Jack <$SENDER_EMAIL>
To: Joe <$RECIPIENT_EMAIL>
Subject: SMTP example
Date: Mon, 7 Nov 2016 03:45:06

Dear Joe,
How splendid life is.
EOF
# Send email using curl
curl -v --url "smtp://mxslurp.click:2525" \
     --user "$SMTP_USERNAME:$SMTP_PASSWORD" \
     --mail-from "$SENDER_EMAIL" \
     --mail-rcpt "$RECIPIENT_EMAIL" \
     --upload-file email.txt
#</gen>
curl -v -XGET "https://api.mailslurp.com/waitForLatestEmail?inboxId=$INBOX_ID&unreadOnly=true&apiKey=$API_KEY"

curl-imap-smtp/smtp-delivery-starttls.sh

#!/bin/bash
set -e
error_handling() {
    echo "ERROR occurred"
    exit 1
}

trap 'error_handling' ERR
# SMTP server details
response=$(curl -sXPOST "https://api.mailslurp.com/inboxes?inboxType=SMTP_INBOX" -H"x-api-key:$API_KEY")
INBOX_ID=$(echo "$response" | jq -r '.id')
EMAIL_ADDRESS=$(echo "$response" | jq -r '.emailAddress')

# Sender and recipient email addresses
SENDER_EMAIL="test@mailslurp.dev"
RECIPIENT_EMAIL="$EMAIL_ADDRESS"

# Email content
SUBJECT="Test Email"
echo "Subject: $SUBJECT" > email.txt

echo "---------------- STARTTLS"
#<gen>curl_smtp_delivery_starttls
# Deliver email using curl with STARTTLS
curl -v --url "smtp://mailslurp.mx:2587" \
     --mail-from "$SENDER_EMAIL" \
     --mail-rcpt "$RECIPIENT_EMAIL" \
     --upload-file email.txt \
     --ssl-reqd
#</gen>
curl -v -XGET "https://api.mailslurp.com/waitForLatestEmail?inboxId=$INBOX_ID&unreadOnly=true&apiKey=$API_KEY"

curl-imap-smtp/smtp-delivery-smtps.sh

#!/bin/bash
set -e
error_handling() {
    echo "ERROR occurred"
    exit 1
}

trap 'error_handling' ERR
# SMTP server details
response=$(curl -sXPOST "https://api.mailslurp.com/inboxes?inboxType=SMTP_INBOX" -H"x-api-key:$API_KEY")
INBOX_ID=$(echo "$response" | jq -r '.id')
EMAIL_ADDRESS=$(echo "$response" | jq -r '.emailAddress')

# Sender and recipient email addresses
SENDER_EMAIL="test@mailslurp.dev"
RECIPIENT_EMAIL="$EMAIL_ADDRESS"

# Email content
SUBJECT="Test Email"
echo "Subject: $SUBJECT" > email.txt

echo "---------------- SMTPS"
#<gen>curl_smtp_delivery_smtps
# Deliver email using curl with SMTPS
curl -v --url "smtps://mailslurp.mx:465" \
     --mail-from "$SENDER_EMAIL" \
     --mail-rcpt "$RECIPIENT_EMAIL" \
     --upload-file email.txt \
#</gen>
curl -v -XGET "https://api.mailslurp.com/waitForLatestEmail?inboxId=$INBOX_ID&unreadOnly=true&apiKey=$API_KEY"
echo "---------------- SMTPS encrypted"
#<gen>curl_smtp_delivery_smtps_encrypted
# Deliver email using curl with SMTPS encrypted
curl -v --url "smtps://mailslurp.mx:465" \
     --mail-from "$SENDER_EMAIL" \
     --mail-rcpt "$RECIPIENT_EMAIL" \
     --upload-file email.txt \
     --ssl-reqd
#</gen>
curl -v -XGET "https://api.mailslurp.com/waitForLatestEmail?inboxId=$INBOX_ID&unreadOnly=true&apiKey=$API_KEY"

curl-imap-smtp/smtp-delivery-insecure.sh

#!/bin/bash
set -e
error_handling() {
    echo "ERROR occurred"
    exit 1
}

trap 'error_handling' ERR
# SMTP server details
response=$(curl -sXPOST "https://api.mailslurp.com/inboxes?inboxType=SMTP_INBOX" -H"x-api-key:$API_KEY")
INBOX_ID=$(echo "$response" | jq -r '.id')
EMAIL_ADDRESS=$(echo "$response" | jq -r '.emailAddress')

# Sender and recipient email addresses
SENDER_EMAIL="test@mailslurp.dev"
RECIPIENT_EMAIL="$EMAIL_ADDRESS"

# Email content
SUBJECT="Test Email"
echo "Subject: $SUBJECT" > email.txt

echo "---------------- SMTP"
#<gen>curl_smtp_delivery
# Deliver email using curl insecure
curl -v --url "smtp://mxslurp.click:2525" \
     --mail-from "$SENDER_EMAIL" \
     --mail-rcpt "$RECIPIENT_EMAIL" \
     --upload-file email.txt \
#</gen>
curl -v -XGET "https://api.mailslurp.com/waitForLatestEmail?inboxId=$INBOX_ID&unreadOnly=true&apiKey=$API_KEY"

curl-imap-smtp/mailserver-access.sh

#!/usr/bin/env bash
set -e
error_handling() {
    echo "ERROR occurred"
    exit 1
}

trap 'error_handling' ERR
response=$(curl -sXPOST "https://api.mailslurp.com/inboxes?inboxType=SMTP_INBOX" -H"x-api-key:$API_KEY")
INBOX_ID=$(echo "$response" | jq -r '.id')
#<gen>curl_get_imap_inbox_access_env
# download access details for an inbox as .env file and source
curl -o .env -sXGET "https://api.mailslurp.com/inboxes/imap-smtp-access/env?inboxId=$INBOX_ID" -H"x-api-key:$API_KEY"
# source the .env and connect using variables
source .env
#</gen>
# assert .env contains IMAP_USERNAME=...
grep IMAP_USERNAME .env
#<gen>curl_get_imap_smtp
# get imap and smtp access details for your account
curl -sXGET "https://api.mailslurp.com/inboxes/imap-smtp-access" -H"x-api-key:$API_KEY"
#</gen>
#<gen>curl_get_imap_username
# get username etc
curl -sXGET "https://api.mailslurp.com/inboxes/imap-smtp-access" \
  -H"x-api-key:$API_KEY" | jq -j '.imapUsername'
#</gen>
#<gen>curl_get_smtp
# get imap and smtp access details for your account
curl -sXGET "https://api.mailslurp.com/inboxes/smtp-access" -H"x-api-key:$API_KEY"
#</gen>
#<gen>curl_get_smtp_username
curl -sXGET "https://api.mailslurp.com/inboxes/smtp-access" \
  -H"x-api-key:$API_KEY" | jq -j '.smtpUsername'
#</gen>
#<gen>curl_get_smtp_password
curl -sXGET "https://api.mailslurp.com/inboxes/smtp-access" \
  -H"x-api-key:$API_KEY" | jq -j '.smtpPassword'
#</gen>
#<gen>curl_get_imap
# get imap access details for your account
curl -sXGET "https://api.mailslurp.com/inboxes/imap-access" -H"x-api-key:$API_KEY"
#</gen>
#<gen>curl_get_imap_inbox_access
# get imap access for specific inbox
curl -sXGET "https://api.mailslurp.com/inboxes/imap-access?inboxId=$INBOX_ID" -H"x-api-key:$API_KEY"
#</gen>
#<gen>curl_get_imap_username
curl -sXGET "https://api.mailslurp.com/inboxes/imap-access" \
  -H"x-api-key:$API_KEY" | jq -j '.imapUsername'
#</gen>
#<gen>curl_get_imap_password
curl -sXGET "https://api.mailslurp.com/inboxes/imap-access" \
  -H"x-api-key:$API_KEY" | jq -j '.imapPassword'
#</gen>

curl-imap-smtp/imap.sh

#!/usr/bin/env bash
set -e
error_handling() {
    echo "ERROR occurred"
    exit 1
}
trap 'error_handling' ERR

response=$(curl -sXPOST "https://api.mailslurp.com/inboxes?inboxType=SMTP_INBOX" -H"x-api-key:$API_KEY")
INBOX_ID=$(echo "$response" | jq -r '.id')
EMAIL_ADDRESS=$(echo "$response" | jq -r '.emailAddress')

curl -o .env.inbox -sXGET "https://api.mailslurp.com/inboxes/imap-smtp-access/env?inboxId=$INBOX_ID" -H"x-api-key:$API_KEY"
curl -o .env.account -sXGET "https://api.mailslurp.com/inboxes/imap-smtp-access/env" -H"x-api-key:$API_KEY"

# test with inbox access
source .env.inbox
# Ensure the environment variables are set
if [[ -z "$IMAP_USERNAME" || -z "$IMAP_PASSWORD" || -z "$IMAP_SERVER_HOST" || -z "$IMAP_SERVER_PORT" || -z "$IMAP_MAILBOX" ]]; then
    echo "Please set all required environment variables."
    exit 1
fi

echo "--- IMAP INSECURE"
#<gen>curl_imap_connect
curl -vu "$IMAP_USERNAME:$IMAP_PASSWORD" "imap://$IMAP_SERVER_HOST:$IMAP_SERVER_PORT/INBOX"
#</gen>
#<gen>curl_imap_connect_insecure
curl "imap://$IMAP_SERVER_HOST:$IMAP_SERVER_PORT/INBOX" -vu "$IMAP_USERNAME:$IMAP_PASSWORD"
#</gen>

echo "--- IMAP SECURE"
#<gen>curl_imap_connect_secure
curl --ssl "imaps://$SECURE_IMAP_SERVER_HOST:$SECURE_IMAP_SERVER_PORT/INBOX" -vu "$SECURE_IMAP_USERNAME:$SECURE_IMAP_PASSWORD"
#</gen>

echo "--- IMAP commands"
#<gen>curl_imap_search_list
curl -X 'LIST "" *' -vu "$IMAP_USERNAME:$IMAP_PASSWORD" "imap://mailslurp.click:1143/$IMAP_MAILBOX"
#</gen>
#<gen>curl_imap_search_unseen
curl -X "SEARCH UNSEEN" -vu "$IMAP_USERNAME:$IMAP_PASSWORD" "imap://mailslurp.click:1143/$IMAP_MAILBOX"
#</gen>

#<gen>curl_imap_LOGIN
# Login command
curl -vX "LOGIN $IMAP_USERNAME $IMAP_PASSWORD" "imap://mailslurp.click:1143"
#</gen>

#<gen>curl_imap_SELECT
# Select a mailbox
curl -X "SELECT INBOX" -vu "$IMAP_USERNAME:$IMAP_PASSWORD" "imap://mailslurp.click:1143/$IMAP_MAILBOX"
#</gen>

#<gen>curl_imap_FETCH
# Fetch messages
curl -X "FETCH 1:* (FLAGS BODY[HEADER.FIELDS (FROM TO SUBJECT DATE)])" -vu "$IMAP_USERNAME:$IMAP_PASSWORD" "imap://mailslurp.click:1143/$IMAP_MAILBOX"
#</gen>

#<gen>curl_imap_SEARCH
# Search for unseen messages
curl -X "SEARCH UNSEEN" -vu "$IMAP_USERNAME:$IMAP_PASSWORD" "imap://mailslurp.click:1143/$IMAP_MAILBOX"
#</gen>

#<gen>curl_imap_STORE
# Store command to mark messages as seen
curl -X "STORE 1:* +FLAGS (\Seen)" -vu "$IMAP_USERNAME:$IMAP_PASSWORD" "imap://mailslurp.click:1143/$IMAP_MAILBOX"
#</gen>

OTHER_INBOX_ADDRESS=$EMAIL_ADDRESS
source .env.account
#<gen>curl_imap_COPY
# Copy messages to another mailbox
curl -X "COPY 1:* $OTHER_INBOX_ADDRESS" -vu "$IMAP_USERNAME:$IMAP_PASSWORD" "imap://mailslurp.click:1143/INBOX"
#</gen>

#<gen>curl_imap_DELETE
# Delete a mailbox
curl -X "DELETE $EMAIL_ADDRESS" -vu "$IMAP_USERNAME:$IMAP_PASSWORD" "imap://mailslurp.click:1143/$IMAP_MAILBOX"
#</gen>

curl-imap-smtp/curl-example.sh

#!/usr/bin/env bash
#<gen>create_inbox
curl -XPOST api.mailslurp.com/createInbox -Hx-api-key:$API_KEY
#</gen>
RES=$(curl -sXPOST api.mailslurp.com/createInbox -Hx-api-key:$API_KEY)
TO=$(echo "$RES" | jq -j '.emailAddress')
ID=$(echo "$RES" | jq -j '.id')
#<gen>curl_send_email_query
curl -XPOST "api.mailslurp.com/sendEmailQuery?to=$TO&subject=Test&body=Hello%20World" -Hx-api-key:$API_KEY
#</gen>
echo "Complete"

curl-imap-smtp/Makefile

-include ../.env
.PHONY: test

SHELL_SCRIPTS = $(wildcard *.sh)

test: $(SHELL_SCRIPTS)
	for file in $^ ; do API_KEY=$(API_KEY) ./$$file ; done