关于 Mail::Sender 模块,熟悉的老大们帮帮忙啊,急~~~

关于 Mail::Sender 模块,熟悉的老大们帮帮忙啊,急~~~

各位老大们~~

我用 Mail::Sender 模块 写了个发送HTML和图片附件的邮件的,
现在遇到一个问题,不知道该怎么解决啊,高手们帮帮忙啊




发送邮件列表 @mailto 中,如果邮件地址正确的话,邮件是可以发出去的,但是如果邮件地址错误或不存在的话,邮件就发不出去了,这个该怎么解决啊???

如: @mailto=('A','B','C');  如果邮件地址C不存在的话,整个都发不出去,A,B也收不到邮件,郁闷啊.....

试了好多次,就是不行啊..............急啊~~老大们帮帮忙啊~





use Mail::Sender;


@mailto=('邮件地址');


$sender = new Mail::Sender{smtp => 'SHMAIL-1', from => '我的邮件地址',
                                  auth => 'LOGIN',
                                  authid => '邮件帐号',
                                  authpwd => '密码'
       };

$sender->OpenMultipart({
                              to => \@mailto,
                              cc => \@mailcc,
                              subject => "######",
                              multipart => 'related'  
                             });
$sender->Body({encoding =>'7bit',ctype =>'text/html',charset=>'GBK',msg =>"HTML内容"});

$sender->Attach({
                         ctype => 'image/gif',
                         disposition => "inline; filename=\"test.gif\";\r\nContent-ID: <test>",
                         file => "c:/test.gif"
                      });
                     
                     
$sender->Close();

很简单
你别用openmultipart了,直接写个循环用Open一个一个发不就可以了?
或者你打开那个模块的debug,看看错在什么地方
或者你自己看看那个模块是怎么写的,具体的openmulti过程是怎样的


QUOTE:
原帖由 churchmice 于 2008-5-21 11:32 发表
很简单
你别用openmultipart了,直接写个循环用Open一个一个发不就可以了?
或者你打开那个模块的debug,看看错在什么地方
或者你自己看看那个模块是怎么写的,具体的openmulti过程是怎样的

老大~~~还是不太明白啊.......应该怎么改啊?T-T
ref $sender->Open({
          to => "$receiver",
          replyto =>"$send",
...
  })
$receiver可以是 aaa@ccc.com.tw,bbb@ccc.ddd
用,分隔
注意看说明文档有写..



QUOTE:
原帖由 apile 于 2008-5-21 12:47 发表
ref $sender->Open({
          to => "$receiver",
          replyto =>"$send",
...
  })
$receiver可以是 aaa@ccc.com.tw,bbb@ccc.ddd
用,分隔
注意看说明文档有写..

还是不行啊~

$receiver可以是 aaa@ccc.com.tw,bbb@ccc.ddd

如果 bbb@ccc.ddd 这个邮件地址在SMTP服务器上不存在的话整个就都发不出去啊,aaa@ccc.com.tw也收不到的.......
用上面讲的loop吧...


QUOTE:
原帖由 apile 于 2008-5-21 13:09 发表
用上面讲的loop吧...

菜啊~不知道该怎么写啊? -_-!! 只会照着列子改改的~~求助啊
用debug看了下

>> 220 ### Microsoft ESMTP MAIL Service, Version: 6.0.3790.3959 ready at  Wed, 21 May 2008 13:18:44 +0800

<< EHLO ####

>> 250-#### Hello [172.28.9.174]

>> 250-TURN

>> 250-SIZE

>> 250-ETRN

>> 250-PIPELINING

>> 250-DSN

>> 250-ENHANCEDSTATUSCODES

>> 250-8bitmime

>> 250-BINARYMIME

>> 250-CHUNKING

>> 250-VRFY

>> 250-X-EXPS GSSAPI NTLM LOGIN

>> 250-X-EXPS=LOGIN

>> 250-AUTH GSSAPI NTLM LOGIN

>> 250-AUTH=LOGIN

>> 250-X-LINK2STATE

>> 250-XEXCH50

>> 250 OK

<< AUTH LOGIN

>> 334 VXNlcm5hbWU6

<< c2hjcWFkbWlu

>> 334 UGFzc3dvcmQ6

<< YWJjZC4xMjM0

>> 235 2.7.0 Authentication successful.

<< MAIL FROM: <####@####.cn>

>> 250 2.1.0 ####@####.cn....Sender OK

<< RCPT TO: <####@####.cn>

>> 250 2.1.5 ####@####.cn

<< RCPT TO: <user2@####.cn>

>> 550 5.1.1 User unknown

<< quit



遇到未知的邮件地址就直接退出去勒哦~~~有什么办法能不退出去,继续执行啊???
终于搞定了

加上一句 skip_bad_recipients => 'true' 就可以了,忽略未知的邮件地址的,直接发送到正确的邮件地址列表的  


QUOTE:
原帖由 sumin_0527 于 2008-5-21 13:31 发表
终于搞定了

加上一句 skip_bad_recipients => 'true' 就可以了,忽略未知的邮件地址的,直接发送到正确的邮件地址列表的  

niubility