从本地主机发送电子邮件

时间:2016-04-02 16:13:23

标签: php email mamp local host

我正在尝试从localhost发送电子邮件,我正在使用的程序是MAMP。我已经在网上查看了这些内容并完成了所有内容,但这仍然无法完成。我在PHP文件中输入的用于发送电子邮件的功能是:

mail(
     $admin_email, $messaage,
     'Works!',


    'An email has been generated from your localhost, congratulations!');

此外,我已填写所有发送邮件值,如下所示:

smtp_server=smtp.gmail.com
; smtp port (normally 25)

smtp_port=25
smtp_ssl=ssl
auth_username=****@gmail.com
auth_password=*******

hostname=localhost

显然 - 我的电子邮件和密码是使用我的电子邮件和密码填写的。我也改变了php.ini文件,如下所示:

; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
;http://php.net/sendmail-path
sendmail_path = C:\Windows\System32\sendmail\ -t -i -f   my_email@gmail.com

有人可以告诉我我的错误在哪里吗?

2 个答案:

答案 0 :(得分:2)

您无法通过Google的SMTP服务器发送,因为mail()功能无法执行SSL or TLS authentication, which is required。有关详细信息,请参阅this answer。您应该考虑使用PHPMailer类。

此外,请注意您未正确使用mail()

mail(
 $admin_email, $messaage,
 'Works!',
'An email has been generated from your localhost, congratulations!');

第二个参数应该是主题,第三个参数应该是消息。第四个参数是可选的,应该包含额外的邮件头:

  

additional_headers (可选)

     

要插入电子邮件标题末尾的字符串。

     

这通常用于添加额外的标题(From,Cc和Bcc)。应使用CRLF(\r\n)分隔多个额外标头。如果使用外部数据来组成此标头,则应对数据进行清理,以便不会注入不需要的标头。

它不适用于您正在使用的纯文本消息。通过在格式正确的标题中添加明文,您可能会破坏一些服务器和一些邮件阅读器。

答案 1 :(得分:0)

如果您使用smtp_port=25,则必须更改smtp_ssl=none或使用此

smtp_port=587
smtp_ssl=tls

您是否已从Gmail帐户更改这些设置

  

访问您的电子邮件帐户。单击Gear Tool>设置>转发   和POP / IMAP> IMAP访问。单击"启用IMAP",然后保存您的   变化

     

查看电子邮件时请使用这些代码



<?php
$to      = 'myemail@yahoo.com';
$subject = 'Fake sendmail test';
$message = 'If we can read this, it means that our fake Sendmail setup works!';
$headers = 'From: myemail@egmail.com' . "\r\n" .
           'Reply-To: myemail@gmail.com' . "\r\n" .
           'X-Mailer: PHP/' . phpversion();

if(mail($to, $subject, $message, $headers)) {
    echo 'Email sent successfully!';
} else {
    die('Failure: Email was not sent!');
}
?>
&#13;
&#13;
&#13;