extmail本身預留了簡訊提醒的介面,但程式碼基本沒寫,於是,花了點時間,實現了收到郵件後簡訊提示的功能,實現方法大致如下:

1、extmail/html/default/filter.html 檔案中MAIL2SMS選項卡部分修改為:

 

 

  (因草稿中丟失格式,暫時不確定原來的內容,看說明部分,目的是增加一個接收手機號碼的文字框。)

 

 

 

 checked>

 

*說明:在WEBMAIL後臺增加一個接收手機號碼的輸入框。這個手機號碼對應變數mail2smsNum

2、extmail/lang/zh_CN 檔案中修改一下字元模板,修改”mail2sms”一行,增加”mail2sms_num_error”一行:

mail2sms => ‘啟用郵件到達提醒。 手機號碼:’,
mail2sms_num_error => ‘輸入的用於簡訊通知的手機號碼非法,請重試’,

*說明:可再按此方法處理繁體及英文字元配置檔案,”mail2sms_num_error”是在輸入的手機號碼非法後提供錯誤反饋用,也可以不做處理。

3、/etc/maildroprc增加傳送手機簡訊的指令碼命令:

MAIL2SMS=”/var/www/extsuite/extmail/tools/sendsms.sh”

*說明:具體路徑可自己定義,但要注意執行許可權

4、增加傳送手機簡訊的指令碼,sendsms.sh:

#!/bin/sh
sendsms()
{
;
#傳送指令碼,可用curl處理
}
#加入其他判斷
sendsms “$2″ “$3″;

5、修改extmail/libs/Ext/App/Filter.pm:

第一處,sub extension_list中:
#datahf.net zhangyu edit
my $mail2smsNum = $obj->{mail2smsNum};

MAIL2SMS_NUM => $mail2smsNum,
#end

第二處,extension_mgr中:
if ($q->cgi(‘mail2sms’)) {
$obj->{mail2sms} = 1;
#datahf.net zhangyu edit
my $telnum = $q->cgi(‘mail2smsNum’);
if (!$telnum or $telnum !~ /^1d{10}$/) {
$self->error($lang_filter{mail2sms_num_error});
return;
}
$obj->{mail2smsNum} = $telnum;
} else {
$obj->{mail2sms} = 0;
$obj->{mail2smsNum} = ”;
}
#add end

6、修改extmail/libs/Ext/MailFilter.pm:

第一處:parse中:
my $mail2smsNum = 0;

elsif ($res =~ /^mail2sms: (.*)/) {
$mail2sms = 1;
$self->{mail2sms} = $mail2sms;
$mail2smsNum = $1;
$self->{mail2smsNum} = $mail2smsNum;
}

第二處,save中:
# datahf.net zhangyu add or edit
if ($self->{mail2sms}) {
$buf1 .= “#*mail2sms: $self->{mail2smsNum}
”;
$buf1 .= “/^(From|Sender):(.*)/
”;
$buf1 .= “FROMsms=`$DECODER ”$MATCH2”`
”;
$buf1 .= “FROMsmsADD=getaddr($FROMsms)
”;
$buf1 .= “/^Subject:(.*)/
”;
$buf1 .= “SUBJECTsms=`$DECODER ”$MATCH1”`
”;
$buf1 .= “CONTENT=”收到來自$FROMsmsADD的新郵件,標題為:$SUBJECTsms”
”;
$buf1 .= “CONTENTgb=`echo $CONTENT|iconv -f utf-8 -t gb2312`
”;
$buf1 .= “TELnum=”$self->{mail2smsNum}”
”;
$buf1 .= “`$MAIL2SMS $LOGNAME $TELnum ”$CONTENTgb”`
”;
$buf1 .= “
”;
}
# end
#extmail的過濾器考慮的問題較為簡單,比如一旦加入白名單,便不會後續的過濾了,還有一些小問題,因改動太大,暫且如此。

7、登陸webmail後啟用一下簡訊提示功能,同時輸入合法的手機號碼(11位以1開頭的數字序列),儲存即可。

*禁止轉載,如需轉載或服務,請與作者取得聯絡:
張宇