5

Pythonでメールスクリプトを作成しようとしています。これが私が持っているものです(pythonlibrary.orgから):

#! /usr/bin/env python

import smtplib
import string

SUBJECT = "An email!"
TO = "me@icloud.com"
FROM = "me@gmail.com"
text = "This text is the contents of an email!"
BODY = string.join((
        "From: %s" % FROM,
        "To: %s" % TO,
        "Subject: %s" % SUBJECT ,
        "",
        text
        ), "\r\n")
server = smtplib.SMTP('smtp.gmail.com')
server.login('me@gmail.com', 'mypassword') # Not very secure, I know, but this email is dedicated to this script
server.sendmail(FROM, [TO], BODY)
server.quit()

これはそうですか、それではなぜsmtplib.SMTPException: SMTP AUTH extension not supported by server.smtp.gmail.comがまったく応答しないのですか?これはGmail、または私のスクリプト、または他の何かの問題ですか?

エラーメッセージ:

Traceback (most recent call last):
  File "/Users/student/Desktop/mail.py", line 18, in <module>
    server.login('*******@gmail.com', '**************')
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/smtplib.py", line 552, in login
smtplib.SMTPException: SMTP AUTH extension not supported by server.
4

3 に答える 3

7

デフォルトの25ではなく、送信ポート(587)でGmailメールサーバーに接続する必要があります。

server = smtplib.SMTP('smtp.gmail.com', 587)

また、ログインする前に使用する必要がありserver.starttls()ます(パスワードが平文で送信されないようにするためです)。これは私が持っているスクリプトからのものであり、私のために機能します:

server = smtplib.SMTP()
server.connect("smtp.gmail.com", "submission")
server.starttls()
server.ehlo()
server.login(user, password)
于 2012-08-19T21:35:46.383 に答える
3

PythonでGmailを使用して電子メールを送信する方法は次のとおりです。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from email.header    import Header
from email.mime.text import MIMEText
from getpass         import getpass
from smtplib         import SMTP_SSL

login, password = 'user@gmail.com', getpass('Gmail password:')

# create message
msg = MIMEText('message body…', _charset='utf-8')
msg['Subject'] = Header('subject…', 'utf-8')
msg['From'] = login
msg['To'] = login

# send it via gmail
s = SMTP_SSL('smtp.gmail.com', 465, timeout=10)
s.set_debuglevel(1)
try:
    s.login(login, password)
    s.sendmail(msg['From'], msg['To'], msg.as_string())
finally:
    s.quit()
于 2012-08-19T22:07:52.130 に答える
2

Gmail経由でメールを送信する前に、ehlo()とstarttls()を実行する必要があることがわかりました。

server = smtplib.SMTP('smtp.gmail.com', 587)
server.ehlo()
server.starttls()
server.ehlo()
server.login(SERVER_EMAIL,EMAIL_HOST_PASSWORD)

ログインとの違いはないはずですが、本文にはemail.mime.multipartのMIMEMultipartを次のように使用しています。

msg = MIMEMultipart('alternative')
msg['Subject'] = subject
msg['From'] = mFrom
msg['To'] = mTo
if textBody:
   part1 = MIMEText(textBody, 'plain')
   msg.attach(part1)
if htmlBody:
   part2 = MIMEText(htmlBody, 'html')
   msg.attach(part2)
BODY = msg.as_string()
于 2012-08-19T21:51:03.287 に答える