簡體   English   中英

從本地主機發送電子郵件

[英]Sending e-mail from a local host

我正在嘗試從本地主機發送電子郵件,我使用的程序是 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()因為mail()函數不執行SSL 或 TLS 身份驗證,這是必需的 有關更多信息,請參閱此答案 您應該考慮改用PHPMailer類。

另外,請注意您使用的mail()不正確。 你有

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

第二個參數應該是一個主題,第三個參數應該是信息。 第四個參數是可選的,應該包含額外的郵件標題:

additional_headers (可選)

要插入到電子郵件標題末尾的字符串。

這通常用於添加額外的標題(發件人、抄送和密件抄送)。 多個額外的標題應該用 CRLF ( \\r\\n ) 分隔。 如果使用外部數據來組成此標頭,則應清理數據,以免注入不需要的標頭。

它不適用於您正在使用的純文本消息。 通過在格式正確的標頭所在的位置添加純文本,您可能會破壞某些服務器和某些郵件閱讀器。

如果您使用的是smtp_port=25 ,則必須更改smtp_ssl=none或使用此

smtp_port=587
smtp_ssl=tls

您是否從您的 Gmail 帳戶更改了這些設置

訪問您的電子郵件帳戶。 單擊齒輪工具 > 設置 > 轉發和 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!'); } ?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM