Лучший способ отправить письмо с Python на Mac или Linux? - PullRequest
8 голосов
/ 30 ноября 2011

Я хочу отправлять электронные письма с моим скриптом на Python, но, к сожалению, он не такой простой и гладкий, как php, где я могу просто использовать функцию mail ().

    import smtplib
    FROM = "sender@example.com"
    TO = ["me@gmail.com"]

    SUBJECT = "Hello!"

    TEXT = "This message was sent with Python's smtplib."
    server = smtplib.SMTP(SERVER)
    server.sendmail(FROM, TO, message)
    server.quit()

но он возвращает только кучу ошибок, я даже не знаю, что означает ...

Traceback (most recent call last):
  File "mylo.py", line 70, in <module>
    sys.exit(main())
  File "mylo.py", line 66, in main
    send_mail()
  File "mylo.py", line 37, in send_mail
    server = smtplib.SMTP(SERVER)
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/smtplib.py", line 239, in __init__
    (code, msg) = self.connect(host, port)
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/smtplib.py", line 295, in connect
    self.sock = self._get_socket(host, port, self.timeout)
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/smtplib.py", line 273, in _get_socket
    return socket.create_connection((port, host), timeout)
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/socket.py", line 512, in create_connection
    raise error, msg
socket.error: [Errno 61] Connection refused

Как мне отправлять письма с python?

Ответы [ 3 ]

16 голосов
/ 30 ноября 2011

Я переписал логику рассылки:

#!/usr/bin/python -tt

from email.mime.text import MIMEText
from datetime import date
import smtplib

SMTP_SERVER = "smtp.gmail.com"
SMTP_PORT = 587
SMTP_USERNAME = "email@gmail.com"
SMTP_PASSWORD = "yourpassword"

EMAIL_TO = ["recepient1@gmail.com", "recepient2@gmail.com"]
EMAIL_FROM = "email@gmail.com"
EMAIL_SUBJECT = "Demo Email : "

DATE_FORMAT = "%d/%m/%Y"
EMAIL_SPACE = ", "

DATA='This is the content of the email.'

def send_email():
    msg = MIMEText(DATA)
    msg['Subject'] = EMAIL_SUBJECT + " %s" % (date.today().strftime(DATE_FORMAT))
    msg['To'] = EMAIL_SPACE.join(EMAIL_TO)
    msg['From'] = EMAIL_FROM
    mail = smtplib.SMTP(SMTP_SERVER, SMTP_PORT)
    mail.starttls()
    mail.login(SMTP_USERNAME, SMTP_PASSWORD)
    mail.sendmail(EMAIL_FROM, EMAIL_TO, msg.as_string())
    mail.quit()

if __name__=='__main__':
    send_email()

Это очень настраиваемый скрипт.

1 голос
/ 02 декабря 2011

Я предлагаю вам нанять mailtools 2 http://pypi.python.org/pypi/mailtools/2

Может отправлять обычный текст и электронную почту в формате HTML. Очень прост в использовании.

0 голосов
/ 20 февраля 2015

Я предлагаю вам использовать API SendGrid. С API SendGrid все, что вам нужно, это простая учетная запись, и этот код будет отправлять электронное письмо:

import sendgrid

sg = sendgrid.SendGridClient('Username','Password')
message = sendgrid.Mail()

message.add_to("Email Address of Reciever")
message.set_from("Email Address of Sender")
message.set_subject("Email Subject")
message.set_html("Email html")

sg.send(message)

Для полной документации проверьте https://sendgrid.com/docs/Integrate/Code_Examples/python.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...