Почтовый скрипт Perl - проблема с кодировкой контента - PullRequest
1 голос
/ 13 февраля 2012

Я решил погрузиться в perl с некоторыми начальными скриптами на их сайте. Я начал с http://learn.perl.org/examples/email.html, чтобы попробовать базовый сценарий отправки электронной почты.

Вот фактический код:

#!/usr/bin/perl
use strict;
use warnings;

#Character encoding var
my $encoding='text/plain; charset="iso-8859-5"';

#Create the message
use Email::MIME;
my $message = Email::MIME->create(
        header_str => [
                From => 'gmail@gmail.com',
                To => 'gmail2@gmail.com',
                Subject => 'I sent you this message using Perl.',
        ],
        body_str => 'I sent you this message using Perl.  One of those languages that would\' would\'ve been helpful much sooner in my life...',
        );
use Email::Sender::Simple qw(sendmail);
sendmail($message);

Что я получаю, когда делаю perl script.pl - это сообщение об ошибке

body_str was given, but no charset is defined at /usr/local/share/perl/5.10.1/Email/MIME.pm line 243
    Email::MIME::create('Email::MIME', 'header_str', 'ARRAY(0x9a04818)', 'body_str', 'I sent you this message using Perl.  One ...') called at script.pl line 10

Я провел поиск по модулю Email :: MIME и нашел раздел body_str, но он не пролил свет на сообщение об ошибке. Я предполагаю, что мне нужно установить кодировку, но я не знаю, как это сделать.

1 Ответ

5 голосов
/ 13 февраля 2012

Если вы посмотрите на раздел SYNOPSIS в документах , вы увидите, что вы также можете передать хэш-функцию "attribute" для create (). Вы можете определить кодировку здесь. Вы также можете обнаружить, что здесь вам также потребуется определить кодировку. Например, вы можете сделать:

my $message = Email::MIME->create(
    header_str => [
            From    => 'gmail@gmail.com',
            To      => 'gmail2@gmail.com',
            Subject => 'I sent you this message using Perl.',
    ],
    attributes => {
        encoding => 'quoted-printable', 
        charset  => "US-ASCII",
    },
    body_str => 'I sent you this message using Perl.  One of those languages that would\' would\'ve been helpful much sooner in my life...',
);
...