#!/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。我怎样才能做到这一点?提前谢谢。
答案 0 :(得分:1)
听起来你正试图解决两个问题:
对于第一点,它实际上取决于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。