Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]7775[/thread]

Mailversand mittels Perl -Zeilenumbruch



<< |< 1 2 >| >> 14 Einträge, 2 Seiten
Gast Gast
 2006-03-09 10:44
#63635 #63635
Hallo

Ich versende via Perl Inhalte von formularen.
Nun habe ich das Problem, dass die Inhalte in meinem Textarea keine Zeilenumbrüchen in HTML Mails generieren. Da ich diese Aufgabe übernommen habe und keine Ahnung von Perl habe, wollte ich mal euch anfragen ob ihr helfen könnt. Wrapen tu ich den Text momentan wie folgt:
if($wrap_at > 0) {
$mail_fieldvalue = &wrap($mail_fieldvalue);
}

Was muss ich nun machen damit es Zeilenumbrüche gibt?

Thx
dominicn
 2006-03-09 10:49
#63636 #63636
User since
2003-08-08
327 Artikel
BenutzerIn
[default_avatar]
Woher nimmst du die Funktion &wrap? Was macht diese?
Ansonsten musst du einfach \n durch <br> ersetzen, das geht so:

Code: (dl )
$mail_fieldvalue =~ s/\n/<br>/g;
kirtas
 2006-03-09 10:56
#63637 #63637
User since
2006-03-09
1 Artikel
BenutzerIn
[default_avatar]
Hallo
Danke erstmals, wrappen tu ich wie folgt:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
sub wrap {

# FUNKTIONSPARAMETER
##
## Text zum Wrappen
my $txt = $_[0];


# WRAPPING
##
my @w_lines = ();

if(length($txt) > $wrap_at) {

for($i = 0; $i < length($txt); $i += $wrap_at) {

push @w_lines, substr($txt, $i, $wrap_at);

}

}

$txt = "";

$txt = join "\n", @w_lines;

}


Thx\n\n

<!--EDIT|renee|1142263056-->
dominicn
 2006-03-09 11:30
#63638 #63638
User since
2003-08-08
327 Artikel
BenutzerIn
[default_avatar]
Nutze bitte in Zukunft, die CODE-Tags dieses Forums, damit der Code besser zu lesen ist.

Benutze immer use strict; und deklariere deine Variablen mit my, z.B. for(my $i ...

Deine wrap-Funktion funktioniert ja ansonsten, jedoch ist es nicht sehr schön, wenn innerhalb von Worten umgebrochen wird, aber vielleicht ist das ja nicht so schlimm für dich.

Wenn du nur bei Leerzeichen umbrechen möchtest, könntest du es so umschreiben:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
sub wrap {
my $txt = $_[0];
my $wrap_at = 60;
my @w_lines = ();
my $l_wrapat;
if(length($txt) > $wrap_at) {
for(my $i = 0; $i < length($txt);$i+=$l_wrapat) {
$l_wrapat = $wrap_at;
if (substr($txt, $i, $l_wrapat) =~ /\s/) {
while ($i+$l_wrapat < length($txt) and substr($txt, $i+$l_wrapat, 1) !~ /\s/) { $l_wrapat-- }
}
my $nline = substr($txt, $i, $l_wrapat);
$nline =~ s/^\s*//g;
push(@w_lines, $nline);
}
}
$txt = join("\n", @w_lines);
}
renee
 2006-03-09 11:41
#63639 #63639
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Das letzte Leerzeichen vor der Position 60 kann man aber einfacher bestimmen:
Code: (dl )
my $pos_leerzeichen = rindex($string," ",60);
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
dominicn
 2006-03-09 11:48
#63640 #63640
User since
2003-08-08
327 Artikel
BenutzerIn
[default_avatar]
okay, hast recht. rindex kannte ich noch nicht, aber ich sehe gerade, dass man es dann wenigstens mit 60 - index(reverse($txt), " ") finden könnte ... naja, man lernt nie aus
Crian
 2006-03-13 14:38
#63641 #63641
User since
2003-08-04
5870 Artikel
ModeratorIn
[Homepage]
user image
nö könnte man nicht
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
jan
 2006-03-13 16:13
#63642 #63642
User since
2003-08-04
2536 Artikel
ModeratorIn
[Homepage] [default_avatar]
dominicn
 2006-03-13 21:01
#63643 #63643
User since
2003-08-08
327 Artikel
BenutzerIn
[default_avatar]
[quote=Crian,13.03.2006, 13:38]nö könnte man nicht[/quote]
okay, 61
murphy
 2006-03-13 23:20
#63644 #63644
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
[quote=dominicn,13.03.2006, 19:01][quote=Crian,13.03.2006, 13:38]nö könnte man nicht[/quote]
okay, 61[/quote]
Nein. Überlege doch zum Beispiel mal, was passiert wenn $str als letztes Zeichen ein Leerzeichen enthält. Dann liefert dein Code unabhängig von Länge und weiterem Inhalt in $str stets 60 zurück.
When C++ is your hammer, every problem looks like your thumb.
<< |< 1 2 >| >> 14 Einträge, 2 Seiten



View all threads created 2006-03-09 10:44.