於Windows XP環境安裝dotProject (二)
|
上一篇文章已經探討過在Windows XP使用AppServ 2.5.9來安裝dotProject繁體UTF8中文版,如何正常顯示Gantt圖的方式,現在再來討論dotProject其他需要修正的地方,也就是發送email錯誤的修正。 要正式啟用dotProject,需要先做以下步驟: (1)先更改admin的資料,包括正確的email address (2)建立公司、建立部門、將admin設到某公司某部門下 (3)建立專案、建立任務 以上主要目的是要測試dotProject是否能正確發送email (1)新增任務或任務日誌時,勾選發送email,submit出去出現以下錯誤 ERROR 001 Fatal error: Maximum execution time of 30 seconds exceeded in C:\AppServ\www\dotProject\classes\libmail.class.php on line 461 當你去設定系統管理->系統配置,修改為SMTP發送,並輸入正確SMTP Server後,問題仍舊一樣 ... (2)而在新增ticket(問題跟蹤單)時,送出email通知也出現以下錯誤 ERROR 002 Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\AppServ\www\dotProject\modules\ticketsmith\do_ticket_aed.php on line 89 Warning: Cannot modify header information - headers already sent by (output started at C:\AppServ\www\dotProject\modules\ticketsmith\do_ticket_aed.php:89) in C:\AppServ\www\dotProject\classes\ui.class.php on line 510 或 ERROR 003 Fatal error: Maximum execution time of 30 seconds exceeded in C:\AppServ\www\dotProject\classes\libmail.class.php on line 465 關於ERROR 001: 表示在libmail.class.php無法去發出email 我們打開libmail.class.php (在dotProject/classes下)發現 $this->transport = dPgetConfig('mail_transport', 'php'); $this->host = dPgetConfig('mail_host', 'localhost'); 他並沒有去抓dotProject的config,直接設成php方式接localhost 關於ERROR 002: do_ticket_aed.php亦使用libmail.class.php方式發送email,也沒有去抓dotProject的config 關於ERROR 003: 去修改dotProject的系統設定maximum timeout也沒有用 由以上可以知道dotProject這個版本的發送mail方式並不統一 在dotProject的系統管理下去設定SMTP並不能解決問題 最後的測試結果,在盡量不修改dotProject程式情況下,以下為解決方式: (1)修改php.ini [mail function] ; For Win32 only. SMTP = yourSMTPServer smtp_port = 25 (修改完重新啟動Apache Server) (2)修改do_ticket_aed.php (在dotProject/modules/ticketsmith下) 原程式碼 mail($ticketNotification[$priority], $AppUI->_('Trouble ticket')." #$ticket ", $message, "From: " . $CONFIG['reply_to'] . "\nContent-type: multipart/alternative; boundary=\"$boundary\"\nMime-Version: 1.0"); 修改成 mail($email, $AppUI->_('Trouble ticket')." #$ticket ", $message, "From: " . $CONFIG["reply_to"] . "\nContent-type: multipart/alternative; boundary=\"$boundary\"\nMime-Version: 1.0"); (3)將libmail.class.php修改 原程式碼 var $charset = "us-ascii"; var $ctencoding = "7bit"; var $receipt = 0; 修改成 var $charset = "utf-8"; var $ctencoding = "8bit"; var $receipt = 0; (4)修改ticketsmith下的view.php 在if (@$type_toggle @$priority_toggle @$assignment_toggle) 的前面加上以下程式碼 $author2 = $author; $position = strpos($author2,"<"); $position++; $author3 = substr($author2,$position); $author4 = rtrim($author3, ">"); 然後把兩行 mail($ticketNotification[$priority], $AppUI->_('Trouble ticket')." #$ticket ", $message, "From: " . $CONFIG['reply_to'] . "\nContent-type: multipart/alternative; boundary=\"$boundary\"\nMime-Version: 1.0"); 修改成 mail($author4, $AppUI->_('Trouble ticket')." #$ticket ", $message, "From: " . $CONFIG['reply_to'] . "\nContent-type: multipart/alternative; boundary=\"$boundary\"\nMime-Version: 1.0"); 經測試,送出正確email 但尚有些問題待解決,如ticketsmith的followup.php的錯誤,如發送email通知時,如何發出通知給task所有人/被指派人或ticket所有人/被指派人 ... 過陣子再談了。 標籤: dotProject, technical |












其他書籤 :