6

发送消息时,我可以有这样的东西来设置 To 字段:(在 Perl 中)

To: "$name" <$email>

在 Perl 中,我可以使用 Email::Valid 验证 $email 部分,但是如何确保 $name 部分接受 Unicode 字符但不能被欺骗发送到多个地址或做一些其他讨厌的事情?例如这个

$email = 'bar@me.com';
$name = 'Foo" <foo@other.com>, "Bar';

似乎创建了一个像这样的 To 字段:

To: "Foo" <foo@other.com>, "Bar" <bar@me.com>

向两个地址发送电子邮件。

4

2 回答 2

8
use Email::Address qw();
use Encode qw(encode);

s{\R}{}g for $email, $name; # newlines be-gone
my $to = Email::Address->new($name => $email)->format;
print encode 'MIME-Header', $to;
于 2012-06-25T08:20:13.970 回答
2

对此可能没有简单的解决方案。我建议手动使用保守的解决方案。

/\p{L}/

匹配任何语言的任何 unicode 字母。根据您的软件的文化背景,随意添加点或破折号。

于 2012-06-25T08:31:17.187 回答