mailslurp-examples - telnet-imap-smtp-sh

https://github.com/mailslurp/examples

Table of Contents

telnet-imap-smtp-sh/smtp-http-example.sh

#!/usr/bin/env bash
# get an inbox with smtp/imap capabilties
INBOX_TYPE="HTTP_INBOX"
INBOX=$(curl -sXPOST "https://api.mailslurp.com/inboxes?inboxType=$INBOX_TYPE&expiresIn=300000" -H"x-api-key:$API_KEY")

# get inbox imap access details
ACCESS=$(curl -sXGET "https://api.mailslurp.com/inboxes/imap-smtp-access" -Hx-api-key:$API_KEY)

# set vars for imap expect
export ADDRESS=$(echo $INBOX | jq -j '.emailAddress')
INBOX_ID=$(echo $INBOX | jq -j '.id')
export USERNAME=$(echo "$ACCESS" | jq -j '.smtpUsername')
export PASSWORD=$(echo "$ACCESS" | jq -j '.smtpPassword')
export PORT=$(echo "$ACCESS" | jq -j '.smtpServerPort')
export HOST=$(echo "$ACCESS" | jq -j '.smtpServerHost')
auth_string="\0$USERNAME\0$PASSWORD"
base64_auth=$(echo -ne "$auth_string" | base64)
auth_plain_command="AUTH PLAIN $base64_auth"
export USERNAME_PASSWORD_BASE64=$base64_auth
# execute the expect test to connect to the server using the set variables
./smtp-example.exp
curl -v -XGET "https://api.mailslurp.com/waitForLatestEmail?inboxId=$INBOX_ID&unreadOnly=true&apiKey=$API_KEY"

telnet-imap-smtp-sh/smtp-example.sh

#!/usr/bin/env bash
# get an inbox with smtp/imap capabilties
INBOX_TYPE="SMTP_INBOX"
INBOX=$(curl -sXPOST "https://api.mailslurp.com/inboxes?inboxType=$INBOX_TYPE&expiresIn=300000" -H"x-api-key:$API_KEY")

# get inbox imap access details
ACCESS=$(curl -sXGET "https://api.mailslurp.com/inboxes/imap-smtp-access" -Hx-api-key:$API_KEY)

# set vars for imap expect
export ADDRESS=$(echo $INBOX | jq -j '.emailAddress')
INBOX_ID=$(echo $INBOX | jq -j '.id')
export USERNAME=$(echo "$ACCESS" | jq -j '.smtpUsername')
export PASSWORD=$(echo "$ACCESS" | jq -j '.smtpPassword')
export PORT=$(echo "$ACCESS" | jq -j '.smtpServerPort')
export HOST=$(echo "$ACCESS" | jq -j '.smtpServerHost')
#<gen>telnet_smtp_auth_plain_encoding
auth_string="\0$USERNAME\0$PASSWORD"
base64_auth=$(echo -ne "$auth_string" | base64)
auth_plain_command="AUTH PLAIN $base64_auth"
#</gen>
export USERNAME_PASSWORD_BASE64=$base64_auth
# execute the expect test to connect to the server using the set variables
./smtp-example.exp
curl -v -XGET "https://api.mailslurp.com/waitForLatestEmail?inboxId=$INBOX_ID&unreadOnly=true&apiKey=$API_KEY"

telnet-imap-smtp-sh/smtp-example.exp

#!/usr/bin/expect
set timeout 20

#<gen>telnet_smtp_exp
spawn telnet $env(HOST) $env(PORT)
expect "220*"

send "HELO test.mailslurp.com\r"
expect "250*"

# AUTH_STRING="\0$USERNAME\0$PASSWORD"
# USERNAME_PASSWORD_BASE64=$(echo -ne "$AUTH_STRING" | base64)
send "AUTH PLAIN $env(USERNAME_PASSWORD_BASE64)\r"
expect "235*"

# Send MAIL FROM command
send "MAIL FROM: <$env(ADDRESS)>\r"
expect "250*"

# Send RCPT TO command
send "RCPT TO: <$env(ADDRESS)>\r"
expect "250*"

# Start data transfer
send "DATA\r"
expect "354*"

# Send email headers and body
send "From: <$env(ADDRESS)>\r"
send "To: <$env(ADDRESS)>\r"
send "Subject: test\r"
send "\r"
send "this is a test message.\r"
send ".\r"
expect "250*"

# Quit session
send "QUIT\r"
expect "221*"
#</gen>

telnet-imap-smtp-sh/imap-inbox-access-example.sh

