HP Unix 发送邮件的问题

来源:互联网 发布:崩坏学园3初始号淘宝 编辑:程序博客网 时间:2024/05/16 13:07

最近要写一段服务器端发送邮件的代码,由于服务器有可能是Linux也有可能是HP Unix。一开始打算直接调用mail命令发送,结果在HP Unix上编译出错,后来发现mail的选项在Linux和HP Unix是不同的。 所以必须要考虑到平台的可移植性。要发送的邮件包括附件,cc, bcc列表,一开始我以为这没什么可难的,不就是跨平台吗? 预定义宏就解决了,于是#ifdef HPUNIX....就出来了,这回到时编译没问题了,可是在HP Unix上用mail命令没办法cc啊, 赶快google,原来HP Unix的mail命令确实不支持类似-c -b的选项。对HP Unix的mail命令实在是无语了。有些人给出建议说不就是cc吗,cc和收件人也没什么区别,就直接将cc列表直接放在收件人后面,这样也能达到发送到多个人的目的。说的是没错,拿来一试,用outlook一看,邮件头的cc列表是空的,想要cc的邮件地址都到收件人后面去了。这原本也没什么,可苛刻的老大坚决不同意了。没办法,我打算在HP Unix中放弃使用mail命令了。最后我选择了sendmail来发送邮件,并采用下面的这种方式发送邮件,也避免了跨平台的问题。

    const std::string MAIL="/usr/sbin/sendmail";

 

    std::string mailstr = "";
    std::string subject = "XXX"
    std::string cclist  = "xxx,xxx";
    std::string bcclist = "xxx,xxx";
    std::string from    = "xxxsss";

 

    mailstr += "(cat <<OUTPUT; cat " + localpath + "/" + filename + ")";
    mailstr += " | " + MAIL + " -t "
    if (!from.empty())
        mailstr += "/nFrom: " + from;
    if (!subject.empty())
        mailstr += "/nSubject: " + subject;
    if (!cclist.empty())
        mailstr += "/nCc: " + cclist;
    if (!bcclist.empty())
        mailstr += "/nBcc: " + bcclist;
    mailstr += "/nOUTPUT";

 

    system(mailstr.c_str());

原创粉丝点击