The ISP/cable provider Comcast blocks port 25 on its SMTP service for customers, requires password authentication and also, it turns out, doesn't like people using server names in the MAIL FROM field of the SMTP handshake. This last presents a problem as Mail::Mailer::smtp is hard wired to use the results of Mail::Util's mailaddress in the 'From' field. Mail::Mailer transmission modules, however, can be usefully subclassed, so the following works to send mail to Comcast:

mkdir -p lib/Mail/Mailer/smtp

And then create in this directory the file From.pm

package Mail::Mailer::smtp::From; use base Mail::Mailer::smtp; sub exec { my ($self, $exe, $args, $to) = @_; my %opt = @$args; my $host = $opt{Server} || undef; $opt{Debug} ||= 0; my $smtp = Net::SMTP->new($host, %opt) or return undef; if($opt{Auth}) { $smtp->auth(@{$opt{Auth}}) or return undef; } ${*$self}{sock} = $smtp; # # Adding a patch to set the From Address.. # $smtp->mail($self->mailaddress); $smtp->mail( $opt{From} ) if $opt{From}; # # End patch. # $smtp->to($_) for @$to; $smtp->data; untie *$self if tied *$self; tie *$self, 'Mail::Mailer::smtp::pipe', $self; $self; } 1;

And then you can send files to Comcast using code equivalent to this:

#! /usr/bin/perl use warnings; use strict; use lib './lib'; use Mail::Mailer::smtp::From; use Mail::Send; my $msg= Mail::Send->new; $msg->to('An@Address'); $msg->subject('Test Code'); my $fh = $msg->open('smtp::From', Server => 'smtp.comcast.net', Auth => [ 'user','pass' ], Port => 587, From => 'me@comcast.net', Debug => 1 ); print $fh "This is a test message.\n"; $fh->close or die("Could not send message.\n");

In reply to Getting Mail::Send to work with Comcast by dwm042

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.