Я пытаюсь настроить этот скрипт для рассылки моей местной группы.
В настоящее время кто-то отправляет электронное письмо с запросом на добавление, мы вручную добавляем его в почтовую рассылку, которую я настроил.
(Что прекрасно работает благодаря помощи, которую я нашел здесь!)
Намерение теперь состоит в том, чтобы мой скрипт, указанный ниже, входил в учетную запись электронной почты, которую я настроил для списка на нашем сервере, чтобы получить информацию для автоматического добавления электронного письма.
Я знаю, что есть множество приложений, которые делают это, но я хочу научиться сам.
У меня уже работает «добавить в список», когда есть адрес электронной почты, возвращаемый из заголовка (из) ниже НО, иногда заголовок (из) - это имя, а не адрес электронной почты (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 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;