在GoDaddy共享主机上使用Python脚本发送邮件

0 投票
2 回答
2391 浏览
提问于 2025-04-28 16:41

我正在尝试通过一个联系表单在我的Godaddy共享主机账户上发送电子邮件(我知道这听起来有点复杂!)。为了让它能正常工作,我把事情简化了一下。我有SSH访问权限。这个脚本放在我的cgi-bin文件夹里。发件人的电子邮件地址是一个Godaddy的域名邮箱(显然这是必须的)。我在我的测试家庭服务器上已经成功使用了gmail的smtp服务器。

#! /usr/bin/python
import smtplib
import string, sys
import cgitb
cgitb.enable()
sys.stderr = sys.stdout

print 'Content-Type: text/plain'
print
HOST = "relay-hosting.secureserver.net"

FROM = "myemail@mygodaddydomain.co.uk"

TO = "mygmail@gmail.com"

SUBJECT = "Test"

BODY = "Hello"

body = string.join((
        "From: %s" % FROM,
        "To: %s" % TO,
        "Subject: %s" % SUBJECT,
        "",
        BODY), "\r\n")

print body
server = smtplib.SMTP(HOST, 25)
server.sendmail(FROM, [TO], body)

但是我遇到了以下错误:

Traceback (most recent call last):
  File "test2.py", line 28, in <module>
    server = smtplib.SMTP(HOST, 25)
  File "/usr/lib64/python2.6/smtplib.py", line 239, in __init__
    (code, msg) = self.connect(host, port)
  File "/usr/lib64/python2.6/smtplib.py", line 295, in connect
    self.sock = self._get_socket(host, port, self.timeout)
  File "/usr/lib64/python2.6/smtplib.py", line 273, in _get_socket
    return socket.create_connection((port, host), timeout)
  File "/usr/lib64/python2.6/socket.py", line 567, in create_connection
    raise error, msg
error: [Errno 110] Connection timed out

有人告诉我Godaddy的smtp服务器设置是正确的,我也尝试过一些组合,参考了Stackoverflow上其他类似的问题。

暂无标签

2 个回答

-1

你可以用Python脚本和SendGrid的API来发送邮件。只需要写一个脚本,让它连接到你的数据库,然后执行你想要的发送功能。接着,把这个Python脚本放到Heroku上,并使用Heroku的调度工具来定时运行这个脚本。

想了解如何运行和托管这些脚本,可以查看这个链接

0

现在可以正常工作了。根据我的了解,解决办法是要在Godaddy的我的账户里设置邮箱,而不是在cpanel里。同时,还要确保MX记录是正确的,并对smtp模块的代码做一些修改。

#!/usr/bin/python
import smtplib
import string, sys
import cgitb
cgitb.enable()
sys.stderr = sys.stdout

print 'Content-Type: text/plain'
print

FROM = "email@mygodaddydomain.com"

TO = "myemail@gmail.com"

SUBJECT = "Test"

BODY = "Hello"

body = string.join((
        "From: %s" % FROM,
        "To: %s" % TO,
        "Subject: %s" % SUBJECT,
        "",
        BODY), "\r\n")

print body
server = smtplib.SMTP()
server.connect()
server.sendmail(FROM, TO, body)

撰写回答