我的Perl发送邮件程序为何无法显示正文?

执假以为真 2009-04-05 11:19:36
如题,代码如下:

#!/usr/bin/perl -w

use Net::SMTP;
use Net::SMTP_auth;
use MIME::Base64;
$mail_server = 'smtp.163.com';
$mail_from = 'me@163.com';
$mail_to = 'me@gmail.com';
$uname='me';
$passwd='mypasswd';

#开启Debug模式
$smtp = Net::SMTP->new("$mail_server" , Debug => 1);
#普通发送模式
#$smtp = Net::SMTP->new("$mail_server" );
$smtp->auth("$uname", "$passwd");
$smtp->mail("$mail_from");
$smtp->to("$mail_to");
$smtp->data();
$smtp->datasend("From: $mail_from\n");
$smtp->datasend("To: $mail_to\n");
$smtp->datasend("Reply-To: $mail_from\n");
$smtp->datasend("Return-Path: $mail_from\n");
$smtp->datasend("Subject: Your Subject\n");
$smtp->datasend("Content-Type: text/plain; ChartSet=gb2312");
$smtp->datasend("I am a cat!\n"); # 无法显示词句
$smtp->datasend("\n");
$smtp->quit;

...全文
226 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
fibbery 2009-04-05
  • 打赏
  • 举报
回复
参考以下:

sub   sendMail 
{
my ($class,$name,$fromemail,$subjectemail,$contentemail) = @_;
my $mailfrom = "wgeng\@debian2.com "; # your email address
my @mailto = ( "rghua\@debian2.com ", "dcli\@debian2.com "); # the recipient list
my $subject = "Partner system email ";
my $text = "From: $name\nReply-to: $fromemail\nSubject: $subjectemail\nContent: $contentemail\n\n ";

my $smtp = Net::SMTP-> new( '192.168.1.103 ',Hello=> 'partner ',Timeout=> 120,Debug=> 0);

foreach my $mailto (@mailto) {
# Send the From and Recipient for the mail servers that require it
$smtp-> mail($mailfrom);
$smtp-> to($mailto);

# Start the mail
$smtp-> data();

# Send the header
$smtp-> datasend( "To: $mailto\n ");
$smtp-> datasend( "From: $mailfrom\n ");
$smtp-> datasend( "Subject: $subject\n ");
$smtp-> datasend( "\n ");

# Send the message
$smtp-> datasend( "$text\n\n ");

# Send the termination string
$smtp-> dataend();
}
$smtp-> quit;

}


http://topic.csdn.net/u/20070803/09/8DF831FE-DC28-4543-9752-52FC6F7FB86E.html
fibbery 2009-04-05
  • 打赏
  • 举报
回复
似乎,你需要在最后有一个$smtp-> dataend(); 吧!
fibbery 2009-04-05
  • 打赏
  • 举报
回复
http://blog.chinaunix.net/u/11765/showart_193582.html


执假以为真 2009-04-05
  • 打赏
  • 举报
回复
搞定了,请看如下程序:

#!/usr/bin/perl -w

#perl -MCPAN -e shell
#cpan>install Net::SMTP_auth
use Net::SMTP;
use Net::SMTP_auth;
use MIME::Base64;
$mail_server = 'smtp.163.com';
$mail_from = 'me@163.com';
$mail_to = 'me@163.com';
$uname='me';
$passwd='mypasswd';

#开启Debug模式
$smtp = Net::SMTP->new("$mail_server" , Debug => 1);
#普通发送模式
#$smtp = Net::SMTP->new("$mail_server" );
$smtp->auth("$uname", "$passwd");
$smtp->mail("$mail_from");
$smtp->to("$mail_to");
$smtp->data();
$smtp->datasend("To: $mail_from\n");
$smtp->datasend("Cc: 'me@163.com', 'me2@gmail.com'\n"); # 可抄送给多个人
$smtp->datasend("From: $mail_from\n");
$smtp->datasend("Reply-To: $mail_from\n");
$smtp->datasend("Return-Path: $mail_from\n");
$smtp->datasend("Subject: 1 Subject\n");
#$smtp->datasend("Content-Type: text/plain; ChartSet=gb2312");
$smtp->datasend("\n"); # 解决了正文没有显示的问题

# Send your email content
$smtp->datasend("I am a cat!\n");
$smtp->datasend("\n");
$smtp->dataend();
$smtp->quit;

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