我使用以下代码从unix发送电子邮件。
代码
#!/usr/bin/python
import os
def sendMail():
sendmail_location = "/usr/sbin/sendmail" # sendmail location
p = os.popen("%s -t" % sendmail_location, "w")
p.write("From: %s\n" % "myname@company.com")
p.write("To: %s\n" % "yourname@company.com")
p.write("Subject: My Subject \n")
p.write("\n") # blank line separating headers from body
p.write("body of the mail")
status = p.close()
if status != 0:
print "Mail Sent Successfully", status
sendMail()
我不确定如何为此电子邮件添加附件(附件位于其他目录/ my / new / dir /)
答案 0 :(得分:1)
Sendmail是一个非常简单的程序。它知道如何在smtp上发送一串文本。如果你想要附件,你将不得不做的工作是将它们转换成一个文本块并使用(在你的例子中)p.write()将它们添加到消息中。
这很难 - 但你可以使用email
模块(python核心的一部分)为你做很多工作。
更好的是,您可以使用smtplib
(也是核心的一部分)来处理发送邮件。
查看http://docs.python.org/2/library/email-examples.html#email-examples,了解如何使用email
和smtplib
答案 1 :(得分:1)
使用email.mime
软件包创建邮件,而不是尝试手动生成邮件,这样可以省去很多麻烦。
例如,发送带附件的短信可能非常简单:
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
msg = MIMEMultipart()
msg['From'] = 'fromaddress'
msg['To'] = 'toaddres'
msg['Subject'] = 'subject'
msg.attach(MIMEText('your text message'))
with open(filename, 'rb') as f:
attachment = MIMEApplication(f.read(), 'subtype')
attachment['Content-Disposition'] = 'attachment; filename="%s";' % filename
msg.attach(attachment)
message = msg.as_string()
然后您可以将消息写入sendmail,或使用smtplib发送消息。
'subtype'
应替换为附加文档的mime子类型,或者省略以发送默认类型为application/octet-stream
的附件。或者,如果您知道自己的文件是文字,则可以使用MIMEText
代替MIMEApplication
。
答案 2 :(得分:0)
我通常使用以下命令将文件“file_name.dat”作为附件发送:
uuencode file_name.dat file_name.dat | mail -s "Subject line" arnab.bhagabati@gmail.com