PERL 的SOCKET问题

liandian 2000-05-02 10:47:00
如何用perl写一个Web发信的脚本,我不知道在PERL中怎么用SOCKET!另外脚本上传免费
主页,服务器要给什么权限!
...全文
169 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
iamxxg 2001-05-18
  • 打赏
  • 举报
回复
上面的老兄回答了你第一个问题,我回答第二个——另外脚本上传免费主页,服务器要给什么权限!

至少有FTP:)还有perl的运行权限
Edelwiss 2001-05-17
  • 打赏
  • 举报
回复
at
pengjf 2000-06-15
  • 打赏
  • 举报
回复
##################################################################
#功能:发送邮件
#使用:将本文件考入相关cgi目录
# require "./sendmail.cgi";
# &sendmail($fromemail,$toemail,$subject,$line);
#作者:007(http://newsoft.163.net)
#邮件:newsoft@163.net
#联系:ICQ:3960865,OICQ:17003
#版权:共享模块
#参数:$use_sockets是否使用socket发送邮件
#$valid = "202.97.228.216"; #请在此输入你的主机的域名或IP(根据 要)
#程序将会以此作为提交CGI的来源主机
#不要加入http://

#$def_smtp_server = "202.97.227.93"; # 邮件发送SMTP 邮件服务器,用于NT服务器没SENDMAIL的情况
#$use_sockets=1; #用于NT服务器没SENDMAIL的情况, 是否使用SOCKET发信。
#$mail_path = "/usr/sbin/sendmail -t"; # 用于UNIX下直接使用SENDMAIL发信,如要使用,上行同时改为0.

##################################################################
sub SendMail {
my $fromemail=$_[0];
my $toemail=$_[1];
my $subject=$_[2];
my $line=$_[3];

if ($use_sockets) {
###################################
# <--BEGIN SMTP SOCKET SECTION -->#
###################################
($x,$x,$x,$x, $here) = gethostbyname($void);
($x,$x,$x,$x, $there) = gethostbyname($def_smtp_server);
$myserver = pack('S n a4 x8',2,0,$here);
$sendserver = pack('S n a4 x8',2,25,$there);
####
#注意, 如果是 Solaris 系统, 请使用下面一行,再把再下一行注释
#(!(socket(S,2,2,6))) && (&error1('连接错误!'));####
(!(socket(S,2,1,6))) && (&error1('连接错误!'));
(!(bind(S,$myserver))) && (&error1('连接错误!'));
(!(connect(S,$sendserver))) && (&error1("!! 连接到 $def_smtp_server 失败!"));

select(S);
$| = 1;
select(STDOUT);

$DATA_IN = <S>;
($DATA_IN !~ /^220/) && (&error1('连接错误 - aborted'));
#>>>>>>
print S "HELO tg\n";
$DATA_IN = <S>;
($DATA_IN !~ /^250/) && (&error1('连接错误 - aborted'));
#<<<<<<<<
print S "MAIL FROM:<$fromemail>\n";
$DATA_IN = <S>;
($DATA_IN !~ /^250/) && (&error1("来源EMAIL地址不合法"));
#<<<<<<<<<<<<<<<
print S "RCPT TO:<$toemail>\n";
$DATA_IN = <S>;
($DATA_IN !~ /^250/) && (&error1('目标EMAIL地址不合法'));
#<<<<<<<<<<<<<<<
print S "DATA\n";
$DATA_IN = <S>;
($DATA_IN !~ /^354/) && (&error1('邮件发送失败 - 再试一遍'));
#<<<<<<<<<<<<<<<

print S <<EOF;
From: $fromemail
Reply-to: $fromemail
To: $toemail
Subject: $subject
$line
.
.
EOF

$DATA_IN = <S>;
($DATA_IN !~ /^250/) && (&error1('邮件发送失败 - 再试一遍'));
print S "QUIT\n";
#<<<<<<<<<<<<<<<
####################################
# <--END SMTP SOCKET SECTION --> #
####################################
}
else
{


####################################
#<--START UNIX SENDMAIL SECTION -->#
####################################

open (MAIL, "|$mail_path") || &error1("打开邮件程序错误: $mail_path. 原因: $!");
print MAIL "To: $toemail\n";
print MAIL "From: $fromemail\n";
print MAIL "Reply-to: $fromemail\n";
print MAIL "Subject: $subject\n";
print MAIL qq|$line|;
print MAIL "\n\n";
close MAIL;

}
}
sub error1 {
&send_html;
print "<html><head><title>错误</title>\n";
print "</head><body>\n";
print "<center><h1>错误</h1><h2>$_[0]</h2>请返回重新输入</center>\n";
print "</body></html>\n";
exit 0;
}
1;

2,204

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 CGI
社区管理员
  • CGI社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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