我试过了:
#!/usr/bin/perl
$to = 'abcd@gmail.com';
$from = 'webmaster@yourdomain.com';
$subject = 'Test Email';
$message = 'This is test email sent by Perl Script';
open(MAIL, "|/usr/sbin/sendmail -t");
# Email Header
print MAIL "To: $to\n";
print MAIL "From: $from\n";
print MAIL "Subject: $subject\n\n";
# Email Body
print MAIL $message;
close(MAIL);
print "Email Sent Successfully\n"
但它带有The system cannot find the path specified
。
我也尝试过:
#!/usr/bin/perl
use MIME::Lite;
$to = 'abcd@gmail.com';
$cc = 'efgh@mail.com';
$from = 'webmaster@yourdomain.com';
$subject = 'Test Email';
$message = 'This is test email sent by Perl Script';
$msg = MIME::Lite->new(
From => $from,
To => $to,
Cc => $cc,
Subject => $subject,
Data => $message
);
$msg->send;
print "Email Sent Successfully\n";
但它会以SMTP Failed to connect to mail server: No such file or directory at G:\email_test.pl line 18
如何解决此问题/这些问题,以便我可以成功发送电子邮件?这些似乎是使用PERL发送电子邮件时使用的两个常见示例,我无法让它们工作。
答案 0 :(得分:2)
如果您收到G:\email_test.pl
,我假设您正在使用Windows计算机。我在程序中看到open(MAIL, "|/usr/sbin/sendmail -t");
,它指的是Unix / Linux系统上的程序。
在Perl中,Net::SMTP模块几乎带有所有Perl发行版。我强烈建议人们使用它,除非他们需要对邮件进行MIME编码。
该模块使用起来非常简单,尽管不像其他电子邮件模块那么简单。 Net::SMTP
假设您了解SMTP的工作原理。幸运的是, SMTP 中的 S 代表 Simple 。当然,称之为 Simple 的人就是认为Emacs是一个直观的程序编辑器的人。
# /usr/bin/env perl
use strict;
use warnings;
use feature qw(say);
use constant {
SMTP_HOST => 'mailhost',
TO => 'abcd@gmail.com',
FROM => 'efgh@mail.com',
SUBJECT => 'Test Email',
USER => 'question_guy',
PASSWORD => 'swordfish,
};
my $smtp = Net::SMTP->new( SMTP_HOST ) # This is your SMTP host
or die qq(Cannot create Net::SMTP Object);
$smtp->auth( USER, PASSWORD ) # If you have to use authentication
or die qq(Can't authenticate into ) . SMTP_HOST;
$smtp->mail( FROM );
$smtp->to( TO );
my $message = "Subject: " . SUBJECT . "\n"
. "To: " . TO . "\n"
. 'This is test email sent by Perl Script';
$smtp->data;
$smtp->datasend( $message );
$smtp->dataend;
$smtp->quit;
以上内容未经过测试,但我是根据我编写的使用Net::SMTP
的程序输入的。查看Net::SMTP
文档,然后使用它。