configuration/sendEmails.sh
... ...
@@ -93,21 +93,38 @@ $(echo -n "$BODY" | base64 -w76)
93 93
MIME
94 94
)
95 95
96
- if echo "$MIME_MSG" | curl --silent --show-error \
97
- --url "$SMTP_URL" \
98
- --ssl-reqd \
99
- --mail-from "support@sapsailing.com" \
100
- --mail-rcpt "$EMAIL" \
101
- --user "${SMTP_USER}:${SMTP_PASS}" \
102
- --upload-file -; then
103
- echo "Sent to $EMAIL ($NAME)"
104
- SENT=$((SENT + 1))
105
- else
96
+ RETRIES=0
97
+ MAX_RETRIES=3
98
+ SEND_OK=false
99
+ while [[ $RETRIES -le $MAX_RETRIES ]]; do
100
+ if echo "$MIME_MSG" | curl --silent --show-error \
101
+ --url "$SMTP_URL" \
102
+ --ssl-reqd \
103
+ --mail-from "support@sapsailing.com" \
104
+ --mail-rcpt "$EMAIL" \
105
+ --user "${SMTP_USER}:${SMTP_PASS}" \
106
+ --upload-file - 2>/tmp/curl_err.txt; then
107
+ echo "Sent to $EMAIL ($NAME)"
108
+ SENT=$((SENT + 1))
109
+ SEND_OK=true
110
+ break
111
+ else
112
+ if grep -q "421" /tmp/curl_err.txt 2>/dev/null; then
113
+ RETRIES=$((RETRIES + 1))
114
+ WAIT=$((RETRIES * 5))
115
+ echo " Rate limited, retrying in ${WAIT}s... (attempt $((RETRIES))/$MAX_RETRIES)" >&2
116
+ sleep "$WAIT"
117
+ else
118
+ break
119
+ fi
120
+ fi
121
+ done
122
+ if [[ "$SEND_OK" == false ]]; then
106 123
echo "FAILED: $EMAIL ($NAME)" >&2
107 124
FAILED=$((FAILED + 1))
108 125
fi
109 126
110
- sleep 1
127
+ sleep 3
111 128
done < "$CSV"
112 129
113 130
echo ""