从Python脚本发送电子邮件,而不访问传出端口?

从Python脚本发送电子邮件,而不访问传出端口?,python,cron,smtp,bluehost,Python,Cron,Smtp,Bluehost,我被蓝主机打败了。我正在做类似的事情,除了用smtp.gmail.com:587代替IMAP 从终端(本地运行)可以很好地工作,但是。今晚它悄无声息地失败了,所以我尝试通过SSH,我发现了上面的问题-socket.error:[Errno 101]无法访问网络 我有一个共享托管计划,但他们只能打开>=1024个端口 我被卡住了吗,没有办法了?对于Python不发送电子邮件,但发出其他信号发送电子邮件的黑客工作,有什么想法吗 Bluehost可以在cron作业完成时发送电子邮件-通过任何方式从Py

我被蓝主机打败了。我正在做类似的事情,除了用
smtp.gmail.com:587
代替IMAP

从终端(本地运行)可以很好地工作,但是。今晚它悄无声息地失败了,所以我尝试通过SSH,我发现了上面的问题-
socket.error:[Errno 101]无法访问网络

我有一个共享托管计划,但他们只能打开>=1024个端口

我被卡住了吗,没有办法了?对于Python不发送电子邮件,但发出其他信号发送电子邮件的黑客工作,有什么想法吗


Bluehost可以在cron作业完成时发送电子邮件-通过任何方式从Python向其传递变量,以便它可以为我发送邮件?

Bluehost不允许脚本使用标准计划访问80和443以外的其他端口。因为您的脚本试图使用端口587,所以根本无法工作。有关Bluehosts策略的更多详细信息,请查看此处:


建议您使用另一个允许通过另一个端口(即HTTP)发送电子邮件的电子邮件服务。是提供此服务的提供商之一。

您可以使用BlueHost为您提供的smtp服务器:

#!/usr/bin/env python
# email functions
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText
from email.MIMEImage import MIMEImage
import smtplib  
from email.Utils import COMMASPACE, formatdate

lines = ''
lines =  r'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">'
lines += r'<html xmlns="http://www.w3.org/1999/xhtml">'
lines += r'<h1>Hi!'

yourSmtp = 'mail.yourDomain.com'
fromaddr = 'yourEmailName@yourDomain.com'  
password = 'yourPassword'
toaddrs  = ['whoEver@gmail.com']

msg = MIMEMultipart('alternative')
msg['Subject'] = 'Hi'
msg['From'] = fromaddr
msg['Date'] = formatdate(localtime=True)
# Record the MIME types of both parts - text/plain and text/html.
part1 = MIMEText("text", 'plain')
part2 = MIMEText(lines, 'html')

# Attach parts into message container.
# According to RFC 2046, the last part of a multipart message, in this case
# the HTML message, is best and preferred.
msg.attach(part1)
msg.attach(part2)

server = smtplib.SMTP(yourSmtp,26)
server.set_debuglevel(0)
server.ehlo(yourSmtp)
server.starttls()
server.ehlo(yourSmtp)
server.login(fromaddr,password)
for toadd in toaddrs:
   msg['To'] = toadd
   server.sendmail(fromaddr, toadd, msg.as_string())  
server.quit()
#/usr/bin/env python
#电子邮件功能
从email.MIMEMultipart导入MIMEMultipart
从email.MIMEText导入MIMEText
从email.MIMEImage导入MIMEImage
导入smtplib
从email.Utils导入COMMASPACE,formatdate
行=“”
行=r''
行+=r“”
行+=r'Hi!'
yourSmtp='mail.yourDomain.com'
fromaddr=yourEmailName@yourDomain.com'  
password='yourPassword'
toaddrs=['whoEver@gmail.com']
msg=MIMEMultipart('alternative')
msg['Subject']='Hi'
msg['From']=fromaddr
msg['Date']=formattate(localtime=True)
#记录这两部分的MIME类型-text/plain和text/html。
第1部分=MIMEText(“文本”,“普通”)
part2=MIMEText(行“html”)
#将部件附加到消息容器中。
#根据RFC 2046,在本例中,多部分消息的最后一部分
#HTML消息是最好的首选。
附加信息(第1部分)
附加信息(第2部分)
server=smtplib.SMTP(yourstp,26)
服务器。设置调试级别(0)
server.ehlo(您的SMTP)
server.starttls()
server.ehlo(您的SMTP)
server.login(fromaddr,密码)
对于toadd-in-toaddrs:
msg['To']=toadd
sendmail(fromaddr、toadd、msg.as\u string())
server.quit()

我在我的OP中链接了相关的帮助页面,我知道他们不允许这样做,我正在寻求另一种方法。我没有发送邮件截图-Python脚本进行一些计算,然后发送一封包含结果变量的电子邮件。好的,我不确定您是否读到端口被阻止。建议您的Python脚本可以通过其他服务发送电子邮件。我查看了mailgun,但他们的SMTP服务器监听25587和465。所以这也不好。事实上,SMTP的端口不总是相同的吗?当通过mailgun发送邮件时,您可以使用HTTP(端口80/443)或SMTP。在您的情况下,您需要使用HTTP。哦,太棒了,我现在就来研究一下。这实际上是一个关于bluehost提供什么服务的问题,而不是关于Python或其他任何东西。此外,看起来他们在您的机器上运行一个本地
exim
服务器来传输邮件。有没有一个原因是你不能通过本地服务器发送邮件,而需要直接与gmail对话?问题是“由于服务的这个问题,是否有Python/其他的解决方法?”。对不起,我不知道什么是exim服务器。Gmail是发送自的地址。Python不可能让你和一个不允许你通话的端口通话。或任何其他语言。所以你需要找到其他发送电子邮件的方式。无论是使用安装在主机上的邮件服务器,还是使用可以监听1024以上IP的其他第三方主机,或者使用他们提供的一些自定义邮件API,……或者……gmail不提供可以代替SMTP使用的web服务API吗?