1

我正在使用 formmail.pl 来处理我在我的网站上使用的表单。有几个字段被发送到脚本,包括姓名、电子邮件、电话和文本区域中的一些文本。

就目前而言,成功提交会正确打印电话和文本区域数据,但不会打印输入的姓名和电子邮件。在电子邮件中,它在“发件人”标题中发送名称和电子邮件,并且与成功页面一样,仅显示电话和文本区域数据显示在电子邮件正文中。

我想在这两种情况下显示所有数据,但是我似乎找不到处理这个的代码部分。除了超过 3000 行代码之外,我会发布 formmail.pl 脚本,所以我只会发布我认为负责的地方,希望有人能指出我正确的方向。我对 Perl 相当陌生,阅读和理解这种大小的脚本有点压倒性。

sub success_page {
  my ($self, $date) = @_;

  if ($self->{FormConfig}{'redirect'}) {
    print $self->cgi_object->redirect( $self->{FormConfig}{'redirect'} );
  }
  elsif ( $self->{CFG}{'no_content'}) {
    print $self->cgi_object->header(Status => 204);
  }
  else {
    $self->output_cgi_html_header;
    $self->success_page_html_preamble($date);
    $self->success_page_fields;
    $self->success_page_footer;
  }
}

sub success_page_html_preamble {
  my ($self, $date) = @_;

  my $title = $self->escape_html( $self->{FormConfig}{'title'} || 'Success' );
  my $torecipient = 'to ' . $self->escape_html($self->{FormConfig}{'recipient'});
  $torecipient = '' if $self->{Hide_Recipient};
  my $attr = $self->body_attributes;

  print <<END;
    <head>
    <title>$title</title>
  END

  $self->output_style_element;

  print <<END;
    <link type="text/css" href="css/stylesheet.css" rel="stylesheet" /></script>
    </head>

<body>

    <p>Below is what you submitted $torecipient on $date</p>
  END
}

sub success_page_fields {
  my ($self) = @_;

  foreach my $f (@{ $self->{Field_Order} }) {
    my $val = (defined $self->{Form}{$f} ? $self->{Form}{$f} : '');
    $self->success_page_field( $self->escape_html($f), $self->escape_html($val) );
  }
}


sub success_page_field {
  my ($self, $name, $value) = @_;
  print "<p><b>$name:</b> $value</p>\n";
}

好的,这有点长。这些东西主要用于成功页面,与电子邮件方面的关系不大,但也许如果有人能在那里找到我需要的东西,我也可以将它应用到电子邮件部分。

如果需要任何进一步的信息,请告诉我

提前致谢

4

1 回答 1

2

我自己并没有真正使用过NMS FormMail,但是查看源代码,似乎您应该可以通过设置以下额外配置选项来实现您想要的东西:

$more_config{include_config_email} = 1;
$more_config{include_config_realname} = 1;

这应该会导致 FormMail.pl 将emailrealname字段视为普通表单字段,除了它们的特殊含义。

于 2013-03-02T16:31:50.697 回答