代码,发送电子邮件(工作好):Perl的SMTP:使用非ASCII字符的身体无法发送电子邮件
#!/usr/bin/perl
use utf8;
use strict;
use warnings;
use Email::Sender::Simple qw(sendmail);
use Email::Sender::Transport::SMTP();
use Email::Simple();
use open ':std', ':encoding(UTF-8)';
sub send_email
{
my $email_from = shift;
my $email_to = shift;
my $subject = shift;
my $message = shift;
my $smtpserver = 'smtp.gmail.com';
my $smtpport = 465;
my $smtpuser = '[email protected]';
my $password = 'secret';
my $transport = Email::Sender::Transport::SMTP->new({
host => $smtpserver,
port => $smtpport,
sasl_username => $email_from,
sasl_password => $password,
debug => 1,
ssl => 1,
});
my $email = Email::Simple->create(
header => [
To => $email_to,
From => $email_from,
Subject => $subject,
],
body => $message,
);
$email->header_set('Content-Type' => 'text/html');
$email->header_set('charset' => 'UTF-8');
sendmail($email, { transport => $transport });
}
send_email('[email protected]', '[email protected]', 'Hello', 'test email');
只要我非ASCII字符添加到身体:
send_email('[email protected]', '[email protected]', 'Hello', 'test email. Русский текст');
它挂在调试输出的最后一条消息:
Net::SMTP::_SSL=GLOB(0x8d41fa0)>>> charset: UTF-8
Net::SMTP::_SSL=GLOB(0x8d41fa0)>>>
Net::SMTP::_SSL=GLOB(0x8d41fa0)>>> test email. Русский текст
Net::SMTP::_SSL=GLOB(0x8d41fa0)>>> .
如何解决?