Не буду тянуть, сразу приведу код скрипта.
#!/usr/bin/env pythonВсё это сохраняем в файл с именем, например, «mailto» и даём права на выполнение:
import smtplib, ConfigParser, email.mime.text, getopt, os, sys, locale
name = os.path.basename(sys.argv[0])
optlist, args = getopt.getopt(sys.argv[1:], 's:f:')
if len(args) < 2:
print "Send a message via email"
print "Syntax:", name, "[-f from] [-s subject] email text"
print "email\trecipient's e-mail address"
print "from\tsender's email"
print "subject\tmessage subject"
print "text\tmessage, use '-' for stdin"
sys.exit(0)
configFile = os.path.join(os.environ['HOME'], '.' + name)
config = ConfigParser.RawConfigParser()
try:
config.read(configFile)
fromEmail = config.get('From', 'E-mail')
smtpServer = config.get('SMTP', 'Server')
smtpLogin = config.get('SMTP', 'Login')
smtpPassword = config.get('SMTP', 'Password')
except:
print "Default configuration was written to", configFile
config.add_section('From')
config.set('From', 'E-mail', 'user@example.com')
config.add_section('SMTP')
config.set('SMTP', 'Server', 'smtp.example.com')
config.set('SMTP', 'Login', 'user')
config.set('SMTP', 'Password', '********')
f = file(configFile, 'w')
config.write(f)
f.close()
sys.exit(0)
toEmail = args[0]
subject = ''
for option, value in optlist:
if option == '-s':
subject = value
elif option == '-f':
fromEmail = value
encoding = locale.getpreferredencoding()
if args[1] == '-':
message = email.mime.text.MIMEText(sys.stdin.read(), 'plain', encoding)
else:
message = email.mime.text.MIMEText(' '.join(args[1:]), 'plain', encoding)
message['Subject'] = subject
message['From'] = fromEmail
message['To'] = toEmail
server = smtplib.SMTP(smtpServer)
server.login(smtpLogin, smtpPassword)
server.sendmail(message['From'], message['To'], message.as_string())
server.quit()
chmod +x mailtoПосле первого создаётся файл с настройками подключения. По умолчанию это файл «.mailto» (если скрипт называется «mailto», конечно) в домашнем каталоге. В нём нужно указать адрес отправителя и настройки smtp-сервера.
Параметров у скрипта минимум, только то, что нужно. Есть два опциональных для указания темы сообщения и адреса отправителя (по умолчанию берётся из файла с настройками). Для них используются ключи «-s» и «-f» соответственно (от слов «From» и «Subject»).
Обязательных параметров всего два и они без ключей. Это адрес получателя собственно текст сообщения. Если вместо текста поставить «-», то текст будет браться из стандартного входа, что удобно для отправки результатов вывода какой-то программы.
Использовать программу можно для чего угодно. Например, чтобы отправить список пользователей себе на ящик можно воспользоваться командой:
who | mailto user@example.com -Я, например, использую этот скрипт, чтобы автоматически в определённое время слать себе СМС с напоминанием о чём-либо через гейт «email—SMS» моего мобильного оператора. Получилось удобно.
А обычная команда mail не подойдёт?
ОтветитьУдалить