Я пытаюсь проверить электронную почту с помощью сценария оболочки. Есть ли простой пример для проверки почты? Спросил Google, но только нашел дерьмо и PHP (также дерьмо ..).Подтверждение электронной почты с помощью Bash
Спасибо и приветствую.
Я пытаюсь проверить электронную почту с помощью сценария оболочки. Есть ли простой пример для проверки почты? Спросил Google, но только нашел дерьмо и PHP (также дерьмо ..).Подтверждение электронной почты с помощью Bash
Спасибо и приветствую.
Вы имеете в виду что-то вроде этого?
#!/bin/bash
# check for valid usage
if [ x$1 = 'x' ]
then
echo "Usage: $0 <email address>"
exit 1
fi
# grabbing fields
user=`echo $1 | cut -f1 -d\@`
host=`echo $1 | cut -f2 -d\@`
mxhost=`host -t mx $host | cut -f7 -d\ `
len=`echo $mxhost | wc -c`
len=`expr $len - 2`
mxhost=`echo $mxhost | cut -b1 -$len`
# compose email commands
echo -ne "helo test.com\r\n" > mailcmd
echo -ne "mail from: test\@test.com\r\n" >> mailcmd
echo -ne "rcpt to: $1\r\n" >> mailcmd
echo -ne "quit\r\n" >> mailcmd
# check for mail results
mailresult=`cat mailcmd | nc $mxhost 25| grep ^550 | wc -c`
if [ $mailresult -eq 0 ]
then
echo $1 "is valid"
exit 0
else
echo $1 "is not valid"
exit 1
fi
# clean up
rm mailcmd
Это не замена должным образом SMTP (ожидание после HELO и работа с несколькими ответы и т. д.). Просто потому, что что-то в Интернете где-то не означает, что это полезно. – ShiDoiSi
Кроме того, он написан в стиле, совместимом с оболочкой Bourne и не использует никаких возможностей Bash. –
Нашел этот скрипт и Google. Не идеальное решение. Atm я использую что-то вроде echo $ mail | cut -d '@' .... работает, но не идеально. Спасибо за ваши ответы. – fwaechter
Если вы явно указать Баш на #! линии, вы можете использует регулярные выражения:
#!/bin/bash
if [[ $email =~ '(.+)@(.+)' ]] ; then
user=${BASH_REMATCH[1]}
host=${BASH_REMATCH[2]}
fi
Если вы серьезно относитесь с Баш программирования, прочтите страницы весь путь до конца. Дважды. Также прочитайте Bash FAQ.
Проверка подлинности.
Смысл этого скрипта состоит в том, чтобы убедиться, что все электронные письма действительно или нет, прежде чем отправлять их по электронной почте.
этот скрипт проверяет список писем.
#!/bin/bash
#:
#: e-mail.verify.sh
#:
#: Date: 2011/14/12 13:14 PM IST
#: Author: Louay _at_ [email protected]
#: Discription: Verify (or) Validate the Hotmail Adresses.
#:
#:
#: First we create a Expect script to be sourced for us.
if [ ! $# == 1 ]
then
echo "Invalid Args $0 Filename"
exit 0
fi
#: Verifying the Hotmail adressess.
#: First verify the network Connections
C_R="\e[01;31m" ## Colors
C_B="\e[01;30m"
C_G="\e[01;32m"
C_END="\e[00m"
SMTPSERV=`host -t mx hotmail.com |grep 5 | grep mx2.hotmail.com |cut -d " " -f 7| sed 's/\.$//'`
ping -c2 $SMTPSERV >/dev/null
if [ "$?" -eq 0 ]
then
echo -e "Internet Connection" "\t\t\t\t\t\t$C_G[ OK ]$C_END"
echo -e "$SMTPSERV is AVAILABLE."
echo -n "Verifing"
for ((i=0; i<5; i++))
do
echo -n ".."
sleep 1
done
echo
else
echo -e "Internet Connection:" "\t\t\t\t\t\t$C_R[ FAIL ]$C_END" ""
echo -e "$SMTPSERV is Unavialable."
echo -e "Check your Network settings."
exit 0
fi
COUNT=0
RM_FILE="validemails.txt"
rm -f $RM_FILE
cat $1 | while read LINE; do
{
MAFR="MAIL FROM: <[email protected]>"
MATO="RCPT TO: <$LINE>"
#: ^variablies declared for not get escaped in the next cat command, where
#: we set the $MAFR in the expect script.
cat <<__EOF> e-veri
#!/bin/expect
#:
#: Date: 2011/14/12 01:14 PM
#: Author: Louay Mshelim_at_ [email protected]
#: Discription: Expect Script to Verify/Validate the Hotmail Adresses.
#:
set VMAFR "$MAFR"
set VMATO "$MATO"
spawn nc -C mx4.hotmail.com 25
expect "Sending"
send "HELO mx4.hotmail.com\r"
expect "OK"
send "\$VMAFR\r"
expect "OK"
send "\$VMATO\r"
expect "250"
send "quit\r"
expect eof
__EOF
#: Running the expect script and extracting the Results.txt
expect e-veri > Results.txt
grep 550 Results.txt >/dev/null
if [ "$?" -eq 0 ]
then
echo -e $LINE >> invalid.txt #invalid E-mails
else
echo -e "$LINE" >> validemails.txt
fi
}
done
echo -e "Valid E-mail have been saved to $C_R[ validemails.txt ]$C_END"
#: END
Мое любое предложение для последнего сценария, проверить работу с несколькими серверами, которые принимают чеки без аутентификации, используя Nslookup, кто знает:
Например, код в: http://www.vivaolinux.com.br/script/Simples-Verificador-de-Email-Gmail
см ниже код на сайте.
Надеюсь, что я внес свой вклад, и я надеюсь также сотрудничать.
Спасибо.
Вы можете использовать, как это,
read emailId
if echo "${emailId}" | grep '^[a-zA-Z0-9]*@[a-zA-Z0-9]*\.[a-zA-Z0-9]*$' >/dev/null; then
echo Valid
else
echo Not Valid
fi
Что вы имеете в виду «проверить электронную почту»? – mouviciel
просто хочу проверить некоторые данные с помощью другого скрипта. Наиболее это приходит что-то вроде: «[email protected]» , но иногда просто пришел «пользователь» без ничего @ ... хочу, чтобы отсортировать их – fwaechter
Возможная дубликата [Проверка электронной почты с регулярным выражением bash script] (http://stackoverflow.com/questions/2138701/email-check-regular-expression-with-bash-script) –