上一篇文章已經探討過在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所有人/被指派人 … 過陣子再談了。
我这还是不行啊,邮件还有什么地方需要配置吗?谢谢!
請問在建立問題追蹤單時再完成內容時會出現’a volid project’
請問該如何解決!
謝謝