我已经看到很多关于使用php的邮件功能从亚马逊EC2实例发送邮件的问题的讨论。这些建议都没有对我有用。
这是我的设置:
顺便说一句,我没有在SES上使用生产服务。我的限制很好,我只是想让它起作用。
我怀疑我没有正确认证,我不明白为什么。我试图telnet ... amazonaws.com 25它连接起来。但是当我在telnet中尝试命令Mail From:...时,它说需要身份验证。
我已经想到了另一种选择:sendgrid。我的使用太贵了。
有什么想法?
答案 0 :(得分:2)
以下是我如何使用Sendgrid使用PHP从EC2实例发送邮件:
sudo apt-get install php5-curl
。 使用此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);
答案 1 :(得分:1)
后缀的一种替代方法是使用“simple smtp”(ssmtp),它将提供其他程序/框架可能使用的工作 sendmail 。在此示例中,ssmtp将通过Gmail帐户发送电子邮件。
sudo apt-get install ssmtp
/etc/ssmtp/ssmtp.conf
(见下文)/etc/ssmtp/revaliases
(见下文)echo message content | sendmail -v test@something.com
ll /var/log/mail.*
和cat ...
ssmtp.conf 的内容应为:(取自我的puppet模块,将<%=%>部分替换为您的数据)
root=<%= email %>
mailhub=smtp.googlemail.com:465
AuthUser=<%= email %>
AuthPass=<%= password %>
FromLineOverride=YES
UseTLS=YES
警告:conf文件应该有unix eols。
revaliases 的内容应为:
root:<%= email %>:smtp.googlemail.com:465
这种技术非常简单,但我想如果你需要发送数百封电子邮件,它就无法扩展。
另一个很好的链接(法语):http://doc.ubuntu-fr.org/ssmtp