如何通过“mail”在Linux服务器上使用Python发送邮件?

3

我正在尝试在Linux服务器上使用Python的事件触发器发送邮件。该服务器已经安装了邮件服务,我的代码如下:

import subprocess
subprocess.call(["mail","-s Hello there", "someone@gmail.com < 
this_text_document.txt"])

我感觉自己在这里像一只瞎蝙蝠。一直在加载中,但当我打断它时,会收到这样的提示:"未指定收件人,消息未发送"。请帮忙解决。

2个回答

3

这将有效:

def SendMail(Subject: str, Body: str):
    body_str_encoded_to_byte = Body.encode()
    return_stat = subprocess.run([f"mail", f"-s {Subject}", "Idan@mail.com"], input=body_str_encoded_to_byte)
    print(return_stat) 

-1
你可以使用smtplib来发送电子邮件,但你还需要一个SMTP服务器和MIMEText。
import smtplib
from email.mime.text import MIMEText
from email.header import Header

server = smtplib.SMTP("smtp.server.com", 587)#port

server.ehlo()
server.starttls()
server.login('email@email.com', 'password')
body = 'Hello there'
msg = MIMEText(body,'plain','utf-8')
subject = 'Email test'
msg["Subject"] = Header(subject, 'utf-8')
from = 'email@email.com'
to = 'someone@gmail.com'
msg["From"] = Header(from, 'utf-8')
msg["To"] = Header(to, 'utf-8')
txt = msg.as_string()
server.sendmail(from, to, txt)

对于你的问题,你可以这样做:

import subprocess

subprocess.call('mail -s "Hello there" "someone@gmail.com" < this_text_document.txt"', shell=True)

谢谢!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接