从本地主机发送电子邮件


Sending e-mail from a 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

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

您将无法通过Google的SMTP服务器进行发送,因为mail()功能不执行SSL或TLS身份验证,这是必需的。有关详细信息,请参阅此答案。您应该考虑使用PHPMailer类。

此外,请注意,您使用mail()的方式不正确。你有

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

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

附加标头(可选)

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

这通常用于添加额外的标头(发件人、抄送和密件抄送)。多个额外的标头应使用CRLF('r'n)分隔。如果使用外部数据来组成此标头,则应该对数据进行净化,这样就不会注入不需要的标头。

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

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

smtp_port=587
smtp_ssl=tls

你从你的gmail账户更改了这些设置吗

访问您的电子邮件帐户。单击Gear Tool>Settings>Forwarding和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!');
}
?>