#!/usr/bin/env bash
# get an inbox with smtp/imap capabilties
INBOX=$(curl -sXPOST "https://api.mailslurp.com/inboxes?expiresIn=300000" -H"x-api-key:$API_KEY")
INBOX_ID=$(echo $INBOX | jq -j '.id')

# update the inbox access
curl -sXPATCH "https://api.mailslurp.com/inboxes/imap-access?inboxId=$INBOX_ID" -H'content-type: application/json' -Hx-api-key:$API_KEY -d '{"imapUsername":"test-user", "imapPassword": "test-pass"}'

# get inbox imap access details
ACCESS=$(curl -sXGET "https://api.mailslurp.com/inboxes/imap-access?inboxId=$INBOX_ID" -Hx-api-key:$API_KEY)

# set vars for imap expect
export ADDRESS=$(echo $INBOX | jq -j '.emailAddress')
export USERNAME=$(echo "$ACCESS" | jq -j '.imapUsername')
export PASSWORD=$(echo "$ACCESS" | jq -j '.imapPassword')

# expect access is set
if [ "$USERNAME" != "test-user" ]; then
  echo "Error: expected username $USERNAME to be test-user"
  exit 1
fi
if [ "$PASSWORD" != "test-pass" ]; then
  echo "Error: expected password $PASSWORD to be test-pass"
  exit 1
fi

export PORT=$(echo "$ACCESS" | jq -j '.imapServerPort')
export HOST=$(echo "$ACCESS" | jq -j '.imapServerHost')

# send a message to the inbox
curl -XPOST "https://api.mailslurp.com/sendEmailQuery?to=$ADDRESS&body=Hello&subject=Test" -Hx-api-key:$API_KEY

# execute the expect test to connect to the server using the set variables
./imap-example.exp

telnet-imap-smtp-sh/imap-example.sh

#!/usr/bin/env bash
# get an inbox with smtp/imap capabilties
INBOX=$(curl -sXGET "https://api.mailslurp.com/inboxes/paginated?size=1&inboxType=SMTP_INBOX" -Hx-api-key:$API_KEY)

# get inbox imap access details
ACCESS=$(curl -sXGET "https://api.mailslurp.com/inboxes/imap-smtp-access" -Hx-api-key:$API_KEY)

# set vars for imap expect
export ADDRESS=$(echo $INBOX | jq -j '.content[0].emailAddress')
export USERNAME=$(echo "$ACCESS" | jq -j '.imapUsername')
export PASSWORD=$(echo "$ACCESS" | jq -j '.imapPassword')
export PORT=$(echo "$ACCESS" | jq -j '.imapServerPort')
export HOST=$(echo "$ACCESS" | jq -j '.imapServerHost')
auth_string="\0$USERNAME\0$PASSWORD"
export AUTH_PLAIN=$(echo -ne "$auth_string" | base64)
# send a message to the inbox
curl -XPOST "https://api.mailslurp.com/sendEmailQuery?to=$ADDRESS&body=Hello&subject=Test" -Hx-api-key:$API_KEY

# execute the expect test to connect to the server using the set variables
./imap-example.exp

telnet-imap-smtp-sh/imap-example.exp

#!/usr/bin/expect
set timeout 20

#<gen>telnet_imap_exp_auth_plain
spawn telnet $env(HOST) $env(PORT)
expect "* OK*"

send "a1 AUTHENTICATE PLAIN $env(AUTH_PLAIN)\r"
expect "a1 OK*"

send a2 'LIST "" *\r'
expect "a2 *"

send "a3 LOGOUT\r"
expect "*"

#</gen>
#<gen>telnet_imap_exp
spawn telnet $env(HOST) $env(PORT)
expect "* OK*"

send "a1 LOGIN $env(USERNAME) $env(PASSWORD)\r"
expect "a1 OK*"

send "a2 SELECT $env(ADDRESS)\r"
expect "a2 OK*"

send "a3 SEARCH UNSEEN\r"
expect "a3 OK*"

send "a4 FETCH 1 BODY\[1.1\]\r"
expect "a4 OK*"

# Begin IDLE
send "a5 IDLE\r"
expect "+ IDLE*"  # Server response indicating it's ready to push notifications

set idle_timeout 10
expect {
    timeout { send "DONE\r"; expect "a5 OK*" }
    "* EXISTS" {
        send "DONE\r"
        expect "a5 OK*"
        # Add handling for new mail or changes here if needed
    }
}

send "a5 LOGOUT\r"
expect "*"
#</gen>

telnet-imap-smtp-sh/Makefile

-include ../.env
.PHONY: test
test:
	API_KEY=$(API_KEY) ./imap-example.sh
	API_KEY=$(API_KEY) ./smtp-example.sh