Created
January 31, 2012 13:30
-
-
Save wchristian/1710478 to your computer and use it in GitHub Desktop.
utf8 email demo
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Subject: Ihre Bestellung vom 31.01.2012 12:55:58 (meepmoopmarp.at) | |
MIME-Version: 1.0 | |
Content-Type: text/plain; charset=UTF-8 | |
Content-Transfer-Encoding: 8bit | |
To: [email protected] | |
From: [email protected] | |
X-Email-Sender-From: [email protected] | |
X-Email-Sender-To: [email protected] | |
Lines: 133 | |
Sehr geehrte(r) Herr , | |
über die E-Mail Adresse wurde soeben (31.01.2012 12:55:58) eine | |
Bestellung aufgegeben. Damit Ihre Bestellung bearbeitet wird, müssen Sie uns diese | |
E-Mail zurücksenden. Sollten Sie in Ihrer Bestellung nachträglich Fehler vorfinden, | |
so schreiben Sie diese bitte in Ihre Rückmail. | |
Sollten Sie diese Bestellung nicht aufgegeben haben, schicken Sie uns diese E-Mail | |
bitte mit einem Vermerk zurück. | |
Die folgenden Angaben wurden bei der Bestellung gemacht: | |
Ordercode: YRxNGJHscBRLSggH7rxuJuaAvUibtdMI | |
Kundennummer: 27918 | |
Firma / Verein / Organisation: 27918 | |
Anrede: Herr | |
Name: | |
Strasse: | |
PLZ / Ort: | |
Land: | |
Telefon: | |
Fax: | |
Handy: | |
EMail: | |
MwSt: 19% | |
Host: 127.0.0.1 | |
Zahlungsdaten | |
Zahlungsart: | |
So haben Sie uns gefunden: | |
Partner: | |
Domain und Paketdaten | |
Domain: meepmoopmarp.at Übernahme: Nein Preis: 19,00 € / Jahr | |
Domain: meepmoopmarp.be Übernahme: Nein Preis: 19,00 € / Jahr | |
Domain: meepmoopmarp.biz Übernahme: Nein Preis: 12,00 € / Jahr | |
Domain: meepmoopmarp.bz Übernahme: Ja Preis: 56,00 € / Jahr | |
Domain: meepmoopmarp.cc Übernahme: Nein Preis: 29,00 € / Jahr | |
Domain: meepmoopmarp.ch Übernahme: Nein Preis: 29,00 € / Jahr | |
Domain: meepmoopmarp.co.at Übernahme: Nein Preis: 19,00 € / Jahr | |
Domain: meepmoopmarp.co.uk Übernahme: Nein Preis: 21,00 € / Jahr | |
Domain: meepmoopmarp.com Übernahme: Nein Preis: 12,00 € / Jahr | |
Domain: meepmoopmarp.de Übernahme: Nein Preis: 8,00 € / Jahr | |
Domain: meepmoopmarp.eu Übernahme: Nein Preis: 15,00 € / Jahr | |
Domain: meepmoopmarp.gs Übernahme: Nein Preis: 47,00 € / Jahr | |
Domain: meepmoopmarp.in Übernahme: Nein Preis: 29,00 € / Jahr | |
Domain: meepmoopmarp.info Übernahme: Nein Preis: 12,00 € / Jahr | |
Domain: meepmoopmarp.it Übernahme: Nein Preis: 79,00 € / Jahr | |
Domain: meepmoopmarp.jp Übernahme: Nein Preis: 149,00 € / Jahr | |
Domain: meepmoopmarp.li Übernahme: Nein Preis: 29,00 € / Jahr | |
Domain: meepmoopmarp.name Übernahme: Nein Preis: 14,00 € / Jahr | |
Domain: meepmoopmarp.net Übernahme: Nein Preis: 12,00 € / Jahr | |
Domain: meepmoopmarp.or.at Übernahme: Nein Preis: 19,00 € / Jahr | |
Domain: meepmoopmarp.org Übernahme: Nein Preis: 12,00 € / Jahr | |
Domain: meepmoopmarp.pl Übernahme: Nein Preis: 59,00 € / Jahr | |
Domain: meepmoopmarp.ru Übernahme: Nein Preis: 59,00 € / Jahr | |
Domain: meepmoopmarp.se Übernahme: Nein Preis: 55,00 € / Jahr | |
Domain: meepmoopmarp.tk Übernahme: Nein Preis: 33,00 € / Jahr | |
Domain: meepmoopmarp.tv Übernahme: Nein Preis: 38,00 € / Jahr | |
Domain: meepmoopmarp.vg Übernahme: Nein Preis: 47,00 € / Jahr | |
Domain: meepmoopmarp.ws Übernahme: Nein Preis: 19,00 € / Jahr | |
Paket: medium | |
Zahlung: monatlich | |
Preise | |
4.99 Euro / monatlich | |
Einrichtungsgebühr: 9.99 Euro | |
#################################### | |
Widerrufsbelehrung | |
Widerrufsrecht | |
Sie können Ihre Vertragserklärung innerhalb von 14 Tagen ohne Angabe von Gründen in | |
Textform (z. B. Brief, Fax, E-Mail) widerrufen. Die Frist beginnt nach Erhalt dieser | |
Belehrung in Textform, jedoch nicht vor Vertragsschluss und auch nicht vor Erfüllung | |
unserer Informationspflichten gemäß Artikel 246 § 2 in Verbindung mit § 1 Abs. 1 und | |
2 EGBGB sowie unserer Pflichten gemäß § 312g Abs. 1 Satz 1 BGB in Verbindung mit | |
Artikel 246 § 3 EGBGB. Zur Wahrung der Widerrufsfrist genügt die rechtzeitige | |
Absendung des Widerrufs. Der Widerruf ist zu richten an: | |
Profihost AG | |
Am Mittelfelde 29 | |
30519 Hannover | |
[email protected] | |
Fax: +49 (511) 51518282 | |
Widerrufsfolgen | |
Im Falle eines wirksamen Widerrufs sind die beiderseits empfangenen Leistungen | |
zurückzugewähren und ggf. gezogene Nutzungen (z. B. Zinsen) herauszugeben. Können Sie | |
uns die empfangene Leistung ganz oder teilweise nicht oder nur in verschlechtertem | |
Zustand zurückgewähren, müssen Sie uns insoweit ggf. Wertersatz leisten. Dies kann | |
dazu führen, dass Sie die vertraglichen Zahlungsverpflichtungen für den Zeitraum bis | |
zum Widerruf gleichwohl erfüllen müssen. Verpflichtungen zur Erstattung von Zahlungen | |
müssen innerhalb von 30 Tagen erfüllt werden. Die Frist beginnt für Sie mit der | |
Absendung Ihrer Widerrufserklärung, für uns mit deren Empfang. | |
Besondere Hinweise | |
Ihr Widerrufsrecht erlischt vorzeitig, wenn der Vertrag von beiden Seiten auf Ihren | |
ausdrücklichen Wunsch vollständig erfüllt ist, bevor Sie Ihr Widerrufsrecht ausgeübt | |
haben. | |
Ende der Widerrufsbelehrung | |
#################################### | |
Mit freundlichen Grüßen | |
Ihr Profihost - Team | |
------------------------------- | |
Profihost AG | |
Am Mittelfelde 29 | |
30519 Hannover | |
Deutschland | |
Tel.: +49 (511) 5151 8181 | Fax.: +49 (511) 5151 8282 | |
URL: http://www.profihost.com | E-Mail: [email protected] | |
Sitz der Gesellschaft: Hannover, USt-IdNr. DE813460827 | |
Registergericht: Amtsgericht Hannover, Register-Nr.: HRB 202350 | |
Vorstand: Cristoph Bluhm, Sebastian Bluhm, Stefan Priebe | |
Aufsichtsrat: Prof. Dr. jur. Winfried Huck (Vorsitzender) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
use strict; | |
use warnings; | |
package CMS::Email; | |
use Sub::Exporter::Simple qw( send_email make_email_text ); | |
use Template; | |
use Carp 'croak'; | |
use Try::Tiny; | |
use IPC::Run3 'run3'; | |
sub send_email { | |
my ( $self, $template, %opt ) = @_; | |
my $email_text = $self->make_email_text( $template, $opt{args} ); | |
require Email::Abstract; | |
my $email = Email::Abstract->new( $email_text ); | |
# these seem to be needed to ensure emails are decoded from utf8 by clients | |
# headers provided by stefan | |
$email->set_header( "MIME-Version" => "1.0" ); | |
$email->set_header( "Content-Type" => "text/plain; charset=UTF-8" ); | |
$email->set_header( "Content-Transfer-Encoding" => "8bit" ); | |
# This check exists because there's no other sane way of determining whether | |
# a given blob of text is only an email body or a full-fledged email. | |
die "No subject header defined in template." if !$email->get_header( "Subject" ); | |
if ( $opt{gpg} ) { | |
my $body = $email->get_body; | |
run3 [qw(gpg --homedir .gnupg -u A9AA47F8 --clearsign -)], \$body, \my $out, \my $err; | |
$err =~ s/gpg: WARNING: unsafe ownership on homedir.*\n//; | |
die $err if $err; | |
$email->set_body( $out ); | |
} | |
my %fallback = %{ $opt{fallback} || {} }; | |
for my $header ( keys %fallback ) { | |
next if $email->get_header( $header ); | |
$email->set_header( $header => $fallback{$header} ); | |
} | |
require Email::Sender::Simple; | |
Email::Sender::Simple->import( "sendmail" ); # necessary because the func is generated, not static | |
my $mail_success = try { | |
my $options = {}; | |
if ( my $transport = $self->config->{email_transport} ) { | |
eval "require $transport;"; | |
$options->{transport} = $transport->new; | |
} | |
sendmail( $email, $options ); | |
} | |
catch { | |
die $_; | |
}; | |
return $mail_success; | |
} | |
sub make_email_text { | |
my ( $self, $template, $args ) = @_; | |
my $vars = { baseurl => $self->base_url, cgi => $self->req }; | |
my $tt = Template->new( { VARIABLES => $vars, INCLUDE_PATH => "tmpl/email", RECURSION => 1 } ); | |
my $output; | |
$tt->process( "$template.tmpl", $args, \$output ) or croak $tt->error; | |
return $output; | |
} | |
1; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment