At first, let's check you've done the basics, the routine:
1. You need to log in to AWS, to choose SES tab, and in the left menu to choose "Verified Senders". You have to verify at least one email address you will send emails from (for our example will use example@example.com). Once you're done, move to SMTP settings.
2. In SMTP setting grab your SMTP credentials. You'll need:
Now let's move to PHPMailer
1. Download the latest version at http://code.google.com/a/apache-extras.org/p/phpmailer/downloads/list
unpack it to phpmailer folder.
2. Create new file named Mailer.php that will extend PHPMailer class
Since you've started to use amazon SES you will encounter several problems:
1. Despite you'll see high numbers in your Amazon's sending limits you will be surprised how slow is sending itself.
So:
First. Don't send emails directly with user request (from forms for example). Save request and send emails in background with cron after that. Users will thank you.
Second. We have Max Send Rate 28 emails/second, but without asynchronous approach we won't be able to rich the limit! Our max sending rate in one thread is one in 3 seconds!
2. Amazon SES very strict with Bounced emails and Complaints, they will block your account if you're not dealing with this emails. Clean up your database from invalid emails, check Bounced and Complaints returning emails. It might be done easily by using Amazon SNS Notifications center.
Will describe all solutions for this problems in the next posts.
1. You need to log in to AWS, to choose SES tab, and in the left menu to choose "Verified Senders". You have to verify at least one email address you will send emails from (for our example will use example@example.com). Once you're done, move to SMTP settings.
2. In SMTP setting grab your SMTP credentials. You'll need:
- Server name (for me it's email-smtp.us-east-1.amazonaws.com)
- Port (25, 465 or 587)
- Authentication (create you own by following button "Create My SMTP credentials") You'll get Username and Password
Now let's move to PHPMailer
1. Download the latest version at http://code.google.com/a/apache-extras.org/p/phpmailer/downloads/list
unpack it to phpmailer folder.
2. Create new file named Mailer.php that will extend PHPMailer class
<?php include_once('phpmailer/class.phpmailer.php'); class Mailer extends PHPMailer{ var $Host = "tls://email-smtp.us-east-1.amazonaws.com"; //Amazon Server var $Username = "xxxxxxxxxxxxxxxxxx"; //Enter Username from Amazon var $Password = "xxxxxxxxxxxxxxxxxxx"; //Enter Pasword from Amazon var $Port = 465; //Port number from Amazon var $SMTPAuth = true; var $From = "myportal@example.com"; //From may be any email you want var $FromName = "My Site"; var $CharSet = "UTF-8"; var $Sender = 'example@example.com'; //Sender has to be verified email !!! var $SMTPDebug = false; // set true if you want to debug /** * Prevents the SMTP connection from being closed after each mail * sending. If this is set to true then to close the connection * requires an explicit call to SmtpClose(). * @var bool */ var $SMTPKeepAlive = true; function Mailer(){ $this->IsSMTP(); } function send_email($email,$subject,$body){ $this->ClearAddresses(); $this->SingleTo = true; mb_internal_encoding("UTF-8"); //If you send in UTF-8 Encoding $this->AddAddress($email); $this->Subject = ($subject); $this->Body=$body; return $this->Send(); } } ?>3. Include this file in you application and call each time you want to send email:
<?php include_once('Mailer.php'); $mailer=new Mailer(); $mailer->send_email('myprivate@email.com','First email','Hello world!'); ?>You're done, you're ready to send emails using Amazon SES with PHPmailer.
Since you've started to use amazon SES you will encounter several problems:
1. Despite you'll see high numbers in your Amazon's sending limits you will be surprised how slow is sending itself.
So:
First. Don't send emails directly with user request (from forms for example). Save request and send emails in background with cron after that. Users will thank you.
Second. We have Max Send Rate 28 emails/second, but without asynchronous approach we won't be able to rich the limit! Our max sending rate in one thread is one in 3 seconds!
2. Amazon SES very strict with Bounced emails and Complaints, they will block your account if you're not dealing with this emails. Clean up your database from invalid emails, check Bounced and Complaints returning emails. It might be done easily by using Amazon SNS Notifications center.
Will describe all solutions for this problems in the next posts.
You have shared a very informative article here about the Amazon SES Smtp. After reading your article I got very much information and it resolved many of my doubts. Thanks for sharing this this article here. Bulk Email SMTP Service
ReplyDelete