Php

php mail() 函式在本地開發機器上非常緩慢

  • November 2, 2015

背景:如果您出於開發目的設置了本地 apache 伺服器,您可能會遇到 sendmail 需要很長時間(至少一分鐘)才能發送電子郵件的問題。如果您嘗試調試您生成的電子郵件的問題,這將非常令人沮喪。

網際網路上有幾個論壇文章討論了這個問題。但是,就我有限的知識而言,沒有一個主題足夠詳細地描述了要做什麼。以下是對我有用的步驟:

  1. 使用以下命令查找您的主機名(以防您忘記它):

:~$ cat /hosts/hostname

myhostname

2)編輯文件/etc/hosts並確保第一行如下:

127.0.0.1 localhost.localdomain localhost myhostname

3)編輯 sendmail 配置文件(/etc/mail/sendmail.cf在 Ubuntu 中)並取消註釋該行#O HostsFile=/etc/hosts

  1. 重新啟動電腦。電腦現在應該啟動得更快,並且 mail() 函式應該幾乎立即返回。但是,除非您按照第 5 步操作,否則實際上不會發送電子郵件。

  2. 每當使用郵件功能時,您必須新使用 sendmail ‘-f’ 選項。例如:

mail('recipient@somewhere.com', 'the subject', 'the message', null, '-fsender@somewhere.com');

我對伺服器故障者的問題是:

可以進行哪些進一步的更改,以便我不必使用 sendmail -f 選項?雖然添加 -f 選項並不難,但當您的 CMS(例如 Drupal)在發送郵件時不使用 -f 選項時,就會出現問題。您需要破解一個核心模組才能添加此選項。

這對我有用:

  • 安裝後綴

請參閱此處有關如何執行此操作的說明: https ://help.ubuntu.com/community/Postfix (它可能已經安裝,並且“sendmail”二進製文件實際上可能是後綴的別名)

  • 請按照此處的說明進行操作:

http://lenss.nl/2009/01/making-php-mail-work-on-ubuntu-through-postfix/

mkfifo /var/spool/postfix/public/pickup

查找sendmail過程

ps aux | grep mail

殺了它

kill <thepid>

重新開始postfix

/etc/init.d/postfix restart

我認為您可以將“myorigin”參數設置為任何活動域名,例如您擁有的域名。

好吧,我知道這不是您要問的,但是您為什麼不嘗試 Postfix 或 Exim 呢?它們都可用於 ubuntu(Postfix 甚至是 Ubuntu 系統上的預設 mta),並且它們都提供了兼容的“sendmail”命令,效果很好。恕我直言,sendmail 有點過時了,通過更現代的 MTA,您將獲得更好的支持機會。

引用自:https://serverfault.com/questions/173762