2015-06-24 2 views
0

Я пытаюсь отправить форму электронной почты на своем сервере с помощью python, я спросил у своего поставщика сервера, какой порт использовать для этого, и они сказали: «Выберите SMTP-порты 465 (Secure SSL/TLS исходящий сервер), 25 (Исходящий сервер без SSL). " Не уверен, что это точно значит, но в настоящее время я использую 25, вот мой кодОтправить письмо с сервера python

#! /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("[email protected]", "[email protected]", msg) 

Я заполнил мое имя пользователя (это мой адрес электронной почты справа) и пароль, либо дп цель, но она не работает, когда я пытаюсь перейти к URL-адресу, где мой скрипт py, он просто не загружается. У меня есть подключение к интернету, потому что я люблю другие вещи и перехожу на другие страницы своего сервера. Я также пытался работать с заданиями cron, но это также не работает.

Разрешения для скрипта - 0755, есть ли проблема со сценарием?

Когда я побежал с хрон рабочих мест здесь является TraceBack

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 

Спасибо за помощь заранее.

EDIT

здесь обновляется журнал ошибок с портом на 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 

EDIT 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 

ответ

0

BUG:

Прежде всего вы используете GMAIL сервер не сервер компании для отправки почты .Для GMAIL сервера выходного порта является 587

Код:

Due to security issues gmail blocks accessing mail via code or program

Но все же вы можете использовать gmail для отправки почты по коду if Вы делаете следующие вещи

Что я сделал в коде:

1.Added объект ошибки, чтобы получить сообщение об ошибке

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("[email protected]", "[email protected]", msg) 
    print "Successfully sent email" 
except smtplib.SMTPException,error: 
    print str(error) 
    print "Error: unable to send email" 

Если и побежал этот код у будет видеть сообщение об ошибке, как это о том, что Google не позволяет у войти с помощью кода

вещи изменить в Gmail:

1.Войдите в GMAIL

2.Go по этой ссылке 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("[email protected]", "password") 
    mail.sendmail("[email protected]", "recivermailaddress", content) 
    mail.quit 
    print "Successfully sent email" 
except smtplib.SMTPException,error: 
    print str(error) 
+0

большое спасибо, и для server.login ("", "") это имя пользователя и пароль моей учетной записи gmail, которые будут отправлять электронное письмо? Итак, скажем, моя учетная запись [email protected] будет моим именем? – spenf10

+0

да, это ваша почта и имя пользователя одинаковы – The6thSense

+0

, и я включаю @ gamil.com, чтобы уточнить? – spenf10

0

В Python, пожалуйста, скачать yagmail (отказ от ответственности : Я разработчик):

pip install yagmail 

Тогда просто вопрос:

import yagmail 
yag = yagmail.SMTP("[email protected]", "password") 
yag.send("[email protected]", 'This is the subject', 'Hello!') 

Я предполагаю, что это в основном просто связано с тем, что вы дали неправильный порт (smtp.gmail.com не на 25).

На github вы также можете увидеть общий список errors.

+0

Я получаю недоступную сеть от обоих (мой код и yagmail) –

Смежные вопросы