gpt4 book ai didi

Perl - 如何从 header 的 FROM 部分获取电子邮件地址?

转载 作者:行者123 更新时间:2023-12-01 22:44:33 25 4
gpt4 key购买 nike

我正在尝试为我本地的乐队时事通讯设置这个脚本。

目前,有人发送一封请求添加的电子邮件,我们手动将其添加到我设置的时事通讯邮件程序中。(这非常感谢我在这里找到的帮助!)

现在的目的是让我下面的脚本登录到我在服务器上为列表设置的电子邮件帐户,获取信息以自动添加电子邮件。

我知道有很多应用程序可以执行此操作,但我想自己学习。

当从下面的 header (发件人)返回电子邮件地址时,我已经有了“添加到列表”功能,但是,有时 header (发件人)是一个名称而不是电子邮件地址(eg "persons name" is returned from persons name<email@address> but, not the <email@address>。)

现在,我对下面的方法并没有一成不变,但它的效果非常好……在某种程度上。

我阅读了有关这些模块的所有文档,但我找不到任何东西可以一直在其中获取该死的电子邮件。

有人可以帮我吗?非常感谢详细的示例,因为我正在努力学习 Perl。

 #!/usr/bin/perl -w
##########
use CGI;
use Net::IMAP::Simple;
use Email::Simple;
use IO::Socket::SSL; #optional i think if no ssl is needed
use strict;
use CGI::Carp qw(fatalsToBrowser warningsToBrowser);
######################################################
# fill in your details here
my $username = '#########';
my $password = '#############';
my $mailhost = '##############';
#######################################################
print CGI::header();
# Connect
my $imap = Net::IMAP::Simple->new($mailhost, port=> 143, use_ssl => 0, ) || die "Unable to connect to IMAP: $Net::IMAP::Simple::errstr\n";
# Log in
if ( !$imap->login( $username, $password ) ) {
print STDERR "Login failed: " . $imap->errstr . "\n";
exit(64);
}
# Look in the INBOX
my $nm = $imap->select('INBOX');
# How many messages are there?
my ($unseen, $recent, $num_messages) = $imap->status();
print "unseen: $unseen, <br />recent: $recent, <br />total: $num_messages<br />\n\n";
## Iterate through unseen messages
for ( my $i = 1 ; $i <= $nm ; $i++ ) {
if ( $imap->seen($i) ) {
my $es = Email::Simple->new( join '', @{ $imap->top($i) } );
printf( "[%03d] %s\n\t%s\n", $i, $es->header('From'), $es->header('Subject'));
print "<br />";
next;
}## in the long version these are pushed into different arrays for experimenting purposes
else {
my $es = Email::Simple->new( join '', @{ $imap->top($i) } );
printf( "[%03d] %s\n\t%s\n", $i, $es->header('From'), $es->header('Subject'));
print "<br />";
}
}
# Disconnect
$imap->quit;
exit;

最佳答案

use Email::Address;
my @addresses = Email::Address->parse('persons name <email@address>');
print $addresses[0]->address;

parse method返回一个数组,所以上面的方法对我有用。

关于Perl - 如何从 header 的 FROM 部分获取电子邮件地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4146263/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com