使用电子邮件发送::用简单到/从正文中,而不是头

问题描述 投票:1回答:2

目前我们使用的打印通过sendmail的管道,它工作正常发送HTML邮件。

$fh->open( q{|sendmail -f<fromaddress> .......} );

这是来自包含了像文本模板...

From: <Fromaddress>
Reply-to: <replyaddress>
Subject: etc
Mine-Version: 1.o
Content-Type: text/html

<!DOCTYPE html...
<html...
rest of body

现在我想用Email ::简单的文字相同

my $email = Email::simple->create(
    header => $header,
    body => $body
);

sendmail( $email, { transport => $transport });

我的头就像

[ To => <toaddress>, From => <fromaddress>, 'Content-Type' => 'text/html' ]

这一切都将正常,但它也包括“发件人:..为::主题..”作为HTML的一部分也显示,而sendmail的消耗此使用。

我可以使用正则表达式来去掉那中包含的内容文字标题的内容(因为它已经产生,但那种感觉风险倾向和笨重的),但我想知道,是否有电子邮件::丢弃,或者使用的简单方法只有HTML而不是从/到提供的电子邮件::简单/主题特定的头文件?

我看过here,但不能看到任何引用。

perl email
2个回答
2
投票

我假设你$body变量包含您的模板文件中的一个文本。而那些模板包含标题,他们最终会在你的电子邮件的正文复制。

最好的办法是编辑你的模板,以删除页眉部分。

但是,如果你不能这样做,因为某些原因,你可以将它传递给$body方法之前预处理create()。事情是这样的,也许:

(undef, $body) = split /\n\n/, $body, 2;

2
投票

其实答案是比我想象的更简单...

如果你只是使用

my $email = Email::Simple->new( $text );
sendmail( $email, { transport => $transport });

它将使用的标题从文本/体,而不是将它们包含在主体。

如果您使用

my $email = Email::Simple->create( $text );
sendmail( $email, { transport => $transport });

这似乎需要单独报头,并发送文本的标题为主要数据/ HTML指称发送的一部分。

© www.soinside.com 2019 - 2024. All rights reserved.