[英]Send email from server python
我试图用python从服务器发送电子邮件,我问服务器提供商为此使用哪个端口,他们说“选择SMTP端口465(安全SSL / TLS传出服务器),25(非SSL传出服务器)。 ” 不知道这到底是什么意思,但是目前我正在使用25,这是我的代码
#! /usr/bin/python
import smtplib
import smtplib
server = smtplib.SMTP('smtp.gmail.com', 25)
#Next, log in to the server
server.login("youremailusername", "password")
#Send the mail
msg = "\nHello!" # The /n separates the message from the headers
server.sendmail("you@gmail.com", "target@example.com", msg)
我填写了我的用户名(这是我的电子邮件地址)和密码,这是一个目标,但它不起作用,当我尝试导航到我的py脚本所在的url时,它只是无法加载。 我有Internet连接,因为我爱其他东西,并转到服务器上的其他页面。 我也尝试过执行cron作业,但这也行不通。
脚本的权限为0755,脚本是否有问题?
当我与cron工作一起运行时,这里是回溯
Traceback (most recent call last):
File "/home/spencerf/public_html/cgi-bin/send_email.py", line 6, in <module>
server = smtplib.SMTP('smtp.gmail.com', 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
socket.error: [Errno 101] Network is unreachable
我在这里先向您的帮助表示感谢。
编辑
这是更新的错误日志,端口为587
Traceback (most recent call last):
File "/home/spencerf/public_html/cgi-bin/send_email.py", line 7, in <module>
server = smtplib.SMTP('smtp.gmail.com', 587)
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
socket.error: [Errno 101] Network is unreachable
编辑2
当我有server = smtplib.SMTP('telnet smtp.gmail.com', 587)
我得到这个错误
Traceback (most recent call last):
File "/home/spencerf/public_html/cgi-bin/send_email.py", line 8, in <module>
server = smtplib.SMTP('telnet smtp.gmail.com', 587)
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 553, in create_connection
for res in getaddrinfo(host, port, 0, SOCK_STREAM):
socket.gaierror: [Errno -2] Name or service not known
错误:
首先,您使用的是gmail服务器而不是您的公司服务器发送邮件。对于gmail服务器,输出端口为587
编码:
Due to security issues gmail blocks accessing mail via code or program
但是,如果您执行以下操作,仍然可以使用gmail通过代码发送邮件
我在代码中做了什么:
1,添加了一个错误对象以获取错误信息
import smtplib
try:
server = smtplib.SMTP('smtp.gmail.com', 587)
#Next, log in to the server
server.login("youremailusername", "password")
#Send the mail
msg = "\nHello!" # The /n separates the message from the headers
server.sendmail("you@gmail.com", "target@example.com", msg)
print "Successfully sent email"
except smtplib.SMTPException,error:
print str(error)
print "Error: unable to send email"
如果您运行此代码,您会看到一条错误消息,指出Google不允许您通过代码登录
gmail发生的变化:
1.登录gmail
2.转到此链接https://www.google.com/settings/security/lesssecureapps
3.单击启用,然后重试代码
希望对您有所帮助:)
但是,如果您启用它,则会存在安全威胁
更新
import smtplib
try:
content = 'test'
mail = smtplib.SMTP('smtp.gmail.com',587)
mail.ehlo()
mail.starttls()
mail.login("ABC@gmail.com", "password")
mail.sendmail("ABC@gmail.com", "recivermailaddress", content)
mail.quit
print "Successfully sent email"
except smtplib.SMTPException,error:
print str(error)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.