Farseer

导航

【项目实施随笔】发个邮件可真困难

用户想在某个动作之后给相关人员发个邮件提醒,由于他们使用的发邮件的东西都不一样,有的用Outlook,有的用OutlookExpress,还有的是FoxMail的忠实用户,所以干脆用SysMailer通过CDO组件发送得了,代码如下:

Code);

    sysMailer.fromAddress("
TestTest@126.com");


    sysMailer.tos().appendAddress("Test111
@sina.com.cn");
    sysMailer.tos().appendAddress("
TestTest@hotmail.com");
    sysMailer.ccs().appendAddress(
'TestTest@sina.com.cn');

    sysMailer.subject(
"Hello,Just a test");

    sysMailer.htmlBody(
@"<html>
                            <head></head>
                            <body>
                                <table>
                                    <tr>
                                        测试邮件
                                    </tr>
                                    <tr>
                                        测试邮件2
                                    </tr>
                                </table>
                            </body>
                        </html>
");

    sysMailer.attachments().add(
@"C:\replaceOnlookup.jpg");
    sysMailer.attachments().add(
@"C:\Pick2.jpg");

    sysMailer.sendMail();
}

运行,不幸,得到如下错误:

咋还出乱码了那,还好有代码,去网上一查,还好我们有bing,有问题"bing"一下(微软可真会找乐,搞这么名字做引擎。。。)
[COMException (0x80040213): 与服务器的传输连接失败。
原来是我的McAfee把我给阻止了,打开McAfee的控制台,双击 访问保护,找到 禁止群发邮件蠕虫发送邮件,把Ax32.exe添加到要排除的进程中就可以了,至于其他杀毒软件,在具体情况具体分析吧。
OK,终于可以发了,应该一切OK了吧,且慢,我要发送给两个邮件地址,咋只有后一个地址能收到?AX4.0的bug,修改如下,找到类SysMailerAddressField的appendAddress方法,修改

if (strlen(addresses) > 0)
{
    address 
= ',' + address;
}

if (strlen(addresses) > 0)
{
    address 
= addresses+ ',' + address;
}

好了,终于消停了。

posted on 2009-07-16 16:07  佛西亚  阅读(759)  评论(1编辑  收藏  举报