2014-01-30 70 views
0
#!/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\" <[email protected]>\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。我怎樣才能做到這一點?提前致謝。如何更改我的電子郵件格式的Perl電子郵件

+0

爲什麼你在這裏使用Perl和PHP的其他地方的任何原因? – 2014-01-30 19:08:36

+1

使用'chomp'而不是'chop' – toolic

+0

是的,我需要隨機的和獨特的。任何幫助?也許一個可能性可以是將消息直接整合到腳本中。但我該怎麼做? – user3254576

回答

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_ 

上面的例子使用了「在這裏的文檔」,讓您直接嵌入電子郵件正文在你的腳本中。一切達到_EOT_是打印的字符串的一部分。確保_EOT_本身在線,沒有尾隨空格!

一個更易維護的解決方案,可讓您繼續使用單獨的模板文件,將使用優秀的Template::Toolkit

相關問題