Я пытаюсь настроить этот скрипт для своего локального информационного бюллетеня.Perl - Как получить адрес электронной почты из части заголовка FROM?
В настоящее время кто-то отправляет электронное письмо с просьбой о добавлении, мы вручную добавляем его в рассылку новостей, которую я установил. (Который отлично работает благодаря помощи, которую я нашел здесь!)
Теперь у меня есть мой скрипт ниже, чтобы войти в учетную запись электронной почты, которую я настроил для списка на нашем сервере, захватить информацию, чтобы автоматически добавить письмо.
Я знаю, что есть множество приложений, которые это делают, но я хочу учиться.
У меня уже есть «добавить в список» работает, когда есть адрес электронной почты вернулся из заголовка (с) ниже, но, иногда заголовок (с) это имя, а не адрес электронной почты (eg "persons name" is returned from persons name<[email protected]> but, not the <[email protected]>
.)
Теперь я не установлен в камне по методу ниже, но он отлично работает ... до определенной степени.
Я прочитал все документы на этих модулях, и я ничего не смог найти, чтобы получить письмо darn в нем все время.
Может кто-нибудь помочь мне здесь? Подробные примеры очень ценятся, так как я борюсь за изучение 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 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;
СПАСИБО !!! my $ line = $ es-> header ('From'); my @addresses = Email :: Address-> parse ($ line); print $ addresses [0] -> address; – DulcimerDude
СПАСИБО - СПАСИБО - СПАСИБО !!! ИДЕАЛЬНО... – DulcimerDude