Skip to content

Instantly share code, notes, and snippets.

@wchristian
Created January 31, 2012 13:30
Show Gist options
  • Save wchristian/1710478 to your computer and use it in GitHub Desktop.
Save wchristian/1710478 to your computer and use it in GitHub Desktop.
utf8 email demo
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)
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