In the latest Software Freedom Law Show Bradley mentioned the X-Face email header and challenged listeners to send them an email containing the X-Face header. So here is the small Perl script I’ve whipped together to send them an email trough GMail:
use strict; use warnings; use Net::SMTP::TLS; my ($from, $password) = ('[email protected]', 'MySuperSecretPassword'); my $mailer = new Net::SMTP::TLS( 'smtp.gmail.com', Hello => 'smtp.gmail.com', Port => 587, User => $from, Password => $password); $mailer->mail($from); $mailer->to('[email protected]'); my $data = <<'EOF'; X-Face: "8.]Z_3ptuNK'CA~DM>M,G.T(h=1.y9"0gXW3V91E:dw2?<!*Q^sb~d_uw@G}&$K-j&(NA r'HUZR(COBX3qV"G`kU)sLB5B"muL)Q)N/"GMdS#03yZS}}S$w,ALf`F>|&G2R(?/no'F2g4%8Fv. J1p5K-^1epKXxIG)mj4}nGWTi<=iz8n)bUVhLu}MXRFl9"J%'=-;IfMXcuPK>-%^;$uW87O/B Subject: Hello X-Faced World! email body. EOF $mailer->data(); $mailer->datasend($data); $mailer->dataend(); $mailer->quit();
The code is largely based on this snippet: Sending Mail Through Gmail with Perl. The X-Face header was generated using the Online X-Face Converter (yes, I know that there is a Image::XFace module, but it was very cryptic – it didn’t mention supported input / output formats). One word of warning: if you are using ActivePerl under Windows, Net::SMTP::TLS isn’t available in the default module list (AFAIK, because of encryption restrictions), so you might need to experiment with alternative package sources or using Linux :-). I’ve also tested the script with an email account I control (using Thunderbird with the Mnenhy plugin – which can read but not create X-Face emails) and it worked nicely.
There you have it: how to use an old (from the 1980s according to Wikipedia) method for embedding pictures which is not supported by most of the email clients 🙂
3 responses to “Sending an X-Face email with Perl+GMail”
Very good script. Thanks for the good work.
Net::SMTP::TLS is included into Strawberry Perl for Windows, as many other modules that depend on C libraries.
@chorny: thank you for reminding me of Strawberry Perl. Also you have an interesting blog. Count me in as a subscriber 🙂