1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172
|
.. ses_tut:
=============================
Simple Email Service Tutorial
=============================
This tutorial focuses on the boto interface to AWS' `Simple Email Service (SES) <ses>`_.
This tutorial assumes that you have boto already downloaded and installed.
.. _SES: http://aws.amazon.com/ses/
Creating a Connection
---------------------
The first step in accessing SES is to create a connection to the service.
To do so, the most straight forward way is the following::
>>> import boto.ses
>>> conn = boto.ses.connect_to_region(
'us-west-2',
aws_access_key_id='<YOUR_AWS_KEY_ID>',
aws_secret_access_key='<YOUR_AWS_SECRET_KEY>')
>>> conn
SESConnection:email.us-west-2.amazonaws.com
Bear in mind that if you have your credentials in boto config in your home
directory, the two keyword arguments in the call above are not needed. More
details on configuration can be fond in :doc:`boto_config_tut`.
The :py:func:`boto.ses.connect_to_region` functions returns a
:py:class:`boto.ses.connection.SESConnection` instance, which is a the boto API
for working with SES.
Notes on Sending
----------------
It is important to keep in mind that while emails appear to come "from" the
address that you specify via Reply-To, the sending is done through Amazon.
Some clients do pick up on this disparity, and leave a note on emails.
Verifying a Sender Email Address
--------------------------------
Before you can send email "from" an address, you must prove that you have
access to the account. When you send a validation request, an email is sent
to the address with a link in it. Clicking on the link validates the address
and adds it to your SES account. Here's how to send the validation email::
>>> conn.verify_email_address('some@address.com')
{
'VerifyEmailAddressResponse': {
'ResponseMetadata': {
'RequestId': '4a974fd5-56c2-11e1-ad4c-c1f08c91d554'
}
}
}
After a short amount of time, you'll find an email with the validation
link inside. Click it, and this address may be used to send emails.
Listing Verified Addresses
--------------------------
If you'd like to list the addresses that are currently verified on your
SES account, use
:py:meth:`list_verified_email_addresses <boto.ses.connection.SESConnection.list_verified_email_addresses>`::
>>> conn.list_verified_email_addresses()
{
'ListVerifiedEmailAddressesResponse': {
'ListVerifiedEmailAddressesResult': {
'VerifiedEmailAddresses': [
'some@address.com',
'another@address.com'
]
},
'ResponseMetadata': {
'RequestId': '2ab45c18-56c3-11e1-be66-ffd2a4549d70'
}
}
}
Deleting a Verified Address
---------------------------
In the event that you'd like to remove an email address from your account,
use
:py:meth:`delete_verified_email_address <boto.ses.connection.SESConnection.delete_verified_email_address>`::
>>> conn.delete_verified_email_address('another@address.com')
Sending an Email
----------------
Sending an email is done via
:py:meth:`send_email <boto.ses.connection.SESConnection.send_email>`::
>>> conn.send_email(
'some@address.com',
'Your subject',
'Body here',
['recipient-address-1@gmail.com'])
{
'SendEmailResponse': {
'ResponseMetadata': {
'RequestId': '4743c2b7-56c3-11e1-bccd-c99bd68002fd'
},
'SendEmailResult': {
'MessageId': '000001357a177192-7b894025-147a-4705-8455-7c880b0c8270-000000'
}
}
}
If you're wanting to send a multipart MIME email, see the reference for
:py:meth:`send_raw_email <boto.ses.connection.SESConnection.send_raw_email>`,
which is a bit more of a low-level alternative.
Checking your Send Quota
------------------------
Staying within your quota is critical, since the upper limit is a hard cap.
Once you have hit your quota, no further email may be sent until enough
time elapses to where your 24 hour email count (rolling continuously) is
within acceptable ranges. Use
:py:meth:`get_send_quota <boto.ses.connection.SESConnection.get_send_quota>`::
>>> conn.get_send_quota()
{
'GetSendQuotaResponse': {
'GetSendQuotaResult': {
'Max24HourSend': '100000.0',
'SentLast24Hours': '181.0',
'MaxSendRate': '28.0'
},
'ResponseMetadata': {
'RequestId': u'8a629245-56c4-11e1-9c53-9d5f4d2cc8d3'
}
}
}
Checking your Send Statistics
-----------------------------
In order to fight spammers and ensure quality mail is being sent from SES,
Amazon tracks bounces, rejections, and complaints. This is done via
:py:meth:`get_send_statistics <boto.ses.connection.SESConnection.get_send_statistics>`.
Please be warned that the output is extremely verbose, to the point
where we'll just show a short excerpt here::
>>> conn.get_send_statistics()
{
'GetSendStatisticsResponse': {
'GetSendStatisticsResult': {
'SendDataPoints': [
{
'Complaints': '0',
'Timestamp': '2012-02-13T05:02:00Z',
'DeliveryAttempts': '8',
'Bounces': '0',
'Rejects': '0'
},
{
'Complaints': '0',
'Timestamp': '2012-02-13T05:17:00Z',
'DeliveryAttempts': '12',
'Bounces': '0',
'Rejects': '0'
}
]
}
}
}
|