Снова:отправка почты (через php) из экземпляра EC2 [закрыто]

StackOverflow https://stackoverflow.com//questions/12709239

Вопрос

Я видел много обсуждений проблемы отправки почты с экземпляра Amazon EC2 с использованием функции mail в php.Ни одно из предложений у меня не сработало.

Вот моя настройка:

  • У меня есть экземпляр ubuntu EC2.
  • Я последовал инструкциям в SES Amazon, чтобы установить postfix, используя учетные данные, которые были созданы для меня.Я испробовал как ошеломляющий, так и прямой методы.
  • Я использовал swiftmail transport для отправки своей почты в соответствии с этот.Транспортная функция для отправки письма возвращает значение 0 доставлено.
  • Я использовал php mail сам по себе, и он возвращает true.Однако почта не доставляется даже в виде спама.

Кстати, я не использую производственный сервис с SES.Меня устраивают ограничения, я просто хочу, чтобы это сработало.

Я подозреваю, что меня неправильно аутентифицируют, и я не понимаю почему.Я попытался подключиться по telnet...amazonaws.com 25 и он подключается.Но когда я попробовал командную почту из:...в telnet указано, что требуется аутентификация.

Я уже придумал альтернативу:отправь сетку.Слишком дорого для моего использования.

Есть какие-нибудь мысли?

Это было полезно?

Решение

Вот как я использовал Sendgrid для отправки почты из экземпляра EC2 с использованием PHP:

  1. Зарегистрируйте учетную запись Sendgrid.Вы получите имя пользователя и пароль, которые будете использовать для отправки электронных писем.Кроме того, Sendgrid вручную верифицирует вашу учетную запись (возможно, для предотвращения рассылки спама).
  2. Установите библиотеку PHP curl в ubuntu: sudo apt-get install php5-curl.
  3. Используйте этот PHP-код для отправки электронной почты:

    $url = 'http://sendgrid.com/';
    $user = 'sendgrid_user';
    $pass = 'sendgrid_password'; 
    
    $params = array(
        'api_user'  => $user,
        'api_key'   => $pass,
        'to'        => $dest_addr,
        'subject'   => $subject,
        'html'      => $body,
        //'text'      => 'testing body',
        'from'      => $from_addr,
      );
    
    $request =  $url.'api/mail.send.json';
    
    $session = curl_init($request);
    // Tell curl to use HTTP POST
    curl_setopt ($session, CURLOPT_POST, true);
    // Tell curl that this is the body of the POST
    curl_setopt ($session, CURLOPT_POSTFIELDS, $params);
    // Tell curl not to return headers, but do return the response
    curl_setopt($session, CURLOPT_HEADER, false);
    curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
    
    // obtain response
    $response = curl_exec($session);
    
    //If the result is {"message":"success"}, then the mail is sent.  
    curl_close($session);
    

Другие советы

Одной из альтернатив postfix является использование "простого smtp". (ssmtp), который обеспечит рабочий отправить почту которые могут использовать другие программы/фреймворки.В этом примере ssmtp будет отправлять электронные письма через учетную запись gmail.

  1. Сначала откройте учетную запись gmail, если у вас ее еще нет
  2. убедитесь, что вы абсолютно НЕТ у вас уже установлено параллельное почтовое приложение, такое как xmail или postfix, иначе оно будет мешать
  3. затем установите ssmtp : sudo apt-get install ssmtp
  4. затем отредактируйте /etc/ssmtp/ssmtp.conf (смотрите ниже)
  5. затем отредактируйте /etc/ssmtp/revaliases (смотрите ниже)
  6. затем протестируйте : echo message content | sendmail -v test@something.com
  7. (необязательно) просмотрите журнал, если он не работает : ll /var/log/mail.* и cat ...

Содержание ssmtp.conf должно быть :(взято из моего кукольного модуля, замените <%= %> разделы с вашими данными)

root=<%= email %>
mailhub=smtp.googlemail.com:465
AuthUser=<%= email %>
AuthPass=<%= password %>
FromLineOverride=YES
UseTLS=YES

Предупреждение :файл conf должен содержать unix eols.

И содержание переоценки должно быть :

root:<%= email %>:smtp.googlemail.com:465

Этот метод чрезвычайно прост, но я думаю, что он не будет масштабироваться, если вам нужно отправить сотни электронных писем.

Еще одна отличная ссылка (на французском) : http://doc.ubuntu-fr.org/ssmtp

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top