因为mailutils不可用我试着编写一个简单的python脚本来发送如下电子邮件:
echo text | mail -s "some subject" -r jo@do.com
我已成功捕获参数并打印它们,但我不知道如何将这些参数放入电子邮件标题部分。
脚本像这样运行
./m2.py -s "dag mijnheer" -r hanscees@hanscees.con
脚本运行,但是这很失败..在下面的脚本中,电子邮件标题为空,尽管它是以电子邮件形式发送的。
我也尝试过使用smtpObj.sendmail(sender,RECIPIENT,message2)
但这并不奏效。 如何让这些标题填充文本和变量?
#!/usr/bin/python3
import argparse
import smtplib
## get commandline arguments
def commandLineSetup():
commandParser = argparse.ArgumentParser(description="Sends email "
"to email server by smtp")
commandParser.add_argument("-s", "--subject", help="Subject of email")
commandParser.add_argument("-r", "--recipient", help="emailaddress of recipient")
args = commandParser.parse_args()
return args.subject, args.recipient
def main():
SUBJECT, RECIPIENT = commandLineSetup()
# Check that proper inputs were provided
if not SUBJECT or not RECIPIENT:
print ("Insufficient inputs provided")
exit()
sender = "docker79@hanscees.con"
print ("sendto adress is", RECIPIENT)
#built list with text message
message2 = 'FROM: '+sender+'\n'+'TO: '+RECIPIENT+'\n'+'SUBJECT: ',SUBJECT,'\n'
print ("messages2 is", message2)
message = """From: sender
To: RECIPIENT
Subject: SUBJECT
This is a test e-mail message.
"""
try:
smtpObj = smtplib.SMTP('192.168.0.111')
smtpObj.sendmail(sender, RECIPIENT, message)
print ("Successfully-sent-email")
except smtplib.SMTPException:
print ("Error-unable-to-send-email")
if __name__ == "__main__":
main()
答案 0 :(得分:0)
好吧,找到了一个结合几个地方的答案。 这是一个python3脚本,用于发送实际工作正常的电子邮件。 我在网上的任何地方都找不到这个令我惊讶的地方。 欢迎任何改进。因为如果cat / dev / null进入它可能会导致计算机崩溃:(
像这样使用
echo some text | pymail3.py -s "how are you " -r somebody@somewhere.com
建议您必须手动添加邮件服务器并从脚本中的地址添加。它只会向25端口发送电子邮件。
#!/usr/bin/python3
import argparse
import smtplib
from email.message import EmailMessage
from email.headerregistry import Address
from email.utils import make_msgid
## get commandline arguments
def commandLineSetup():
commandParser = argparse.ArgumentParser(description="Sends email piped in "
"to email server by smtp")
commandParser.add_argument("-s", "--subject", help="Subject of email")
commandParser.add_argument("-r", "--recipient", help="emailaddress of recipient")
args = commandParser.parse_args()
return args.subject, args.recipient
def main():
SUBJECT, RECIPIENT = commandLineSetup()
# Check that proper inputs were provided
if not SUBJECT or not RECIPIENT:
print ("Insufficient inputs provided")
exit()
sender="dockerdaemon79@hanscees.con"
msg = EmailMessage()
msg["Subject"] = SUBJECT
msg["From"] = Address("dockershost", addr_spec=sender)
msg["To"] = Address("whomwever", addr_spec=RECIPIENT)
#lets get text from stdin
data = ""
for line in sys.stdin:
data += line
msg.set_content (data)
server = smtplib.SMTP('192.168.0.254', 25)
try:
server.send_message(msg)
server.quit()
except smtplib.SMTPException:
print ("Error-unable-to-send-email")
if __name__ == "__main__":
main()