我想在Google Cloud Function中使用python脚本发送带有附件的电子邮件这是代码:
def send_mail(text, from_user, to_user, subject):
print ("SENDING EMAIL....")
msg = MIMEMultipart()
msg['From'] = from_user
msg['To'] = ", ".join(to_user)
msg['Subject'] = subject
msg.attach(MIMEText(text, 'plain'))
p = MIMEBase('application', 'octet-stream')
attachment = open(join_path(OUTPUT_FILE_DIR, OUTPUT_FILENAME), "rb")
p.add_header('Content-Disposition', "attachment; filename= %s"
% OUTPUT_FILENAME)
p.set_payload(attachment.read())
encoders.encode_base64(p)
msg.attach(p)
attachment.close()
proc = Popen(['/usr/sbin/sendmail', '-t'], stdin=PIPE)
proc.communicate(msg.as_string())
return
得到了这个错误:FileNotFoundError:[Ernno2]没有这样的文件或目录:"/usr/sbin/sendmail":"/usr/sfin/sendmail'">
这个程序在gcp中合法吗?或者有替代品吗?非常感谢
使用云函数,您不能控制执行运行时,也不能假设二进制文件是否存在(如果存在,它可以随时消失(。它没有服务器!你只部署你的代码
如果你想对环境运行时有更多的控制,你可以使用Cloud Run,这与Cloud Functions非常相似,但你必须定义你的容器并安装你想要的所有依赖项。
但是,它不起作用。端口25在谷歌云上被阻止,你必须使用外部工具(sendgrid、twilio…(发送电子邮件。