- 论坛徽章:
- 0
|
问题已经搞定.
想想前的打开文件,真不是个什么聪明的方法,现在通过改变邮件的header来实现想要的结果
具体方法:上一封邮件的Message-ID,会现在在回复邮件的References:中,所以我在附加声明之后,修改邮件的Message-ID,在回复时,检查References:中是否含
有我指定的Message-ID,如果有,则说明此主题的邮件已经附加过,则不再附加,也不会再修改Message-ID,反之则附加声明
实现代码如下
- sub filter_end {
- use DBI;
- use MIME::Base64;
- use Encode qw/from_to/;
- my($entity) = @_;
- my ($dsn)="DBI:mysql:database_name:localhost";
- my ($user_name)="database_user";
- my ($password)="database_passwd";
-
- md_syslog('info',"\$recipient\' value is : $recipient"."@Recipients");
- foreach $recip(@Recipients){
- $recip=~ /<.*@(.*)>/;
- my $domain_to =$1;
- my $localdomain="local_domain";
- my $sign='aaaabbbbccccddddeeeeffff13456789';
- if($domain_to !~ $localdomain)
- {
- my $file="./HEADERS";
- open (FILE,$file) or die "Connot open $!";
- while(<FILE>){
- $header.=$_;
- $id=(split(/:/,$_))[1] if(/References:/);
- }
- md_syslog('info',"\$id\'s value is : $id,,,,,\$sign=$sign");
- md_syslog('info',"\$header\'s value is : $header");
- close FILE;
- if($id !~ $sign)
- {
- action_change_header("Message-ID", "<$sign>");
- $dbh=DBI->connect($dsn,$user_name,$password);
- $sth=$dbh->prepare("SELECT * from comment where active='YES'");
- $sth->execute();
- while(@ary=$sth->fetchrow_array()){
- ($active,$title,$content)=@ary;
- }
- from_to($content,"utf8","gb2312");
- #md_syslog('info',"\$content\' value is : $content");
- append_text_boilerplate($entity,"$content", 0);
- append_html_boilerplate($entity,"<br> <hr> <br>"."$content", 0);
- }
- }
- }
复制代码
PS:代码里只是随便指定了一个$sign,这样每封每一次发出去的邮件都有相同的Message-ID,容易被认为是垃圾邮件,你可以采取一些简单的方法,生成不同的Message-ID,方法这里不再细说
[ 本帖最后由 sunrocs 于 2008-10-21 08:46 编辑 ] |
|