【问题标题】:How is it possible to use a special character (a star) in the "from" field using Perl's sendmail如何使用 Perl 的 sendmail 在“发件人”字段中使用特殊字符(星号)
【发布时间】:2015-06-03 07:57:32
【问题描述】:

我正在使用 Perl 的 SENDMAIL 从我的网站接收电子邮件:

open(SENDMAIL, "|$sendmail") or die "Cannot open $sendmail: $!";
    print SENDMAIL "From: $from\n";
    print SENDMAIL "Subject: $subject\n";
    print SENDMAIL "To: $to\n";
    print SENDMAIL "Content-type: text/plain\n\n";
    print SENDMAIL $message;
close(SENDMAIL);

我想将 $from 变量修改为如下所示:

$from = "&#x2605; David Jones <david.jones@oozicle.com>"

现在发生的事情是我只看到与号等,而没有显示星号。

我知道可以使用特殊字符,因为我收到包含它们的垃圾邮件。

是否可以使用 SENDMAIL 做到这一点?

【问题讨论】:

  • 这不是一个真正的 Perl 问题,因为您并没有真正使用 Perl 做任何事情,只是将输出通过管道输出到 sendmail,这在任何形式或形式上都不是“Perl 的”。
  • 谢谢。我只通过 Perl 使用过它,我在写问题时没有考虑清楚。

标签: perl email sendmail mime html-entities


【解决方案1】:
use Encode qw( encode );

my $name = "\x{2605} David Jones";
my $addr = 'david.jones@oozicle.com';

my $from_header = encode('MIME-Header', $name) . ' <' . $addr . '>';

【讨论】:

  • 我不知道你是否可以编码整个东西,但你绝对可以编码文本部分。
  • 您的解决方案更通用 - 在这个非常特殊的情况下(单个 utf8 字符),下面的变体可能会获得更清晰的结果encode('MIME-B', "\x{2605}"). " David Jones &lt;david.jones@oozicle.com&gt;"
  • @Andrzej A. Filip,我不知道您所说的更清洁是什么意思,因为它对用户完全透明。按照惯例,邮件客户端对整个“名称”进行编码。
  • 恕我直言,从“原始电子邮件”的角度来看,它会更干净。你是对的,它不应该有所作为但是“一些”电子邮件客户端会显示“原始”主题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
  • 2014-08-17
  • 1970-01-01
相关资源
最近更新 更多