我正试图从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!');
}
?>