ugrás a tartalomhoz

Email küldés Perlben

lorko · 2007. Aug. 29. (Sze), 17.25
Sziasztok,

Szeretnék egy egyszerű email küldést csinálni perl-ben, de nem igazán megy.
A probléma az ékezetes karakterekkel van.
Az igény az lenne, hogy a levelezőkben olvasható legyen(ékezetek ne peregjenek szét), ami némelyikben rendben is van, de akad ahol nem működik.
Próbáltam már mindent, olvastam már minden felé de semmi se tökéletes(vágy áll ahhoz közel).
Ha valakinek van erre bevált megoldásam, vagy egy link amin leírják kérem írja meg.


Ez itt a kód:
#!/usr/bin/perl

use CGI ':standard';
use CGI::Carp qw(fatalsToBrowser);
use MIME::QuotedPrint;
use Encode;
use Mail::Sendmail;
use Data::Validate::Email qw(is_email is_email_rfc822);
use utf8;
use strict;


my $emailfrom = 'honnan##kukac##domani.hu';
my $emailto = 'hova##kukac##domani.hu';  
&mailto( $emailfrom, $emailto, "Üzenet tárgya", "Ez az üzenet."); 

sub mailto{
my $from	= shift;
my $to 		= shift;
my $subject = shift;
my $message = shift;

my %mail = ( To      => $to,
			 From    => $from,
			 Subject => $subject,
			 Message => $message
		   );

	  $mail{'Content-type'} = 'text/plain; charset="UTF-8"';
	  $mail{'Content-Transfer-Encoding'} = 'Content-Transfer-Encoding: quoted-printable';

	  sendmail(%mail) or return "hiba";
	  #$Mail::Sendmail::error;       
}
 
1

csak a subject nem jó

lorko · 2007. Aug. 29. (Sze), 19.15
csak a subject-nél esnek szét a karakterek.
mint mindig utf-8 gond van,
tehát ha valaki tud az írjon valami biztatót.
2

huj,huj, hajra :)

kilvadi · 2007. Aug. 29. (Sze), 20.10
http://en.wikipedia.org/wiki/MIME#Encoded-Word

azt hiszem ez alapjan sikerulni fog.
3

működik

lorko · 2007. Aug. 30. (Cs), 11.33
köszönöm a segítséget, most már működik valamelyest, de a hosszú ő és ű az nem megy.:(

#!/usr/bin/perl

use CGI ':standard';
use CGI::Carp qw(fatalsToBrowser);
use Encode;
use MIME::QuotedPrint;
use MIME::Words qw(:all);
use MIME::AltWords qw(:all);
use Mail::Sendmail;
use Data::Validate::Email qw(is_email is_email_rfc822);
use utf8;
use strict;
use Data::Dumper;

print header(-type    => 'text/html',
            -charset => 'utf-8');

my $emailfrom = 'info##kukac##domain.hu';
my $emailto = param('emailaddres01');
my $subj = param('emailsubject01');
my $mes = 'Ez az üzenet maga Adatokkal Ellenőrzése';

print "email küldése a $emailto \n";
print "email subject $subj \n";   
print "email message $mes \n";                                                    

&mailto( $emailfrom, $emailto, $subj, $mes);               

sub mailto{
my $from	= shift;
my $to 		= shift;
my $subject = shift;
my $message = shift;
$subject = encode_mimeword($subject);

my %mail = ( To      => $to,
             From    => $from,
          Subject => $subject,
          Message => $message,
         );

     $mail{'Content-type'} = 'text/plain; charset="UTF-8"';
     $mail{'Content-Transfer-Encoding'} = 'Content-Transfer-Encoding: quoted-printable';

     sendmail(%mail) or return "hiba";
     #$Mail::Sendmail::error;       
}
   
4

megszületett a megoldás

lorko · 2007. Aug. 30. (Cs), 15.45
a lényeg az előző kódhoz képest:
...
my $message = shift;

$subject = encode("iso-8859-2", $subject);
$subject = encode_mimeword($subject, 'Q', 'ISO-8859-2');

my %mail = ( To      => $to,
...
remélem valakinek segít.
5

szerintem

kilvadi · 2007. Aug. 30. (Cs), 17.11
szerintem vmi ilyesmi kell neked (nem probaltam ki)

$subject = "=?utf8?Q?".encode_qp($subject,'')."?=";