使用 Perl 问题将电子邮件转发到 Epson 打印机 "Email Print"
Forwarding Email to Epson Printer "Email Print" with Perl Issue
我目前正在使用 Cpanel 设置一个电子邮件转发,它通过 CPanel 电子邮件转发中的一个功能“管道到程序”。在这个 perl 脚本中,我获取 headers 并将它们替换为 Epson 电子邮件打印地址,因为 Epson 打印机不喜欢直接转发。但是,我遇到的问题是一次发送给多个用户会导致错误,而且它不喜欢超过 1 个收件人。
我的代码如下:
#!/usr/bin/perl
use strict;
# Real email address for the printer
my $email = 'example@domain.com';
my $sm;
open($sm, "|/usr/sbin/sendmail -t");
my $in_header = 1;
while (my $line = <STDIN>) {
chomp $line;
# Empty line while in headers means end of headers
if ($in_header && $line eq '') {
$in_header = 0;
}
# Replace To: field if we're in headers
if ($in_header && $line =~ m/^To: /) {
$line = "To: $email";
}
# Pass through to sendmail
print $sm "$line\n";
}
close($sm);
我感觉我的问题的根源来自我代码中的这一行:
# Replace To: field if we're in headers
if ($in_header && $line =~ m/^To: /) {
$line = "To: $email";
}
我不得不承认,我在网上找到了这个代码片段,我完全不熟悉 Perl,以便找到一个可行的解决方案,以便能够毫无问题地转发到多封电子邮件。任何关于我可以从哪里开始的指示,即使完整的解决方案不清楚,也会非常有帮助。
资源:
https://www.cravingtech.com/how-to-setup-epson-email-print-using-your-own-domain-name.html
#!/usr/bin/perl
use strict;
my $email = 'example@domain.com';
my $sm;
open($sm, "|/usr/sbin/sendmail -t");
my $in_header = 1;
my $in_to = 0;
while (my $line = <STDIN>) {
chomp $line;
# Empty line while in headers means end of headers
if ($in_header && $line eq '') {
$in_header = 0;
}
# Email Header
if ($in_header){
if($line =~ m/^To: /) {
$in_to = 1;
$line = "To: $email";
} elsif($in_to) {
if($line =~ /:/){
$in_to = 0;
}else{
next;
}
}
}
print $sm "$line\n";
}
close($sm);
经过数小时的反复试验,这最终成为我的解决方案。
只是在这里发布这个以防有人遇到我的小众问题哈哈。
谢谢。
我目前正在使用 Cpanel 设置一个电子邮件转发,它通过 CPanel 电子邮件转发中的一个功能“管道到程序”。在这个 perl 脚本中,我获取 headers 并将它们替换为 Epson 电子邮件打印地址,因为 Epson 打印机不喜欢直接转发。但是,我遇到的问题是一次发送给多个用户会导致错误,而且它不喜欢超过 1 个收件人。
我的代码如下:
#!/usr/bin/perl
use strict;
# Real email address for the printer
my $email = 'example@domain.com';
my $sm;
open($sm, "|/usr/sbin/sendmail -t");
my $in_header = 1;
while (my $line = <STDIN>) {
chomp $line;
# Empty line while in headers means end of headers
if ($in_header && $line eq '') {
$in_header = 0;
}
# Replace To: field if we're in headers
if ($in_header && $line =~ m/^To: /) {
$line = "To: $email";
}
# Pass through to sendmail
print $sm "$line\n";
}
close($sm);
我感觉我的问题的根源来自我代码中的这一行:
# Replace To: field if we're in headers
if ($in_header && $line =~ m/^To: /) {
$line = "To: $email";
}
我不得不承认,我在网上找到了这个代码片段,我完全不熟悉 Perl,以便找到一个可行的解决方案,以便能够毫无问题地转发到多封电子邮件。任何关于我可以从哪里开始的指示,即使完整的解决方案不清楚,也会非常有帮助。
资源:
https://www.cravingtech.com/how-to-setup-epson-email-print-using-your-own-domain-name.html
#!/usr/bin/perl
use strict;
my $email = 'example@domain.com';
my $sm;
open($sm, "|/usr/sbin/sendmail -t");
my $in_header = 1;
my $in_to = 0;
while (my $line = <STDIN>) {
chomp $line;
# Empty line while in headers means end of headers
if ($in_header && $line eq '') {
$in_header = 0;
}
# Email Header
if ($in_header){
if($line =~ m/^To: /) {
$in_to = 1;
$line = "To: $email";
} elsif($in_to) {
if($line =~ /:/){
$in_to = 0;
}else{
next;
}
}
}
print $sm "$line\n";
}
close($sm);
经过数小时的反复试验,这最终成为我的解决方案。
只是在这里发布这个以防有人遇到我的小众问题哈哈。
谢谢。