2015-04-01 76 views
0

這可能很長,所以我很抱歉。用Gmail發送郵件SMTP(修復某人的代碼)

最近我決定嘗試修復計算機實驗室用來發送電子郵件的代碼。它曾經工作,直到他們最近嘗試更改發送電子郵件地址。我的問題?我對這種類型的編碼以及他們改變了哪些代碼知之甚少。我發現他們用來發送郵件的功能。我希望有人能夠幫助我指出什麼是問題。或者我可以改變它以使其工作。我想這是因爲密碼從來沒有被要求。但是我不明白編寫這段代碼的人究竟做了什麼。

這是我正在查看的代碼。

function SendMail($ToName, $ToEmail, $FromName, $FromEmail, $Subject, $Body, $Header) 
{ 
$SMTP = fsockopen("smtp.gmail.com", 465); 

$InputBuffer = fgets($SMTP, 1024); 

fputs($SMTP, "HELO $smtp.gmail.com\n"); 
$InputBuffer = fgets($SMTP, 1024); 
fputs($SMTP, "MAIL From: $FromEmail\n"); 
$InputBuffer = fgets($SMTP, 1024); 
fputs($SMTP, "RCPT To: $ToEmail\n"); 
$InputBuffer = fgets($SMTP, 1024); 
fputs($SMTP, "DATA\n"); 
$InputBuffer = fgets($SMTP, 1024); 
fputs($SMTP, "$Header"); 
fputs($SMTP, "From: $FromName <$FromEmail>\n"); 
fputs($SMTP, "To: $ToName <$ToEmail>\n"); 
fputs($SMTP, "Subject: $Subject\n\n"); 
fputs($SMTP, "$Body\r\n.\r\n"); 
fputs($SMTP, "QUIT\n"); 
$InputBuffer = fgets($SMTP, 1024); 

fclose($SMTP); 
} 

他們按下一個按鈕,它發送電子郵件。或至少運行該功能。 我發現當他們按下某個變量的按鈕時會被調用。其他變量從存儲個人信息的數據庫中調用。 (改變了電子郵件到一個隨機發布此問題。)

$fname = mysql_result($results, 0, "fname"); 
$FromName = "Support Center"; 
$FromEmail = "[email protected]"; 
$Subject = "Computer Finished"; 
$Body = "Your computer is fixed."; 
$Header = "Computer"; 

會有人能夠給可能指向我的方向是正確的。或者有人可以解釋如何讓程序輸出錯誤信息?我搜索了一下,發現有關它的話題,但我仍然迷失。因爲我是新手,所以只寫一個新代碼而不嘗試修復它會更好嗎?任何幫助真的很感謝,因爲我是這種類型的代碼的一個小新手。我可以閱讀並理解它,但是...我不明白深入的功能。

回答

0

重寫SendMail函數內容並使用PHPMailer類代替手動套接字交互可能更容易。它可以用不同的方式發送電子郵件 - 郵件()函數,sendmail或SMTP。它很容易配置,並且在SMTP會話期間出現問題時會引發異常。只要把它放在你的網站的某個地方,看看這個軟件包提供的例子。

+0

我很感謝你的回答。感謝您試圖幫助我,這正是我一直在尋找的。但我仍然有點害怕。 如果我改變了功能... 功能的SendMail(){ 這裏 *所有默認PHPMailer的信息* } ,如果我填寫默認PHPMailer的信息應該發送一封電子郵件隨時撥打我關於函數SendMail是否正確? 我知道我需要從不同的.php頁面調用某些變量。我需要的兩個變量是$ ToName和$ ToEmail。電子郵件和名稱取決於哪些工作訂單已打開。所以唯一不能解決的是電子郵件和姓名。 – 2015-04-01 18:19:05