The following contents are in a file.i use a shell script to call a python script.This python script send the mail.But in the mail contents i see the output as shown below.Its all in oneline..What am i doing wrong
/usr/bin/python $DIR/sm.py "$message" "`cat /tmp/alert.txt`"
Input:The following are the contents of alert.txt
Thu Jun 28 14:29:26 IST 2012
Disk usage limit exceeded -Current disk usage is 167G-Configured disk usage is 200HTTPD connections exceeded configured usage limit -Current HTTPD connections is 21-Configured HTTPD connection is 20
========================OTHER INFO==================
Total fds: 8
Socket fds: 0
Other fds: 8
Free memory :Free Memory:183732
Buffered memory Buffered Memory:78224
Cache memory : Cache Memory:579040
Disk usage is 167G
DB connections 1
Network connections 21
CPU Usage: 0.0
Output:
Thu Jun 28 14:29:26 IST 2012 Disk usage limit exceeded -Current disk usage is 167G-Configured disk usage is 200HTTPD connections exceeded configured usage limit -Current HTTPD connections is 21-Configured HTTPD connection is 20 ========================OTHER INFO================== Total fds: 8 Socket fds: 0 Other fds: 8 Free memory :Free Memory:183732 Buffered memory Buffered Memory:78224 Cache memory : Cache Memory:579040 Disk usage is 167G DB connections 1 Network connections 21 CPU Usage: 0.0
This is sm.py
import logging
import smtplib
import sys
from email.MIMEText import MIMEText
from email.MIMEMultipart import MIMEMultipart
try:
smaid = qs[0].id
gmailUser = 'no-reply@xxxxxxxxxxx.com'
gmailPassword = '12345'
mailServer = smtplib.SMTP('smtp.gmail.com', 587)
mailServer.ehlo()
mailServer.starttls()
mailServer.ehlo()
mailServer.login(gmailUser, gmailPassword)
to_addr = "xxxxx@xx.com"
subject = sys.argv[1]
body = sys.argv[2]
try:
msg = MIMEMultipart()
msg['From'] = gmailUser
msg['To'] = to_addr
msg["Content-type"] = "text/html"
sub = subject
msg['Subject'] = sub
body = body
msg.attach(MIMEText(body, 'html'))
mailServer.sendmail(gmailUser, to_addr, msg.as_string())
except:
write_exception("send exception")
mailServer.close()
except:
write_exception("send exception1")
If you insist on sending HTML, you need HTML line breaks:
But probably you need neither Multipart nor HTML, so you can just use
smtplib.SMTP.sendmail:Also, you should not supply the file contents via the command line, because the command line is length-restricted. Instead you should supply the file via STDIN, like in
python ... < /tmp/alert.txtand read it via