Codeigniter SMTP Email with Amazon SES

This procedure is useful for testing SMTP credentials and for testing the ability of specific recipients to receive messages that you send by using Amazon SES.

Codeigniter SMTP Email with Amazon SES

I got that timeout message until I added the line:-

$this->email->set_newline("\r\n");

I have my host set as ssl://email-smtp.us-east-1.amazonaws.com

You need to do 3 things to get CI to work with Amazon Simple Email Service (SES)

  1. Need to set newline = \r\n or you will get a timeout.
  2. Need to set smtp_crypto to something. (New requirement)
  3. Need to make sure "from" email address is approved in Amazon SES. I made my "from" email address "no-reply@mydomain.com"

Additionally, you should set up DKIM for your "from" email address to prevent emails from getting put in spam folders. This involves going into Amazon SES -> Identity Management -> Email Addresses -> DKIM, hitting the enable button, and adding 3 DNS entries to your website's DNS.

No need to do anything special to set up SPF. The envelope domain amazonses.com passes SPF.

Finally, make sure to use "reply-to" if you want users to be able to reply to an e-mail address different from your approved "from" e-mail address.

Example working code:

$obj = &get_instance();

$config['protocol'] = 'smtp';
$config['smtp_host'] = 'email-smtp.us-west-2.amazonaws.com';
$config['smtp_user'] = 'USER';
$config['smtp_pass'] = 'PASS';
$config['smtp_port'] = '587';
$config['newline'] = "\r\n";
$config['smtp_crypto'] = 'tls';
$obj->email->initialize($config);

$obj->email->set_mailtype('html');
// don't html_escape email header variables
$obj->email->from(MV_FROM_EMAIL, $from_name);
$obj->email->reply_to($from_email, $from_name);
$obj->email->to($to);
$obj->email->subject($subject);
$obj->email->message($obj->load->view($path, html_escape($data), true));
$obj->email->send();


Click Here to Visit

What's Your Reaction?

like
1
dislike
0
love
0
funny
0
angry
0
sad
0
wow
0