於Windows XP環境安裝dotProject (二)

十二月 12, 2007

上一篇文章已經探討過在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所有人/被指派人 … 過陣子再談了。

2 留言

於 於Windows XP環境安裝dotProject (二).
  1. skyaspnet
    |

    我这还是不行啊,邮件还有什么地方需要配置吗?谢谢!

  2. ray
    |

    請問在建立問題追蹤單時再完成內容時會出現’a volid project’
    請問該如何解決!
    謝謝

敬請留言

你的回應對我們是很重要的. 你的電子郵件將不會被公開.

請等待 ...
*
Loading Facebook Comments ...