You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
131 lines
4.1 KiB
131 lines
4.1 KiB
#!/usr/bin/env sh |
|
|
|
#Support mailgun.com api |
|
|
|
#MAILGUN_API_KEY="xxxx" |
|
#MAILGUN_TO="yyyy@gmail.com" |
|
|
|
#MAILGUN_REGION="us|eu" #optional, use "us" as default |
|
#MAILGUN_API_DOMAIN="xxxxxx.com" #optional, use the default sandbox domain |
|
#MAILGUN_FROM="xxx@xxxxx.com" #optional, use the default sandbox account |
|
|
|
_MAILGUN_BASE_US="https://api.mailgun.net/v3" |
|
_MAILGUN_BASE_EU="https://api.eu.mailgun.net/v3" |
|
|
|
_MAILGUN_BASE="$_MAILGUN_BASE_US" |
|
|
|
# subject content statusCode |
|
mailgun_send() { |
|
_subject="$1" |
|
_content="$2" |
|
_statusCode="$3" #0: success, 1: error 2($RENEW_SKIP): skipped |
|
_debug "_statusCode" "$_statusCode" |
|
|
|
MAILGUN_API_KEY="${MAILGUN_API_KEY:-$(_readaccountconf_mutable MAILGUN_API_KEY)}" |
|
if [ -z "$MAILGUN_API_KEY" ]; then |
|
MAILGUN_API_KEY="" |
|
_err "You didn't specify a mailgun api key MAILGUN_API_KEY yet ." |
|
_err "You can get yours from here https://mailgun.com" |
|
return 1 |
|
fi |
|
_saveaccountconf_mutable MAILGUN_API_KEY "$MAILGUN_API_KEY" |
|
|
|
MAILGUN_REGION="${MAILGUN_REGION:-$(_readaccountconf_mutable MAILGUN_REGION)}" |
|
if [ -z "$MAILGUN_REGION" ]; then |
|
MAILGUN_REGION="" |
|
_debug "The MAILGUN_REGION is not set, so use the default us region." |
|
_MAILGUN_BASE="$_MAILGUN_BASE_US" |
|
else |
|
MAILGUN_REGION="$(echo "$MAILGUN_REGION" | _lower_case)" |
|
_saveaccountconf_mutable MAILGUN_REGION "$MAILGUN_REGION" |
|
if [ "$MAILGUN_REGION" = "us" ]; then |
|
_MAILGUN_BASE="$_MAILGUN_BASE_US" |
|
else |
|
_MAILGUN_BASE="$_MAILGUN_BASE_EU" |
|
fi |
|
fi |
|
_debug _MAILGUN_BASE "$_MAILGUN_BASE" |
|
MAILGUN_TO="${MAILGUN_TO:-$(_readaccountconf_mutable MAILGUN_TO)}" |
|
if [ -z "$MAILGUN_TO" ]; then |
|
MAILGUN_TO="" |
|
_err "You didn't specify an email to MAILGUN_TO receive messages." |
|
return 1 |
|
fi |
|
_saveaccountconf_mutable MAILGUN_TO "$MAILGUN_TO" |
|
|
|
MAILGUN_API_DOMAIN="${MAILGUN_API_DOMAIN:-$(_readaccountconf_mutable MAILGUN_API_DOMAIN)}" |
|
if [ -z "$MAILGUN_API_DOMAIN" ]; then |
|
_info "The MAILGUN_API_DOMAIN is not set, try to get the default sending sandbox domain for you." |
|
if ! _mailgun_rest GET "/domains"; then |
|
_err "Can not get sandbox domain." |
|
return 1 |
|
fi |
|
_sendboxDomain="$(echo "$response" | _egrep_o '"name": *"sandbox.*.mailgun.org"' | cut -d : -f 2 | tr -d '" ')" |
|
_debug _sendboxDomain "$_sendboxDomain" |
|
MAILGUN_API_DOMAIN="$_sendboxDomain" |
|
if [ -z "$MAILGUN_API_DOMAIN" ]; then |
|
_err "Can not get sandbox domain for MAILGUN_API_DOMAIN" |
|
return 1 |
|
fi |
|
|
|
_info "$(__green "When using sandbox domain, you must verify your email first.")" |
|
#todo: add recepient |
|
fi |
|
if [ -z "$MAILGUN_API_DOMAIN" ]; then |
|
_err "Can not get MAILGUN_API_DOMAIN" |
|
return 1 |
|
fi |
|
_saveaccountconf_mutable MAILGUN_API_DOMAIN "$MAILGUN_API_DOMAIN" |
|
|
|
MAILGUN_FROM="${MAILGUN_FROM:-$(_readaccountconf_mutable MAILGUN_FROM)}" |
|
if [ -z "$MAILGUN_FROM" ]; then |
|
MAILGUN_FROM="$PROJECT_NAME@$MAILGUN_API_DOMAIN" |
|
_info "The MAILGUN_FROM is not set, so use the default value: $MAILGUN_FROM" |
|
else |
|
_debug MAILGUN_FROM "$MAILGUN_FROM" |
|
_saveaccountconf_mutable MAILGUN_FROM "$MAILGUN_FROM" |
|
fi |
|
|
|
#send from url |
|
_msg="/$MAILGUN_API_DOMAIN/messages?from=$(printf "%s" "$MAILGUN_FROM" | _url_encode)&to=$(printf "%s" "$MAILGUN_TO" | _url_encode)&subject=$(printf "%s" "$_subject" | _url_encode)&text=$(printf "%s" "$_content" | _url_encode)" |
|
_debug "_msg" "$_msg" |
|
_mailgun_rest POST "$_msg" |
|
if _contains "$response" "Queued. Thank you."; then |
|
_debug "mailgun send success." |
|
return 0 |
|
else |
|
_err "mailgun send error" |
|
_err "$response" |
|
return 1 |
|
fi |
|
|
|
} |
|
|
|
# method uri data |
|
_mailgun_rest() { |
|
_method="$1" |
|
_mguri="$2" |
|
_mgdata="$3" |
|
_debug _mguri "$_mguri" |
|
_mgurl="$_MAILGUN_BASE$_mguri" |
|
_debug _mgurl "$_mgurl" |
|
|
|
_auth="$(printf "%s" "api:$MAILGUN_API_KEY" | _base64)" |
|
export _H1="Authorization: Basic $_auth" |
|
export _H2="Content-Type: application/json" |
|
|
|
if [ "$_method" = "GET" ]; then |
|
response="$(_get "$_mgurl")" |
|
else |
|
_debug _mgdata "$_mgdata" |
|
response="$(_post "$_mgdata" "$_mgurl" "" "$_method")" |
|
fi |
|
if [ "$?" != "0" ]; then |
|
_err "Error: $_mguri" |
|
_err "$response" |
|
return 1 |
|
fi |
|
_debug2 response "$response" |
|
return 0 |
|
|
|
}
|
|
|