PHP имеет встроенные функции для отправки почтовых сообщений однако обычно такие письма сразу же попадают в спам. Поэтому необходимо использовать API для отправки электронных писем, которые будут попадать именно в папку «Входящие» почтового ящика адресата, а не в спам. Большинство API платные, но если вам необходимо с чего-то начать нужен бесплатный сервис. Тут на сцене появляется Mailgun. 10000 электронных писем бесплатно каждый месяц. Регистрация также бесплатная, данные кредитной карты не требуются.
Зарегистрируйтесь на https://mailgun.com/signup и войдите в свой аккаунт. Для использования сервиса вам понадобиться Mailgun API Key а также указать свой домен. Также необходимо будет подвердить право владения доменом. Без этого, количество писем будет ограничено 300 в сутки.
Перейдите на https://mailgun.com/cp/my_account и в левом верхнем углу вы увидите свой API Key, строка вида key-3358fhrhs333dsj43e3e5532.
Mailgun предлагает собственный класс для отсылки сообщений, однако здесь я бы хотел бы поделиться более простым решением на базе PHP + cURL. На базе cURL написана функция send_mail:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<? function send_mail($email,$subject,$msg) { $api_key="";/* Api Key got from https://mailgun.com/cp/my_account */ $domain ="";/* Domain Name you given to Mailgun */ $ch = curl_init(); curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt($ch, CURLOPT_USERPWD, 'api:'.$api_key); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST'); curl_setopt($ch, CURLOPT_URL, 'https://api.mailgun.net/v2/'.$domain.'/messages'); curl_setopt($ch, CURLOPT_POSTFIELDS, array( 'from' => 'Open <mail@youriste.com>', 'to' => $email, 'subject' => $subject, 'html' => $msg )); $result = curl_exec($ch); curl_close($ch); return $result; } ?> |
Не забудьте задать переменные $api_key и $domain.
Теперь можно отсылать письма, передавая в функцию параметры:
1 2 3 |
$email - адрес получателя $subject - тема письма $msg - тело письма |
Пример:
1 2 3 |
<? send_mail("receiver@domain.com", "Hello!", "Have a nice day!"); ?> |