如何更改我的电子邮件格式perl电子邮件

时间:2014-01-30 19:06:37

标签: perl email

#!/usr/bin/perl

$SUBJ="Your unique confirmation link";
$MSG="message.txt";
$USERS="list.txt";

open(IN,$USERS);

$id=12345;
while(chop($line=<IN>)){
    open(SM,"|/usr/sbin/sendmail $line");
    print(SM "To: $line\n");
    print(SM "Subject: $SUBJ\n");
    print(SM "Message-ID: <".time().".$id.qmail\@mycompany.com>\n");
    print(SM "From: \"mycompany\" <noreply@message.mycompany.com>\n");
    print("Message sent to $line\n");
    print(SM "Content-Type: text/html\n"); 
    open(FILE,$MSG);
    while($line=<FILE>){
    print(SM $line);
    }
    close(FILE);
    close(SM);
    $id++;
}

close(IN);

我有这个perl电子邮件脚本。此脚本向list.txt中的所有电子邮件发送一封电子邮件,该邮件位于message.txt中。在message.txt中,它是一个HTML代码。这个脚本是完美的bt 我的问题是我想发送这样的消息:  你好,等等你的独特链接是:http://www.mycompany.com/mylink.php?id=34。我想要一个随机链接。在每个发送的电子邮件中都有另一个mylink.php?id = randmom。我怎样才能做到这一点?提前谢谢。

1 个答案:

答案 0 :(得分:1)

听起来你正试图解决两个问题:

  • 如何为每封电子邮件生成唯一ID
  • 如何在每封电子邮件中嵌入唯一链接(当前从固定文本文件生成)

对于第一点,它实际上取决于ID的用途。一种可能性是只存储一个存储在数据库或文件中的持久计数器,该计数器会针对每个发出的电子邮件递增。另一种可能性是生成UUID - 您可以使用其中一个UUID modules on CPAN来实现此目的。无论哪种方式,如果ID对您的PHP脚本有意义,那么您可能希望将其存储在某个地方。

对于第二点,有许多可能的解决方案。最简单的方法是停止使用单独的文件作为电子邮件模板,并将模板内嵌在脚本中,如下所示:

print(<<_EOT_);
<html>
  <body>
    <p>Hello, here is your <a href="http://www.mycompany.com/mylink.php?id=${UniqueID}">Link</a>
   ... etc ...
  </body>
</html>
_EOT_

上面的示例使用“here doc”允许您直接在脚本中嵌入电子邮件文本。直到_EOT_的所有内容都是打印字符串的一部分。确保_EOT_本身就行,并且没有尾随空格!

一个更易于维护的解决方案,允许您继续使用单独的模板文件,将使用优秀的Template::Toolkit