【问题标题】:I am using MIME::Lite::TT to send mail with perl. How to save the mail locally before sending我正在使用 MIME::Lite::TT 通过 perl 发送邮件。发送前如何在本地保存邮件
【发布时间】:2015-04-25 15:28:12
【问题描述】:

模板

 <html>
 <body>

 <strong>Hi [% first_name %]</strong>,

 <p>
 This is to confirm your purchase of $ [% amt_due %].
 </p>

 <p>
 Thank you!
 </p>
 </body>
 </html>

   `$params{first_name} = 'Frank';
    $params{last_name}  = 'Wiles';
    $params{amt_due}    = '24.99';
    my $msg = MIME::Lite::TT::HTML->new(
        From        =>  'admin@example.com',
        To          =>  'frank@example.com',
        Subject     =>  'Your recent purchase',
        Template    =>  {
                            text    =>  'test.txt.tt',
                            html    =>  'test.html.tt',
                            },
        TmplOptions =>  \%options,
        TmplParams  =>  \%params,
 );

发送前如何在本地保存邮件。它具有作为 html 的模板,其中填充了参数和 pdf 附件。 是否可以使用填充值保存模板。

【问题讨论】:

  • 向我们展示您的代码您尝试了什么。
  • @serenesat 添加了代码。

标签: perl email mime


【解决方案1】:

要打印填充的模板,我们可以使用

$$email{data}

因为 $email 是对哈希的引用,而 data 是电子邮件正文内容的关键。 要打印整封邮件,请使用上述解决方案。

【讨论】:

  • 这是破坏封装。 $email 是对 MIME::Lite 对象的引用,该对象恰好被实现为哈希。我想你正在寻找$email-&gt;data
  • 是的@cjm 和上面的声明服务。
【解决方案2】:

MIME::Lite::TT 只是一个预处理器;调用 MIME::Lite::TT-&gt;new 返回一个普通的 MIME::Lite 对象。只需以您喜欢的任何方式保存该对象即可。

比如你可以print it to a filehandle:

my $email = MIME::Lite::TT->new(...);
$email->print(\*STDOUT);
$email->send;

【讨论】:

  • @quorious,这应该是完整的 MIME 消息,包括附件。
  • 是的,没错。我还附加了一个模板并从脚本传递值。是否可以保存填充的模板?
  • 我以为我已经解释过了,模板处理发生在MIME::Lite::TT-&gt;new 期间。您从new 返回的对象是一个普通的MIME::Lite 电子邮件,其中已经填充了模板。
  • 是否可以只保存模板而不是整个邮件?
  • 感谢@cjm 的所有帮助。经过一番挖掘,我找到了解决方案。我们可以通过 "$$email{data}" 获取填充的模板。
猜你喜欢
  • 2016-12-13
  • 2012-04-22
  • 2011-05-23
  • 2011-12-19
  • 1970-01-01
  • 1970-01-01
  • 2012-04-17
  • 2014-09-29
  • 2014-11-15
相关资源
最近更新 更多