2009-09-03 90 views
3

我有一個項目可以在我們的網站上設置一個匿名反饋表單。我想在它有一個去用PHP從php表單發送Gmail

一般的想法是,我將有一個密碼字段(給了我們的員工)的反饋字段和一個按鈕

我看過這個代碼片斷

<?php 
$to = "[email protected]"; 
$subject = "Hi!"; 
$body = "Hi,\n\nHow are you?"; 
if (mail($to, $subject, $body)) { 
    echo("<p>Message successfully sent!</p>"); 
} else { 
    echo("<p>Message delivery failed...</p>"); 
} 
?> 

但是我用我有限的瞭解電子郵件系統相當肯定,我不能只發送電子郵件(除非我有一個開放的服務器的地方,我不),所以我需要登錄和電子郵件服務器(在我的情況下gmails服務器)

so ho我會這樣做嗎?

更新:

上面的代碼的工作,但它並非來自公司帳戶 我們目前使用的谷歌BIZ應用,這就是爲什麼我想登錄到谷歌服務器發送這一點。

+0

通過gmail發送,您需要設置自動腳本或檢查是否存在API – dusoft 2009-09-03 14:26:04

+0

不需要@dusoft。 – ceejayoz 2009-09-03 14:41:42

回答

0

你的理解似乎有點太有限;從任何連接到互聯網的地方「發送」郵件是完全可能的。

+0

不只是在任何地方。我有一個動態分配的IP地址,所以很多郵件服務器都不允許我發送郵件。例如'gmail.com'會阻止我的IP地址,並給出一個SMTP錯誤。 – Inshallah 2009-09-03 15:21:07

+0

mail.gmail.com如何區分動態IP和靜態IP? – 2009-09-03 15:38:31

+0

@Totland請參閱SPF和SMTP回撥。 – bucabay 2009-09-03 16:33:09

1

如果您在適當的Web主機上運行您的腳本,他們將爲您設置一切功能,以發送外發郵件。它真的如此簡單。

如果您在家中運行服務器,事情會變得更復雜一些,因爲ISP通常會阻止家庭帳戶發送郵件,除非通過ISP的中介服務器。

1

php mail()實際上會使用系統的郵件系統發送郵件。如果您的主機使用的是Linux基本系統,那麼大多數情況下這是sendmail。正如前面提到,許多主機已經此爲你設置

mail() requirements

0

如果你是一個Linux服務器上,以正確設置郵件服務器,給出的例子會正常工作。如果你在體面的虛擬主機,它會沒事的。

如果你是一個開發機器上,你可以設置一個本地郵件服務器,並配置郵件服務器通過其他郵件服務器來發送郵件。它通常被稱爲... smarthost,我想。大多數Linux郵件服務器(exim,postfix,whatever)都可以這樣配置。我很肯定你也可以用這種方式在Windows機器上安裝和配置郵件服務器。 Xampp有一個,我想。

如果你真的想直接發送電子郵件到使用PHP的電子郵件服務器,您可以使用圖書館。就個人而言,我會使用swiftmailer。

http://swiftmailer.org/ http://phpmailer.worxware.com/

他們會允許你使用任何你喜歡的SMTP服務器,而不僅僅是本地郵件服務器。

0

您的代碼還沒有輸入濾波是開放的垃圾郵件濫用行爲,其最好的,如果您有一個第三方郵件像swiftmailer

0

你通常可以只使用電子郵件(),如果服務器被配置爲您服務。

爲了通過GMail從您的服務器發送電子郵件,您需要通過SMTP將電子郵件發送到Gmail郵件服務器(MTA)。

mail()函數可以配置爲使用SMTP或在服務器上使用sendmail二進制文件。最好是讓你的虛擬主機來做。如果你想自己做,它需要編輯你的PHP.ini。

Sendmail是一個deamon,它具有發送電子郵件的命令行界面。 (注意:所有的電子郵件都是通過SMTP發送的,sendmail只是爲你做的)。

您將首先需要使用google郵件服務器身份驗證方法以及您的用戶名和密碼來配置您的sendmail程序。這是特定於您使用的sendmail程序。 然後,您需要配置PHP以通過PHP.ini使用您的sendmail程序。如果您需要特定說明,可以發佈。

我不認爲你可以配置PHP在這種情況下直接使用SMTP,因爲谷歌需要TLS和認證參數(用戶/通行證),你不能放入PHP.ini。

注意:PHP文檔提到sendmail用於linux,SMTP僅用於Windows。這是不正確的。您可以在Windows上配置PHP以使用sendmail,而linux使用SMTP。你可以只需要一個windows版本的sendmail,而linux默認帶有sendmail,因此你真的不需要SMTP。 Sendmail通常是更好的選擇,因爲它會將郵件添加到隊列中,而PHP是單線程的並且必須等待SMTP事務完成。